Помогите подключить функции трейлинга к имеющемуся советнику. - страница 2

 
Я сам новичек но вроде я прикреплял его функции вроде работали, посмотрите там пример есть с советником там все вроде показано.
 
 
int start() {
checkForClose();
if (TimeHour(TimeCurrent()) >= start_time && TimeHour(TimeCurrent()) <= end_time) checkForOpen();

for (int i=0; i<OrdersTotal(); i++) {
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
   TralingByFractals(OrderTicket(),1440,7,3,false);
   }
 }


return (0);

}
найдите строку старт, и замените его вот этим кодом.
 
не получается, при компиляции выдаёт две ошибки
 
вот что написано у автора на сайте 
 for (i=0;i<OrdersTotal();i++)
         {
         if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
         if (OrderMagicNumber()!=magic || OrderSymbol()!=Symbol()) continue;
         if ((OrderType()==OP_BUY) || (OrderType()==OP_SELL))
            {
            // !!! ПРИМЕР ВЫЗОВА ФУНКЦИЙ ТРЕЙЛИНГА !!!
            // среди возможных вариантов мы, допустим, выбрали трейлинг по фракталам (пример вызова функции)
            // трейлингуем по фракталам на дневках, 5-барным, с отступом от экстремума в 3 п., в зоне лоссов не тралим
            TrailingByFractals(OrderTicket(),1440,5,3,false);
            // (т.е., как видим, достаточно предварительно выбрать ордер OrderSelect() и вызвать функцию, передав ей
            // тикет позиции и определив необходимые параметры).
            // При желании Вы можете закоментировать данный вид трейлинга и подключить любой другой или даже "сконструировать"
            // из них более или менее сложную конструкцию.
            
            //TrailingByShadows(OrderTicket(),60,iTrlBars,3,true);
            //SL2BreakevenIf(OrderTicket(),30,1);
            //TrailingRatchetB(OrderTicket(),10,25,30,10,25,30,false);
            //TrailingStairs(OrderTicket(),50,10);  
            //TrailingByATR(OrderTicket(),1440,5,1,20,1,1,false);        
            }
         }
      }                   
   return(0);
   }
 
может быть не работает потому что советник открывает позицию сразу со стопом и поэтому он не модифицируется при подключении данной функции?
 
Вот так всегда, пока от программистов помощи дождёшся так быстрее сам разобрался,

в самом начале кода прописал такую конструкцию
#import "TrailingByFractals.ex4"
   
   void TrailingByFractals(int ticket,int tmfrm,int frktl_bars,int indent,bool trlinloss);   

   int i, z; // counters
   int extr_n; // номер ближайшего экстремума frktl_bars-барного фрактала 
   double temp; // служебная переменная
   int after_x, be4_x; // свечей после и до пика соответственно
   int ok_be4, ok_after; // флаги соответствия условию (1 - неправильно, 0 - правильно)
   int sell_peak_n, buy_peak_n; // номера экстремумов ближайших фракталов на продажу (для поджатия дл.поз.) и покупку соответсвенно   
а в том месте кода где идёт проверка закрытия ордеров 

int checkForClose() {
   int l_shift_8;
   double l_icustom_12;
   int li_unused_4 = 0;
   for (int l_pos_0 = 0; l_pos_0 < OrdersTotal(); l_pos_0++) {
      if (OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
прописал такую строчку
TrailingByFractals(OrderTicket(),1,5,1,true);
и опачки, всё заработало
 
Alligator писал(а) >>
Вот так всегда, пока от программистов помощи дождёшся так быстрее сам разобрался,

в самом начале кода прописал такую конструкцию
а в том месте кода где идёт проверка закрытия ордеров

прописал такую строчку
и опачки, всё заработало


Вы сами стормозили.

В примере - трал по фракталам на D1 (tmfrm=1440), а вам надо было на M1 (tmfrm=1)
--
Тут программисты, а не экстрасенсы.

 
Но у меня есть ещё один вопрос, можно ли сделать чтобы трейлинг переносился только на один фрактал и дальше уже не двигался а оставался бы всё время на этом уровне.
Думаю что это не сложно для того кто владеет программированием. Если кто-то из уважаемых форумчан поможет буду очень признателен.
 
PapaYozh >>:


Вы сами стормозили.

В примере - трал по фракталам на D1 (tmfrm=1440), а вам надо было на M1 (tmfrm=1)
--
Тут программисты, а не экстрасенсы.


ничего я не стормозил, я прописывал именно для минуток, пример это для примера :)

не работало потому что я прописывал функцию в блоке открытия ордеров а не в блоке закрытия
Причина обращения: