Работа советника для переворотной системы

 

Хочется обсудить способы борьбы с пропуском сигналов переворотной системы.
Под переворотной системой я понимаю здесь систему, которая всегда в рынке, а именно, закрывая лонг, она открывает шорт, и наоборот.
Само собой, никто не гарантирует, что не может быть нескольких последовательных сигналов в лонг, в таких случаях мы может или увеличить позицию,
либо не делать ничего. А вот как обеспечить правильную работу при пропуске первого сигнала (например, отключили ток).

Если сисетма простая, например, пересечение средних, то можно легко переделать условие типа Cross( ma1, ma2) на ma1>ma2. и все будет прекрасно работать, разве что откроемся чуть позже.

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

Вроде, понятно описал проблему.

 
А в чем проблема?
Если значения индикаторов брать не с 0-го а с 1-го бара, можно просто "сканировать" историю и воспроизводить правильный ход работы.
 
komposter писал (а):
А в чем проблема?
Если значения индикаторов брать не с 0-го а с 1-го бара, можно просто "сканировать" историю и воспроизводить правильный ход работы.

Это один из путей. Написать собственный тестер в длл и воспроизводить правильную работу. Кстати, не так это и сложно, тока хочется полениться и обсудить и другие варианты. :)
 Кстати, такой способ уж больно неэффективен с точки зрения количества вычислений. Вдруг, есть покрасивее вариант.
 
Зачем длл?
"for ( int i = Bars-1; i >= 1; i -- )" в руки, и вперед ;)
 
komposter писал (а):
Зачем длл?
"for ( int i = Bars-1; i >= 1; i -- )" в руки, и вперед ;)

Не думаю, что это принципиально. :)
 

Одним из вариантов такой реализации будет написание индикатора, содержащего в себе упрощенный тестер и возвращающий лишь два
значения "long" или "short". А советнику останется только следить за соответствием открытой позиции и значения этого индикатора.

 
BabyBear:

Одним из вариантов такой реализации будет написание индикатора, содержащего в себе упрощенный тестер и возвращающий лишь два
значения "long" или "short". А советнику останется только следить за соответствием открытой позиции и значения этого индикатора.

Те же яйца, только в профиль =)

Это более медленный вариант, т.к. из эксперта просчитать историю достаточно 1 раз - после обрыва связи.
Нет смысла заполнять целый буфер.
 

а как определить разрыв связи?

 
BabyBear:

а как определить разрыв связи?

bool IsConnected( )
Возвращает состояние главного соединения клиентского терминала с сервером, по которому производится подкачка данных. TRUE - связь с сервером установлена, FALSE - связь с сервером отсутствует или прервана.
Пример:
  if(!IsConnected())
{
Print("Связь отсутствует!");
return(0);
}
// Тело скрипта, нуждающегося в открытом подключении
// ...
 

Тогда придется советник зацикливать. Как то не по душе мне это.

 
BabyBear:

Тогда придется советник зацикливать. Как то не по душе мне это.

Можно просто искать "правильный" сигнал при каждом старте
Причина обращения: