Farhadcrab1(使用了大量的指标,它们中的一些 MA,Stochastic,Macd,RSI
国外网站找的 //+-------------------------------------------------------------------------------------+ //| FarhadCrab1.mq4 | //| Copyright ?2006, Farhad Farshad | //| http://www.fxperz.com | //| http://farhadfarshad.com | //| This EA is optimized to work on | //| GBP/JPY & GBP/USD & EUR/USD M1 Timeframe ... if you want the optimized | //| EA s for any currency pair please | //| mail me at: info@farhadfarshad.com | //| This is the first version of this EA. If | //| you want the second edition ('FarhadCrab2.mq4') | //| with considerably better performance mail me. 'FarhadMagic.mq4' and | //| 'Farhad2.mq4' are also available from this series. | //| (They are not free and they don't have trial version!) | //| Enjoy a better automatic investment:) with at least 100% a month. | //| If you get money from this EA please donate some to poor people of your country.| //+-------------------------------------------------------------------------------------+ #property copyright "Copyright ?2006, Farhad Farshad" #property link "http://www.fxperz.com" //---- #include <stdlib.mqh> //---- extern double lTakeProfit =10; // recomended no more than 20 extern double sTakeProfit =10; // recomended no more than 20 extern double takeProfit =10; // recomended no more than 20 extern double stopLoss =40; // do not use s/l at all. Take it easy man. I'll guarantee your profit :) extern int magicEA =114; // Magic EA identifier. Allows for several co-existing EA with different input values extern double lTrailingStop =8; // trail stop in points extern double sTrailingStop =8; // trail stop in points extern color clOpenBuy =Blue; //Different colors for different positions extern color clCloseBuy =Aqua; //Different colors for different positions extern color clOpenSell =Red; //Different colors for different positions extern color clCloseSell =Violet; //Different colors for different positions extern color clModiBuy =Blue; //Different colors for different positions extern color clModiSell =Red; //Different colors for different positions extern int Slippage =2; extern double Lots =0.05;// you can change the lot but be aware of margin. Its better to trade with 1/4 of your capital. extern string nameEA ="FarhadCrab1.mq4";// To "easy read" which EA place an specific order and remember me forever :) extern double vVolume; //---- double macdHistCurrent, macdHistPrevious, macdSignalCurrent, macdSignalPrevious, highCurrent, lowCurrent; double stochHistCurrent, stochHistPrevious, stochSignalCurrent, stochSignalPrevious; double sarCurrent, sarPrevious, momCurrent, momPrevious; double maLongCurrent, maShortCurrent, maLongPrevious, maShortPrevious, faRSICurrent; double realTP, realSL, faMiddle, faHighest, faLowest, closeCurrent, closeCurrentD, closePreviousD; int cnt, ticket; bool isBuying=false, isSelling=false, isBuyClosing=false, isSellClosing=false; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void deinit() { Comment(""); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { // *****This line is for some reason very important. you'd better settle all your account at the end of day.***** //System Stoploss based on LongTerm Moving Average (Fibo 55 day MA) //StopLoss For Buy Positions (Optional) if ((maLongCurrent>closeCurrentD) && (maLongPrevious<closePreviousD)) { CloseBuyPositions(); return(0); } //StopLoss For Sell Positions (Optional) if ((maLongCurrent<closeCurrentD) && (maLongPrevious>closePreviousD)) { CloseSellPositions(); return(0); } // Check for invalid bars and takeprofit if(Bars < 200) { Print("Not enough bars for this strategy - ", nameEA); return(0); } calculateIndicators(); // Calculate indicators' value //Check for TakeProfit Conditions if(lTakeProfit<10) { Print("TakeProfit less than 10 on this EA with Magic -", magicEA ); return(0); } if(sTakeProfit<10) { Print("TakeProfit less than 10 on this EA with Magic -", magicEA); return(0); } //Introducing new expressions double faClose0 =iLow(NULL,0,0); double faMA1 =iMA(NULL,0,9,0,MODE_EMA,PRICE_TYPICAL,0); //double faMA2 = iMAonArray(faMA1,0,9,0,MODE_EMA,0); //double faMA4 = iMAonArray(faMA2,0,9,0,MODE_EMA,0); double faClose2 =iHigh(NULL,0,0); double faMA3 =iMA(NULL,0,9,0,MODE_SMA,PRICE_OPEN,0); double stochHistCurrent =iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0); double sarCurrent =iSAR(NULL,0,0.002,0.2,0); // Parabolic Sar Current double sarPrevious =iSAR(NULL,0,0.002,0.2,1); //Parabolic Sar Previous double vVolume =iVolume(NULL,0,0); // Current Volume //double faMAvVolume = iMAonArray(vVolume,0,9,0,MODE_SMA,0); //Simple Moving Average double faHighest =Highest(NULL,PERIOD_H4,MODE_HIGH,30,0); // Highest High in an interval of time double faLowest =Lowest(NULL,PERIOD_H4,MODE_LOW,30,0); //Lowest Low in an interval of time double faMiddle =(faHighest+faLowest)/2; //... //Check Margin Requirement if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } //Buy Condition if (!takeBuyPositions()) { //if ((faClose0>faMA1 && faBandWidth<faMABandWidth)){ if ((faClose0>faMA1)) { OpenBuy(); //if (OrdersTotal()==1 && (faClose2<faMA3)) {OpenSell();} //if (OrdersTotal()==2 && (faClose2<faMA3)) {OpenSell();} //if (OrdersTotal()==3 && (faClose2<faMA3)) {OpenSell();} return(0); } } //Sell Condition //if ((faClose2<faMA3 && faBandWidth<faMABandWidth)){ if (!takeSellPositions()) { if ((faClose2<faMA3)) { OpenSell(); //if (OrdersTotal()==1 && (faClose0>faMA1)) {OpenBuy();} //if (OrdersTotal()==2 && (faClose0>faMA1)) {OpenBuy();} //if (OrdersTotal()==3 && (faClose0>faMA1)) {OpenBuy();} return(0); } //Close Buy Condition } //Trailing expressions TrailingPositionsBuy(lTrailingStop); TrailingPositionsSell(sTrailingStop); return(0); } //Number of Buy Positions //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool takeBuyPositions() { int j ; if ((OrdersTotal()==0)) {j=0;} if (maLongCurrent<closeCurrent) { if ((CurTime()-OrderOpenTime()>300) && (sarCurrent<lowCurrent)) {j=1;} if ((CurTime()-OrderOpenTime()>600) && (sarCurrent<lowCurrent)) {j=2;} if ((CurTime()-OrderOpenTime()>900) && (sarCurrent<lowCurrent)) {j=3;} if ((CurTime()-OrderOpenTime()>1200) && (sarCurrent<lowCurrent)) {j=4;} if ((CurTime()-OrderOpenTime()>1500) && (sarCurrent<lowCurrent)) {j=5;} if ((CurTime()-OrderOpenTime()>1800) && (sarCurrent<lowCurrent)) {j=6;} if ((CurTime()-OrderOpenTime()>2100) && (sarCurrent<lowCurrent)) {j=7;} if ((CurTime()-OrderOpenTime()>2400) && (sarCurrent<lowCurrent)) {j=8;} if ((CurTime()-OrderOpenTime()>2700) && (sarCurrent<lowCurrent)) {j=9;} if ((CurTime()-OrderOpenTime()>3000) && (sarCurrent<lowCurrent)) {j=10;} if ((CurTime()-OrderOpenTime()>3300) && (sarCurrent<lowCurrent)) {j=11;} if ((CurTime()-OrderOpenTime()>3600) && (sarCurrent<lowCurrent)) {j=12;} if ((CurTime()-OrderOpenTime()>3900) && (sarCurrent<lowCurrent)) {j=13;} if ((CurTime()-OrderOpenTime()>4200) && (sarCurrent<lowCurrent)) {j=14;} if ((CurTime()-OrderOpenTime()>4500) && (sarCurrent<lowCurrent)) {j=15;} if ((CurTime()-OrderOpenTime()>4800) && (sarCurrent<lowCurrent)) {j=16;} if ((CurTime()-OrderOpenTime()>5100) && (sarCurrent<lowCurrent)) {j=17;} if ((CurTime()-OrderOpenTime()>5400) && (sarCurrent<lowCurrent)) {j=18;} if ((CurTime()-OrderOpenTime()>5700) && (sarCurrent<lowCurrent)) {j=19;} for(int i=j; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==magicEA) { return(True); } } } } return(false); } //Number of Sell Positions //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool takeSellPositions() { int j ; if ((OrdersTotal()==0)) {j=0;} if (maLongCurrent>closeCurrent) { if ((CurTime()-OrderOpenTime()>300) && (sarCurrent>highCurrent)) {j=1;} if ((CurTime()-OrderOpenTime()>600) && (sarCurrent>highCurrent)) {j=2;} if ((CurTime()-OrderOpenTime()>900) && (sarCurrent>highCurrent)) {j=3;} if ((CurTime()-OrderOpenTime()>1200) && (sarCurrent>highCurrent)) {j=4;} if ((CurTime()-OrderOpenTime()>1500) && (sarCurrent>highCurrent)) {j=5;} if ((CurTime()-OrderOpenTime()>1800) && (sarCurrent>highCurrent)) {j=6;} if ((CurTime()-OrderOpenTime()>2100) && (sarCurrent>highCurrent)) {j=7;} if ((CurTime()-OrderOpenTime()>2400) && (sarCurrent>highCurrent)) {j=8;} if ((CurTime()-OrderOpenTime()>2700) && (sarCurrent>highCurrent)) {j=9;} if ((CurTime()-OrderOpenTime()>3000) && (sarCurrent>highCurrent)) {j=10;} if ((CurTime()-OrderOpenTime()>3300) && (sarCurrent>highCurrent)) {j=11;} if ((CurTime()-OrderOpenTime()>3600) && (sarCurrent>highCurrent)) {j=12;} if ((CurTime()-OrderOpenTime()>3900) && (sarCurrent>highCurrent)) {j=13;} if ((CurTime()-OrderOpenTime()>4200) && (sarCurrent>highCurrent)) {j=14;} if ((CurTime()-OrderOpenTime()>4500) && (sarCurrent>highCurrent)) {j=15;} if ((CurTime()-OrderOpenTime()>4800) && (sarCurrent>highCurrent)) {j=16;} if ((CurTime()-OrderOpenTime()>5100) && (sarCurrent>highCurrent)) {j=17;} if ((CurTime()-OrderOpenTime()>5400) && (sarCurrent>highCurrent)) {j=18;} if ((CurTime()-OrderOpenTime()>5700) && (sarCurrent>highCurrent)) {j=19;} for(int i=j; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==magicEA) { return(True); } } } } return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void TrailingPositionsBuy(int trailingStop) { for(int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==magicEA) { if (OrderType()==OP_BUY) { if (Bid-OrderOpenPrice()>trailingStop*Point) { if (OrderStopLoss()<Bid-trailingStop*Point) ModifyStopLoss(Bid-trailingStop*Point); } } } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void TrailingPositionsSell(int trailingStop) { for(int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==magicEA) { if (OrderType()==OP_SELL) { if (OrderOpenPrice()-Ask>trailingStop*Point) { if (OrderStopLoss()>Ask+trailingStop*Point || OrderStopLoss()==0) ModifyStopLoss(Ask+trailingStop*Point); } } } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ModifyStopLoss(double ldStopLoss) { bool fm; fm=OrderModify(OrderTicket(),OrderOpenPrice (),ldStopLoss,OrderTakeProfit(),0,CLR_NONE); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OpenBuy() { double ldLot, ldStop, ldTake; string lsComm; ldLot=GetSizeLot(); ldStop=0; ldTake=GetTakeProfitBuy(); lsComm=GetCommentForOrder(); OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,ldStop,ldTake,nameEA,magicEA,0,clOpenBuy); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OpenSell() { double ldLot, ldStop, ldTake; string lsComm; //---- ldLot=GetSizeLot(); ldStop=0; ldTake=GetTakeProfitSell(); lsComm=GetCommentForOrder(); OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,ldStop,ldTake,nameEA,magicEA,0,clOpenSell); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string GetCommentForOrder() { return(nameEA); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double GetSizeLot() { return(Lots); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void calculateIndicators() { // Calculate indicators' value macdHistCurrent =iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_MAIN,0); macdHistPrevious =iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_MAIN,1); macdSignalCurrent =iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_SIGNAL,0); macdSignalPrevious =iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_SIGNAL,1); stochHistCurrent =iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0); stochHistPrevious =iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1); stochSignalCurrent =iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0); stochSignalPrevious=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1); sarCurrent =iSAR(NULL,0,0.009,0.2,0); // Parabolic Sar Current sarPrevious =iSAR(NULL,0,0.009,0.2,1); //Parabolic Sar Previous momCurrent =iMomentum(NULL,0,14,PRICE_OPEN,0); // Momentum Current momPrevious =iMomentum(NULL,0,14,PRICE_OPEN,1); // Momentum Previous highCurrent =iHigh(NULL,0,0); //High price Current lowCurrent =iLow(NULL,0,0); //Low Price Current closeCurrent =iClose(NULL,PERIOD_H4,0); //Close Price Current for H4 Timeframe closeCurrentD =iClose(NULL,PERIOD_D1,0); //Close Price Current for D1 Timeframe closePreviousD =iClose(NULL,PERIOD_D1,1); //Close Price Previous for D1 Timeframe maLongCurrent =iMA(NULL,PERIOD_D1,55,1,MODE_SMMA,PRICE_TYPICAL,0); //Current Long Term Moving Average maLongPrevious =iMA(NULL,PERIOD_D1,55,1,MODE_SMMA,PRICE_TYPICAL,1); //Previous Long Term Moving Average maShortCurrent =iMA(NULL,0,2,1,MODE_SMMA,PRICE_TYPICAL,0); //Current Short Term Moving Average maShortPrevious =iMA(NULL,0,2,1,MODE_SMMA,PRICE_TYPICAL,1); //Previous Long Term Moving Average faRSICurrent =iRSI(NULL,0,14,PRICE_TYPICAL,0); //Current RSI // Check for BUY, SELL, and CLOSE signal isBuying =false; isSelling=false; isBuyClosing=false; isSellClosing=false; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseBuyPositions() { for(int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==magicEA) { if (OrderType()==OP_BUY) OrderClose(OrderTicket(),Lots,Bid,Slippage); } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseSellPositions() { for(int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==magicEA) { if (OrderType()==OP_SELL) OrderClose(OrderTicket(),Lots,Ask,Slippage); } } } } //+------------------------------------------------------------------+ |
打赏
最新创建圈子
- 新闻EA运行效果图圈 2019-05-05
圈主:admin 帖子:1