← Назад к списку файлов

aouto adjusting ea.mq4

Поиск по коду файла

#property version   "1.00"
#property strict
extern int PADAMOUNT=3;//pips Beyond candle to stop
extern double RISKPRESENT=0.1;//Risk Present 
extern double REWARD_RATIO=2;//Rward_Ratio
extern int CANDELSBACK=3;//How much candles for min\max
extern double       Mom_Sell=0.3;           //Momentum_Sell 
extern double       Mom_Buy=0.3;            //Momentum_Buy 
extern int MAGICNUMBER=1234;

double pips;
double bsl;
double ssl;
double btp;
double stp;
int buyticket;
int selticket;
int BUYSTOPCANDLE;
int SELSTOPCANDLE;
int orderentry;
double Riskedamount;
double Rewadamount;
double LOTSIZE;

int OnInit()
  {
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
  {

  }

void OnTick()

  {
      // код доступен только после оплаты
   }

int openorderthispair(string pair)// 
  {
   int total=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))Print("eror");
      if(OrderSymbol()==pair) total++;// 
     }
   return(total);
  }

bool isnewcandle()
  {
   static int  barsonchart=0;
   if(Bars==barsonchart)
      return(false);
   barsonchart=Bars;
   return(true);
  }

void checkformatrade()
  {

   if(isnewcandle())
     {

      double   MomLevel=MathAbs(100-iMomentum(NULL,0,14,PRICE_CLOSE,1));
      double   MomLevel1=MathAbs(100 - iMomentum(NULL,0,14,PRICE_CLOSE,2));
      double   MomLevel2=MathAbs(100 - iMomentum(NULL,0,14,PRICE_CLOSE,3));

      double    MA6=iMA(Symbol(),0,6,0,MODE_EMA,PRICE_MEDIAN,2);
      double    MA14= iMA(Symbol(),0,14,0,MODE_EMA,PRICE_MEDIAN,1);
      double    MA26= iMA(Symbol(),0,26,0,MODE_EMA,PRICE_MEDIAN,2);

      if(MA6<MA14 && MA14<MA26)
         if(Low[1]<=MA14)
            if(MomLevel>Mom_Buy || MomLevel1>Mom_Buy || MomLevel2>Mom_Buy)
               trade(0);

      if(MA6>MA14 && MA14>MA26)
         if(High[1]>=MA14)
            if(MomLevel>Mom_Sell || MomLevel1>Mom_Sell || MomLevel2>Mom_Sell)
               trade(1);
     }
  }

void  trade(int type)
  {
   int total=OrdersTotal();
   LOTSIZE=0;
   double Equity=AccountEquity();
   Riskedamount=Equity*RISKPRESENT*0.01;
   BUYSTOPCANDLE=iLowest(NULL,0,1,CANDELSBACK,1);
   SELSTOPCANDLE=iHighest(NULL,0,2,CANDELSBACK,1);
   double BUY_STOP_PRICE=Low[BUYSTOPCANDLE]-PADAMOUNT*pips;
   double PIPS_TO_BSL=Ask-BUY_STOP_PRICE;
   double BUY_TAKEPROFIT_PRICE=Ask+PIPS_TO_BSL*REWARD_RATIO;
   double SELL_STOP_PRICE=High[SELSTOPCANDLE]+PADAMOUNT*pips;
   double PIPS_TO_SSL=SELL_STOP_PRICE-Bid;
   double SELL_TAKEPROFIT_PRICE=Bid-PIPS_TO_SSL*REWARD_RATIO;

   if(type==0)
     {
        if(AccountFreeMargin()<(1000*LOTSIZE))
     {
      Print("We have no money. Free Margin = ",AccountFreeMargin());
      return;
     }
      LOTSIZE=(Riskedamount/(PIPS_TO_BSL/pips))/10;
      if( CheckMoneyForTrade(Symbol(), LotsOptimized(LOTSIZE),OP_BUY))
      if(openorderthispair(Symbol())==0)buyticket=OrderSend(Symbol(),OP_BUY,LotsOptimized(LOTSIZE),ND(Ask),3,0,0,NULL,MAGICNUMBER,0,Green);
     }

   if(type==1)
     {
        if(AccountFreeMargin()<(1000*LOTSIZE))
     {
      Print("We have no money. Free Margin = ",AccountFreeMargin());
      return;
     }
      LOTSIZE=(Riskedamount/(PIPS_TO_SSL/pips))/10;
      if( CheckMoneyForTrade(Symbol(), LotsOptimized(LOTSIZE),OP_SELL))
      if(openorderthispair(Symbol())==0) selticket=OrderSend(Symbol(),OP_SELL,LotsOptimized(LOTSIZE),ND(Bid),3,0,0,NULL,MAGICNUMBER,0,Red);
     }

   for(int cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {

         if(OrderType()==OP_BUY)
           {
            bsl=BUY_STOP_PRICE;
            btp=BUY_TAKEPROFIT_PRICE;
            LOTSIZE=(Riskedamount/(PIPS_TO_BSL/pips))/10;
            RefreshRates();
            double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
            if(bsl<StopLevel*pips) bsl=StopLevel*pips;
            if(btp<StopLevel*pips) btp=StopLevel*pips;
            string symbol=OrderSymbol();
            double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
            if(MathAbs(OrderStopLoss()-bsl)>point)
               if((pips*PIPS_TO_BSL)>(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL)*pips)

                  if(CheckStopLoss_Takeprofit(OP_BUY,bsl,btp))
                     if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),bsl,btp))
                        if(buyticket>0)if(!OrderModify(OrderTicket(),OrderOpenPrice(),NDTP(bsl),NDTP(btp),0,CLR_NONE))Print("eror");
            return;
           }
         else // go to short position
           {

            ssl=SELL_STOP_PRICE;
            stp=SELL_TAKEPROFIT_PRICE;
            LOTSIZE=(Riskedamount/(PIPS_TO_SSL/pips))/10;
            RefreshRates();
            double StopLevel=MarketInf

Показано первые 50% кода (символов: 7939)

Как получить полную версию?

Введите ваш email и нажмите кнопку, чтобы перейти к оплате.