Советник EMA Toch Crasher v 0.1 beta

MrGold

Активный участник
Сова работает на косании цены линии длинной МАшки (изначально думал что обязательно ЕМА потому такое название), При касании он запоминает цену МАшки и держит виртуальный отложенные ордера на растоянии Degrs от МА. При их достижении он открывает ордер. закрытие по тралу стопу или профиту (если повезет ;)
параметры:
EveryTick - если делали оптимизацию по ценам октрытия, для работы и проверке по всем тикам ставьте false;
TF - 30 защита от дурака, если смените ТФ, робот не будет работать. ставьте ТФ оптимизации в минутах
Prof - t/p, Loss - s/l;
Degrs - отступ от МАшки
RIVperiod - период МАшки
RIVmethod - тип МАшки (SMA-0,EMA-1,SMMA-2,LWMA-3)
TrallEn - включение трала
TrallSt - начинать тралить если профит по позиции превысил TrallSt едениц депозита. (если депо в долларах ФРС, и параметр равен 300, то будет тралить при достижении профита в 300 $)
TrallPp - тралл в пунктах.
Тралл кстати говоря тоже виртуальный. Виртуальные ордера и тралл делаются с целью чтобы кухни их не видели и не выбивали раньше времени ордера/стопы.
Посмотреть вложение EMA Toch Crasher.rar
Отчет представленный в отчете - оптимизация, т.е. готов для реала если вас устраивают его показатели. С радостью приму предложения по улучшению советника либо не большой коррекцией идеи. За этим я его суда и выкладываю

P.S. Автор (я) не несет ответственности за ваш депозит, однако хочу сказать что за основу был взят советник который стоит на реале и был заменен лишь модуль принятия решений, т.е. каких либо проблем при работе не предвидится.
 

ZuriusLev

Местный житель
Фиксированный Degrs, заменить разницей между основной и более короткой машкой (период основной / N)
И оптить N и разницу между машками. Типа примитивный флетовый фильтр.
 

scorpio818

Активный участник
По-моему у Вас в процедуре CloseOrders() логическая ошибка. Проверьте, как она сработает, если к примеру всего 6 ордеров: 1-й, 3-й, 4-й и 5-й выставлены Вашим советником (Magic соответствует), а 2-й и 6-й - ручные (Magic = 0)
 

MrGold

Активный участник
а такой ситуации и быть не может, он поддерживает только 1 открытый ордер.
Вот функция в начале:

for (int i=1; i<=OrdersTotal(); i++) // Переборка открытых ордеров
{
if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true) // есть следующий
{
if (OrderMagicNumber()==magic) // сравнение меджика
{
if (TrallEn==true) Tralling();
return;
}
}
}
находим ордер, если надо тралим, нет, сваливаем, до функции открытия нового ордера не дойдет если есть первый.


Он просто перебирает все имеющиеся ордера, если меджик совпал - закрывает и возвращается в функцию tralling откуда и был запущен. та в свою очередь возвращается в функцию старт а там мы видим:
if (TrallEn==true) Tralling();
return;
т..е после ее возвращение, прекращение обработки пришедшего тика.
 

scorpio818

Активный участник
Он просто перебирает все имеющиеся ордера, если меджик совпал - закрывает и возвращается в функцию tralling откуда и был запущен.
При ЗАКРЫТИИ ордеров перебирать их следует от последнего к первому, а не наоборот. При работе с единственным ордером это правило использовать не обязательно, но, тем не менее, его следует соблюдать, дабы не наколоться в будущем, к примеру используя собственные куски кода в других советниках.

Разъяснение ошибки, к примеру, вот в этом сообщении
http://forexsystemsru.com/sovetniki/61354-sovetnik-cabel_run-24.html#post217154
 

MrGold

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