Т.е. я просто покупал на открытии и продавал на закрытии дня, после чего вычислял вероятность падения/роста пары в определенный день недели.
Результатов этой попытки в точности не помню, помню только, что особо значимого стат. преимущества на какой-либо паре я так и не смог выявить (результаты были прибл.=50+/-2,4%), ну и не найдя всему этому никакого применения, я эту идею так и забросил.
В процессе поиска дополнительных фильтров для системы, над которой я сейчас работаю, набрел на ряд интересных закономерностей, о которых пойдет речь дальше, но сначала о самой системе...
Тему я начал на БВ: http://forum.forex.ua/viewtopic.php?f=42&t=10088
Здесь процитирую часть своего поста с описанием системы:
alx84 писал(а):
http://www.forexfactory.com/showthread.php?t=183582
http://www.forexfactory.com/showthread.php?t=103682
Я, правда, их немного переделал.
Инструмент – GBP, ТФ – интрадей, я беру 5мин.
Суть:
1.Строим канал за период 22:00-8:00 (GMT+1) (открытие Тихоокеанской сессии – открытие Лондона) по максимумам/минимумам.
2.При прорыве границы канала входим в сторону прорыва.
3.Тут 2 варианта:
a) Просто ставим трейлинг-стоп (в 15пп, например).
b) Ставим ТП 60п, СЛ=ТП/2, Безубыток=ТП/2.
Опуская подробности, лишь скажу, что впоследствии пришел к выводу, что наиболее приемлемыми есть такие настройки: ТП=СЛ=30пп.
Вот исходник для Омеги:
- Код: выделить все
Input: R_Start(2200),R_End(755),TP(30),NoTrade(0);
Vars: signal(0),StBar(0),EndBar(0),Counter(0),BuyPrice(0),SellPrice(0),OneTick(MinMove/PriceScale),Exit(0),SL(0);
signal=1;
Counter=Counter+1;
If NoTrade=1 then begin
If Month(Date)>=7 and Month(Date)<=8 then
signal=0;
end;
If time>=R_Start or time<=R_End then begin
signal=0;
Counter=0;
if time=R_Start then
StBar=BarNumber;
if time=R_End then
EndBar=BarNumber;
end;
Value1=EndBar-StBar;
BuyPrice=Highest(H,value1) of Counter bars ago+OneTick;
SellPrice=Lowest(L,value1) of Counter bars ago-OneTick;
if signal=1 and MarketPosition=0 then begin
if EntriesToday(Date)=0 then begin
Sell ("Dn") SellPrice Stop;
Buy ("Up") BuyPrice Stop;
end;
if EntriesToday(Date)=1 then begin
if MarketPosition(1)=1 then
Sell ("Dn2") SellPrice Stop;
if MarketPosition(1)=-1 then
Buy ("Up2") BuyPrice Stop;
end;
end;
if MarketPosition=1 then begin
Exit=EntryPrice+TP*OneTick;
ExitLong Exit limit;
SL=EntryPrice-TP*OneTick;
ExitLong SL stop;
end;
if MarketPosition=-1 then begin
Exit=EntryPrice-TP*OneTick;
ExitShort Exit limit;
SL=EntryPrice+TP*OneTick;
ExitShort SL stop;
end;
if date<>entrydate then begin
exitlong;
exitshort;
end;
Вот отчет:
Как видно, система приносит неплохой, казалось бы, результат, но средняя прибыль на сделку крайне мала: в шортах она составляет 10,16, а в лонгах всего 4,29...
И если прогнать тот же тест с учетом комиссий, спрэда и сплитаджа (я просто ставлю показатель commission amount равным 5 per transaction, возможно это не совсем корректно, но весьма наглядно ), то резалт выходит не столь хорош, как хотелось бы (лонги вообще в итоге оказались убыточными).
Понаблюдав несколько недель за работой системы в риал тайме, обратил внимание на то, что с большей вероятностью и меньшим временем пребывания в рынке, прибыльные сделки имеют место быть по понедельникам и четвергам. В среду же и пятницу наблюдалась обратная закономерность, т.е. цена, только вырвавшись из коридора и сорвав лимитник, тут же возвращалась обратно и щелкала стопы.
Но, конечно пара недель – это слишком малый срок, чтобы говорить о каких-то закономерностях и я решил провести небольшое исследование, целью которого было определить % профитных сделок системы в зависимости от дня недели. Система просто торговалась в определенный день недели, после чего результат записывался в таблицу.
В следующей таблице приведены результаты:
И по итогам я провел некоторого рода рейтинг (который, впрочем, весьма субъективен) сигналов:
Зеленый – сигналы с высокой вероятностью положительного исхода.
Желтый – средняя вер-ть.
Красный – слабые сигналы, при поступлении которых лучше вообще воздержаться от входа в рынок.
Вот код системы, которая работает только при поступлении «зеленых сигналов», т.е. открывает шорты только по понедельникам и вторникам при пробитии канала вниз, а лонги – по средам и четвергам при пробитии вверх:
- Код: выделить все
Input: R_Start(2200),R_End(755),TP(30),NoTrade(0);
Vars: signal(0),StBar(0),EndBar(0),Counter(0),BuyPrice(0),SellPrice(0),OneTick(MinMove/PriceScale),Exit(0),SL(0);
signal=1;
Counter=Counter+1;
If NoTrade=1 then begin
If Month(Date)>=7 and Month(Date)<=8 then
signal=0;
end;
If time>=R_Start or time<=R_End then begin
signal=0;
Counter=0;
if time=R_Start then
StBar=BarNumber;
if time=R_End then
EndBar=BarNumber;
end;
Value1=EndBar-StBar;
BuyPrice=Highest(H,value1) of Counter bars ago+OneTick;
SellPrice=Lowest(L,value1) of Counter bars ago-OneTick;
if signal=1 and MarketPosition=0 then begin
if EntriesToday(Date)=0 then begin
if DayOfWeek(date)=1 or DayOfWeek(date)=2 then
Sell ("Dn") SellPrice Stop;
If DayOfWeek(date)=3 or DayOfWeek(date)=4 then
Buy ("Up") BuyPrice Stop;
end;
end;
if MarketPosition=1 then begin
Exit=EntryPrice+TP*OneTick;
ExitLong Exit limit;
SL=EntryPrice-TP*OneTick;
ExitLong SL stop;
end;
if MarketPosition=-1 then begin
Exit=EntryPrice-TP*OneTick;
ExitShort Exit limit;
SL=EntryPrice+TP*OneTick;
ExitShort SL stop;
end;
if date<>entrydate then begin
exitlong;
exitshort;
end;
Отчеты:
1.с учетом комиссии, спрэда, сплит.
2. без.
Код системы, которая работает при поступлении «зеленых» и «желтых» сигналов:
- Код: выделить все
Input: R_Start(2200),R_End(755),TP(30),NoTrade(0);
Vars: signal(0),StBar(0),EndBar(0),Counter(0),BuyPrice(0),SellPrice(0),OneTick(MinMove/PriceScale),Exit(0),SL(0);
signal=1;
Counter=Counter+1;
If NoTrade=1 then begin
If Month(Date)>=7 and Month(Date)<=8 then
signal=0;
end;
If time>=R_Start or time<=R_End then begin
signal=0;
Counter=0;
if time=R_Start then
StBar=BarNumber;
if time=R_End then
EndBar=BarNumber;
end;
Value1=EndBar-StBar;
BuyPrice=Highest(H,value1) of Counter bars ago+OneTick;
SellPrice=Lowest(L,value1) of Counter bars ago-OneTick;
if signal=1 and MarketPosition=0 then begin
if EntriesToday(Date)=0 then begin
if DayOfWeek(date)=1 or DayOfWeek(date)=2 or DayOfWeek(date)=4 then
Sell ("Dn") SellPrice Stop;
If DayOfWeek(date)=1 or DayOfWeek(date)=3 or DayOfWeek(date)=4 then
Buy ("Up") BuyPrice Stop;
end;
if EntriesToday(Date)=1 then begin
if DayOfWeek(date)=1 or DayOfWeek(date)=4 then begin
if MarketPosition(1)=1 then
Sell ("Dn2") SellPrice Stop;
if MarketPosition(1)=-1 then
Buy ("Up2") BuyPrice Stop;
end;
end;
end;
if MarketPosition=1 then begin
Exit=EntryPrice+TP*OneTick;
ExitLong Exit limit;
SL=EntryPrice-TP*OneTick;
ExitLong SL stop;
end;
if MarketPosition=-1 then begin
Exit=EntryPrice-TP*OneTick;
ExitShort Exit limit;
SL=EntryPrice+TP*OneTick;
ExitShort SL stop;
end;
if date<>entrydate then begin
exitlong;
exitshort;
end;
Отчеты:
1.с учетом комиссии, спрэда, сплит.
2.без.
Как видно из вышеприведенных тестов, точность системы значительно возросла вместе со значением средней прибыли на сделку одновременно со значительным уменьшением количества сделок (с 483 до 286, или на 41 %), что, впрочем, не может не настораживать... Также, в связи с небольшой выборкой (~ 350 случаев на TDW за 4,5 года и по ~ 150 случаев на лонг/шорт), возникает сомнение, а не будет ли использование такого подхода обычной подгонкой под историю? В то же время, если брать более длительный период (>4.5 лет), то возникает сомнение на счет актуальности происходящих в тот период времени процессов на рынке в нынешних условиях.
Ну, я, конечно, понимаю, что наиболее точный ответ на вопрос мне может дать только время , но, все же, господа трейдеры, хочу узнать Вашу точку зрения (подкрепленную Вашими собственными наблюдения, что было бы замечательно), касаемо целесообразности использования закономерностей поведения цены в зависимости от дня недели, как в рамках данной системы, так и в принципе...
Также, хотелось бы услышать Ваши советы по, возможно, методам более углубленного анализа исследуемых процессов, т.к. полагаю, приведенные мною наблюдения покажутся весьма примитивными для трейдеров, использующих методы мат. и стат. анализа.