Вопрос к знатокам - страница 14

 
Спасибо большое!
 
rid писал(а) >>

Добрый день. Никак не могу разобраться с польз. индюком в советнике.

Вот он сам индюк:



Вызываю в советнике индюк я вот таким образом ( значения с 2 буферов )-

Однако, хотя в визуальном режиме видно, что значения индюка с обоих буферов меняются от нуля до плюс/минус пяти, но Кустомы упорно показывают(возвращают) нули ....

Вывел в коммент. - см. рис : на графике видно, что зел. линия =5, а в комменте отображается нуль.

Который час уже не могу разобраться. Пож. подскажите, где - ошибка ?

Сам индюк в закачке.

Ошибку нашел. Мише скриптик проверочный скинул.

На самом деле надо все параметры передавать. Строковые тоже

Файлы:
level_1.mq4  2 kb
 
Благодарю, Vinin !
 

Доброе время суток! Прошу помощи знающих, помогите плиз состряпать осцилятор на формуле heiken ashi показующий разницу между haOpen и haClose. Зарание Благодарю!

 

Всем привет !

Пож. подскажите. вот код:

// Проверка условий для совершения сделки селл 
  if( если условия соотв.-ют заданным){ //продаем
StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
   
      SL=0;TP=0;
      if(StopLoss>0    && StopLoss>StopLevel)   SL=Bid+Point*StopLoss;
      if(TakeProfit>0 && TakeProfit>StopLevel) TP=Bid-Point*TakeProfit;
      if(StopLoss  < StopLevel && StopLoss>0)   SL = Bid+Point*StopLevel; 
      if(TakeProfit<StopLevel && TakeProfit>0) TP = Bid-Point*StopLevel; 
   ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,SL,TP,"Name_Expert",Magic,0,clOpenSell);

                                                   }

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

Но ведь я же специально предусмотрел ., что бы этой ошибки не было !

Подскажите, почему не работают условия ? - 


 if(StopLoss  < StopLevel &&   StopLoss>0)   SL = Bid+Point*StopLevel; 
 if(TakeProfit<StopLevel  && TakeProfit>0)   TP = Bid-Point*StopLevel; 
 
А добавить единичку-двоечку к StopLevel для зазора? Мне как-то помогало.
 
у многих начинающих проблема со сравнением чисел с плавающей точкой. granit77 прав, я вот обычно для сохранения точности работы эксперта добавляю где надо не 1-2 а, скажем, 0.1 пипс
 
granit77 >>:
А добавить единичку-двоечку к StopLevel для зазора? Мне как-то помогало.

Вот так  ? :

 if(StopLoss  < StopLevel &&   StopLoss>0)   SL = Bid+Point*(StopLevel+1); 
 if(TakeProfit<StopLevel  && TakeProfit>0)   TP = Bid-Point*(StopLevel+1); 

Не помогает.

Кроме того, в тестере и без зазора должны эти условия работать. А вот не работают. - ошибка 130 вылазит

 
rid >>:

Не помогает.

Кроме того, в тестере и без зазора должны эти условия работать. А вот не работают. - ошибка 130 вылазит

Не знаток, но вывел бы принтами значения переменных StopLoss, TakeProfit, StopLevel, SL и TP.

Не видно как они объявлены и зачем нужно

 SL=0;TP=0
 
goldtrader >>:

Не знаток, но вывел бы принтами значения переменных StopLoss, TakeProfit, StopLevel, SL и TP.

Не видно как они объявлены и зачем нужно

Вот как сделано:

extern int     StopLoss=1;
extern int     TakeProfit=1;
double SL,TP;
int StopLevel;

//---------------
StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);

  if( УСЛОВИЯ ВХОДА ){ //продаем
   
      SL=0;TP=0;
      if(StopLoss>0    && StopLoss>StopLevel)   SL=Bid+Point*StopLoss;
      if(TakeProfit>0 && TakeProfit>StopLevel) TP=Bid-Point*TakeProfit;

      if(StopLoss  < StopLevel && StopLoss>0)   SL = Bid+Point*StopLevel; 
      if(TakeProfit<StopLevel && TakeProfit>0) TP = Bid-Point*StopLevel;
 
   ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,SL,TP,"Name_Expert",Magic,0,clOpenSell);
   if(ticket < 0){
            Print("Ошибка открытия ордера SELL #", GetLastError()); 
            Sleep(10000);  
            prevtime = Time[1]; 
            return (0); 
         } 
       }

Позиции открываются, но вместо стопов - ошибка 130 ....

Вывел в коммент все стопы и левел .  - все норм вроде отображается... - а вылазиет ошибка 130

Причина обращения: