У вас не стоит Flash Player
Настройки
#11527 - Thu Sep 02 2010 02:33 PM Стратегия Donchian breakout
Laber Offline
journeyman

Registered: Mon Jun 28 2010
Записи: 59
Для реализации стратегии "Donchian breakout" за основу взят скрипт на сайте Wealth-Lab.

Стратегия аналогична классической системе пробоя ценового канала.
Усовершенствование заключается в динамическом изменении
периода определения ценового канала для закрытия.
Принцип простой - после открытия позиции период расчета
для канала закрытия уменьшается на шаг (в оригинале это 1).


На графике отображены заходы в позиции:





Результаты тестирования стратегии.


Кривая капитала:




Отчет с результатами тестирования:





В прикрепленных файлах можно найти всю необходимую информацию по этой стратегии.


Attachments
donchian_breakout_chart.png (4459 downloads)
Description: сриншот графика

donchian_breakout_equity.png (3822 downloads)
Description: скриншот кривой капитала (доходности стратегии)

donchian_breakout_report.png (3645 downloads)
Description: скриншот отчета по результатам тестирования

donchian_breakout_scheme.xml (754 downloads)
Description: блок-схема в xml-формате

donchian_breakout_script.cs (882 downloads)
Description: скрипт на C#




Отредактировано Laber (Thu Sep 02 2010 02:33 PM)

Наверх
#20171 - Fri Jan 28 2011 01:45 AM Re: Стратегия Donchian breakout [Re: Laber]
DIS Offline
stranger

Registered: Fri Dec 10 2010
Записи: 15
Недавно открыл счет в Финам и опробовал данный скрипт в "боевом" режиме. Причем, на удивление удачно опробовал - сразу обнаружил проблему, которую можно было бы не увидеть в более сложном скрипте (и соответственно, начать терять деньги не понимая, куда они уходят).

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

Просмотрев код скрипта сразу обратил внимание на следующий подозрительный код:

#region execute signals
//--------------------------------------------------------------------------------
// выполнение сигналов для длинной позиции
LongPos = source.Positions.GetLastActiveForSignal("LN");
if (LongPos == null)
{
// Если нет активной длинной позиции
if (BuyPrice > 0)
{
// Если есть сигнал Buy,
// выдаем условный ордер на открыте новой длинной позиции.
source.Positions.BuyIfGreater(bar+1, 1, BuyPrice, "LN");
}
LongPos = source.Positions.GetLastActiveForSignal("LN");
if (LongPos != null) LongLowPeriod = LongClosePeriod;
}

Подозрительный потому, что по всей видимости функция BuyIfGreater работает по разному в режиме симуляции и в боевом режиме. Похоже, в режиме симуляции, после выполнения BuyIfGreater позиция сразу "открывается" и следующий GetLastActiveForSignal дает true, а в боевом режиме - позиция открывается на следующем цикле и GetLastActiveForSignal дает false. Отсюда, LongLowPeriod не сбрасывается, что приводит к радикальным отличиям в функционировании скрипта.

Большая просьба к разработчикам подтвердить или опровергнуть мою теорию и более подробно описать работу функций выставления заявок.

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

Наверх
#20179 - Fri Jan 28 2011 10:34 AM Re: Стратегия Donchian breakout [Re: DIS]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Да все так и есть, это нужно учитывать при программировании на API. Все GetLastActiveForSignal должны быть до создания новых сигналов, код в визуальном редакторе так и построен.

Наверх
#20199 - Fri Jan 28 2011 11:54 AM Re: Стратегия Donchian breakout [Re: Nektodron]
DIS Offline
stranger

Registered: Fri Dec 10 2010
Записи: 15
Спасибо, ясно. Ясно даже, отсутствие документации - требует времени.

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

Разве нельзя отложить открытие позиции при симуляции до следующего цикла? Ошибки скриптов были бы выявлены в процессе отладки, а не случайно - в процессе реальной торговли...

Наверх
#20200 - Fri Jan 28 2011 12:08 PM Re: Стратегия Donchian breakout [Re: DIS]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Потому что в режиме лаборатории список позиций сразу меняется, а в реальных торгах перед каждым расчетом берется из сделок/заявок.

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

Наверх
#27758 - Sat May 21 2011 05:19 AM Re: Стратегия Donchian breakout [Re: Nektodron]
ZooR Offline
veteran

Registered: Wed Jan 19 2011
Записи: 1327
А я из всего вышесказанного ничего не понимаю, но разницу между лабараторией и реальными торгами подтверждаю, сам на это напаролся, отсюда следует вопрос - как с этим бороться, если можно максимально простым языком, очень хочется с этим разобраться.
_________________________
солью любой депозит, скорость слива оговаривается индивидуально smile

Наверх
#27765 - Sat May 21 2011 12:57 PM Re: Стратегия Donchian breakout [Re: ZooR]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Вы напоролись в скрипте на визуальном редакторе или API?

Наверх
#27767 - Sat May 21 2011 02:32 PM Re: Стратегия Donchian breakout [Re: Nektodron]
ZooR Offline
veteran

Registered: Wed Jan 19 2011
Записи: 1327
в визуальном редакторе ставится внешний скрипт на API вот на нём это и происходило...
_________________________
солью любой депозит, скорость слива оговаривается индивидуально smile

Наверх
#27802 - Mon May 23 2011 12:08 PM Re: Стратегия Donchian breakout [Re: ZooR]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Что эта проблема не возникала нельзя хранить какие-то вычисляемые внутри торгового цикла данные в переменных. Все должно вычислять каждый раз заново.

Наверх


Moderator:  ViL, sar