Нужна помощь в отладке советника - страница 2

 
evillive:

И чем этот код от моего отличается?

Переменой мест сравниваемых параметров разве что и применением к цене открытия бара, что даст то же самое зепездывание на 1 бар, как если и выставить смещение МАшки на 1 бар вперед...

Проблему переоткрывания десятков ордеров Бай это не решает никак, к сожалению :(


Вообще-то первоначально у вас такой код был

double detect()
{
   RefreshRates();                             
//Free margin check
   double lotcost = MarketInfo(Symbol(),MODE_MARGINREQUIRED);// Стоимость 1 лота
    if(AccountFreeMargin()<LotsOptimized()*lotcost) 
      {
         Print("Not enough funds, free margin = ", AccountFreeMargin());
         return(0);
      }
//
     double lpf0 = iMA(Symbol(),0,slo,0,MODE_SMA,PRICE_CLOSE,0);
     double lpf1 = iMA(Symbol(),0,slo,0,MODE_SMA,PRICE_CLOSE,1);
     //double hpf0 = iMA(Symbol(),0,fast,0,MODE_SMA,PRICE_CLOSE,0);
     //double hpf1 = iMA(Symbol(),0,fast,0,MODE_SMA,PRICE_CLOSE,1);
//
   if(Close[1]<lpf1 && (Close[0]-elevation*Point)>lpf0) return(1);
   if(Close[1]>lpf1 && (Close[0]+elevation*Point)<lpf0) return(-1);
}
 

В предложенном же мной варианте используется цена PRICE_OPEN, что исключает дребезг. И, кроме того, в момент пересечения линий у вас в результате дребезга генерируются два противоположных сигнала, у меня же сигнал и его отсутствие.

Впрочем, к чему просьба о помощи, если вы сами всё знаете лучше всех.

 
Я наверное неверно описал суть проблемы. Проблема в зацикливании оппераций открытия-закрытия ордеров. Ну да, код поменялся с тех пор, я же продолжал работать над ним и после написания данного вопроса, но даже с Опен проблема осталась.
 
Вот новый код и результат тестера, думаю тут не в определении пересечения дело.
Файлы:
tester.zip  901 kb
 

Похоже если добавить проверку перед открытием ордеров

   if(Volume[0]>1) return;

то дребезг исчезает, надо ещё потестить...

Да и условие выхода по обратному пересечению как-то не то. По-моему лучше по вершинам/впадинам лучше выходить, или по трейлингу, а после коррекции открываться по новой если тренд продолжается.

 
evillive:

Похоже если добавить проверку перед открытием ордеров

то дребезг исчезает, надо ещё потестить...

Да и условие выхода по обратному пересечению как-то не то. По-моему лучше по вершинам/впадинам лучше выходить, или по трейлингу, а после коррекции открываться по новой если тренд продолжается.


Предупреждаю. Этот вариант только для тестера
 
Vinin:

Предупреждаю. Этот вариант только для тестера

Что именно? Проверка или выход по вершинам? Что пойдет не так если такой советник в реальном времени запустить?

 
Контроль на объем в реале не допустим, но хорошо работает в тестере.
 
Vinin:
Контроль на объем в реале не допустим, но хорошо работает в тестере.
А тогда что вместо него? Чтобы ордер только в самом начале бара открывался, а не как у меня?
 
evillive:
А тогда что вместо него? Чтобы ордер только в самом начале бара открывался, а не как у меня?


Как что, конечно контроль времени. Времени открытия бара.

А тики могут и пачками падать. Свалилось сразу же 10 тиков и в таком случае в Вашем варианте (хотя конечно это не Ваш вариант, ноги известно откуда растут) мы пропускаем бар. Если Вас это устроит - извините что помешал

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