[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 600

 
rigonich:

Объявите переменную типа datetime, присвойте ей значение  Time[0], после открытия ордера, потом если она не равна Time[0 , можно открывать следующий ордер, если равна --выход из старт.  Что касается критериев,код я не смотрел, но, видимо, если это стохастик, то срабатывать должен при пересечении в районе перекупленности--перепроданности(обычно >80 и<20 %).  Для наглядности поставье уровни 20 и80 % в настройках стохас   
rigonich:

Объявите переменную типа datetime, присвойте ей значение  Time[0], после открытия ордера, потом если она не равна Time[0 , можно открывать следующий ордер, если равна --выход из старт.  Что касается критериев,код я не смотрел, но, видимо, если это стохастик, то срабатывать должен при пересечении в районе перекупленности--перепроданности(обычно >80 и<20 %).  Для наглядности поставье уровни 20 и80 % в настройках стохастика.
Спасибо)
 
Добрый день! Помогите пожалуйста, не могу понять почему открываются ненужные ордера ((, на скрине обведены красным, вот критерии 
// Торговые критерии
   M_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  0);
   M_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  1);
   S_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,0);
   S_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,1);
 
   if (M_2 < S_2 && M_1>=S_1 ) 
      { 
       if (Total==1)
         {
          if (Vremya== Time [0]) 
          return; 
          T=Close_Order (Lts,Tip);
          Vremya= Time [0];
          if (T==true)
           { 
           Total=0;
           }
         } 
       if (Total==0)         
         { 
         if (Vremya== Time [0])  
         return;                                     
   
          Open_Order_B (Lts); 
          Vremya= Time [0];
            
         }                                      
      }
   if (M_2 > S_2 && M_1<=S_1 ) 
      { 
       if (Total==1)
          {
           if (Vremya== Time [0]) 
           return; 
           T=Close_Order (Lts,Tip); 
           Vremya= Time [0];
           if (T==true)
             {
             Total=0;
             }
          }
       if (Total==0)         
          {                                          
          if (Vremya== Time [0]) 
          return;                                     
          
          Open_Order_S (Lts); 
          Vremya= Time [0];                                              
          }
       }   
 
Equilibrium:
Добрый день! Помогите пожалуйста, не могу понять почему открываются ненужные ордера ((, на скрине обведены красным, вот критерии 

Пробуйте брать значения индикатора с 1 и 2 бара. Как-то так.
 
i999i:

Всем привет,

подскажите пожалуйста как узнать максимальную цену, которая была после образования фрактала


Следующий верхний фрактал.
 

double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

Добрый день подскажите пожалуйста 

как записать в формате 1.30320 для EURUSD например?

 
hoz:

 Вот торговая функция, которая открывает позиции:

 

 Всё чётко и кратко. Постоянно выскакивает ошибка 130 в тестере, хотя эксперт работает, но всё-таки ошибка 130 периодически проскакивает. В чём может быть причина?

 В данный ф-ции используются ф-ции открытия позиций, вот они:

 

 Я думал, что что-то связано с стоплевел уровнем, добавлял проверку, но не то.. Пока что я его убрал, т.к. на Альпари этот уровень равен 0. Прошу подсказки, что нужно поправить, чтоб не было это ошибки.


Я думаю все дело в функции  GetPriceToInput().
 
sasha1995:


 double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

как записать в формате 1.30320 для EURUSD например?

NormalizeDouble(...,Digits)
 
 double max=High[iHighest(NULL,PERIOD_M15,MODE_HIGH,32,0)]; // найти максимум последующих 32 баров
 double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)]; // найти минимум последующих 32 баров
 double min=NormalizeDouble(min,Digits); // превращение в T/P

 double max=NormalizeDouble(max,Digits); // превращение в T/P

 Ticket=OrderSend (Symbol(), OP_BUY, lot, Ask, 3,0, max, "Покупаю"); 

Подскажите пожалуйста в чем ошибка ? не хочет создавать take profit 

я кажется понял что ihighest дает только индекс, а как по нему найти самую высокую цену?

 
sasha1995:
 double max=High[iHighest(NULL,PERIOD_M15,MODE_HIGH,32,0)]; // найти максимум последующих 32 баров
 double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)]; // найти минимум последующих 32 баров
 double min=NormalizeDouble(min,Digits); // превращение в T/P

 double max=NormalizeDouble(max,Digits); // превращение в T/P

 Ticket=OrderSend (Symbol(), OP_BUY, lot, Ask, 3,0, max, "Покупаю"); 

Подскажите пожалуйста в чем ошибка ? не хочет создавать take profit 

я кажется понял что ihighest дает только индекс, а как по нему найти самую высокую цену?


High[i]

Если  цена High нулевого бара  самая высокая из 32последних(цена идет вверх), значение тейкпрофит может получиться <= текущей цене.  

 
rigonich:

High[i]

не понял ) объясните пожалуйста
Причина обращения: