客服热线:18391752892

Farhadcrab1(使用了大量的指标,它们中的一些 MA,Stochastic,Macd,RSI

   日期:2019-01-11     浏览:784    
马上注册,结交更多好友,下载更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 国外网站找的
//+-------------------------------------------------------------------------------------+
//|   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);
       }
     }
   }
 }
//+------------------------------------------------------------------+

外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!


特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行情
推荐行情
点击排行