помогите с кодом советника по индикатору - страница 2

 
Artur Yusupov:

блин)))пока это выше моих пониманий, попытаюсь разобраться

я тут по самым простым методам пробую, взгляните стейт за сентябрь по тестеру (конечно я понимаю что история по тесту никакая, но есть мысли как сделать)
буду признателен за помощь в любом виде

https://yadi.sk/d/tUiZgPzS39d_6g

Да, посмотрел... факир был пьян)))

Нереальный отчет. Для начало надо хотя бы ограничить частоту сделок.

 
Dmitry Fedoseev:

Да, посмотрел... факир был пьян)))

Нереальный отчет. Для начало надо хотя бы ограничить частоту сделок.

//+------------------------------------------------------------------+
//|                                                             .mq4 |
//|                                                                  |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017"
#property version   "1.00"
#property strict

extern int    OrderCount    = 500;
extern double Lots          = 0.01;
extern int    Slippage      = 2;
extern int    Magic         = 12345;
extern int    TakeProfit    = 800;
extern int    StopLoss      = 800;
extern int    TS            = 20;

extern string  TimeFrame      = "current time frame";
extern int     period         =20;
extern int     shift          =0;
extern int     method         =0;
extern int     price          =0;
extern double  deviation      =2;

int ticket,w;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{return(INIT_SUCCEEDED);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{     //if(OrdersTotal() >= OrderCount){return;}  // проверка максимального количества ордеров
      
      bool down=true;
      bool up  =true;
      
      for(int i=0;i<20;i++)
         { 
            double trend_line = iCustom (Symbol(),0,"BB_down",TimeFrame,period,shift,method,price,deviation,3,i);
            if(trend_line<=0)
            {
               up= false; break;
            }
            if(trend_line>=0)
            {
               down  = false; break;
            }
         }
      //--------------------------------------------------------------------
      if(down)
      {ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"SELL_",Magic,0,Red);
         if(ticket>0)
            {double SL=NormalizeDouble(Bid+StopLoss*Point,Digits); 
             double TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);
                  if(OrderSelect(ticket,SELECT_BY_TICKET))
                  if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
             return;
            }  
      }        
      //--------------------------------------------------------------------
      if (up)   
      {ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"BUY_",Magic,0,Blue);
         if(ticket>0)
           {double SL=NormalizeDouble(Ask-StopLoss*Point,Digits); 
            double TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
                  if(OrderSelect(ticket,SELECT_BY_TICKET))
                  if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
            return;
           }
      }     
   //+---------------------------------------------------------------------------------------------------------------------||         
   //                                                             ТРЕЙЛИНГ СТОП ПО ВСЕМ ОРДЕРАМ                            ||
   //+---------------------------------------------------------------------------------------------------------------------||
      for(int i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
         {
            if(OrderSymbol()==Symbol() && TS>0 && OrderProfit()>0)
            {
               if(OrderMagicNumber()==Magic && OrderType()==OP_BUY && OrderOpenPrice()+TS*Point<=Bid && OrderStopLoss()<Bid-TS*Point)
                  w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*Point,OrderTakeProfit(),0);
               if(OrderMagicNumber()==Magic && OrderType()==OP_SELL && OrderOpenPrice()-TS*Point>=Ask && (OrderStopLoss()>Ask+TS*Point || OrderStopLoss()==0)) 
                  w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*Point,OrderTakeProfit(),0);
            }
         }
      }
//--------------------------------------------------------------------
}

взгляните пожалуйста, так ли???

вроде идет в тестере, но правда не совсем уверен так ли я прописал
и почему когда ставлю  ограничитель по ордерам (OrderCount) не работает трейлинг???

собрал как венигред)))

 
Artur Yusupov:

взгляните пожалуйста, так ли???

вроде идет в тестере, но правда не совсем уверен так ли я прописал
и почему когда ставлю  ограничитель по ордерам (OrderCount) не работает трейлинг???

собрал как венигред)))

С самого начала неправильно. Если в одном цикле проверка вверх и вниз, то не надо выпрыгивать из цикла.

Почему трейлинг не работает при ограничении количества ордеров - отсюда не видать. Наверно return используется и до трейлинга не доходит.