Автор |
Сообщение |
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
Здравствуй Олег. Думаю для Вас это очень легко. Системка простая вроде...Код Омеги:
If t>1015 and t < 1800 then buy next bar at highw(0) stop;
if t>1015 and t< 1800 then sell next bar at loww(0) stop;
if t=1300 then begin
exitlong at c;
exitshort at c;
end;
setstoploss(200);
можно даже в общем, я потом допилю)
оригинал отсюда http://smart-lab.ru/blog/206229.php
спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Алгоритм
во время основной торговой сессии фортс с 10:15 до 18:00 входим в пробой текущего недельного минимума или максимума. Позиция удерживается до 12-13 часов московского времени следующего дня с стопом 200п. повторных входов, если позиция уже есть — не осуществляется. это все.
код для омеги
If t>1015 and t < 1800 then buy next bar at highw(0) stop;
if t>1015 and t< 1800 then sell next bar at loww(0) stop;
if t=1300 then begin
exitlong at c;
exitshort at c;
end;
setstoploss(200);
|
Лучше бы дал описание, но хоть ссылку. Я в коде омеги нифига не понимаю.
Типа как то так
Код: |
TimeCond = TimeNum() >= 101500 AND TimeNum() < 180000;
NW = DayOfWeek() < Ref(DayOfWeek(), -1);
ND = DayOfWeek() != Ref(DayOfWeek(), -1);
WH = HHV(H, BarsSince(NW)+1);
WL = LLV(L, BarsSince(NW)+1);
Buy = H > Ref(WH, -1) AND TimeCond;
Short = L < Ref(WL, -1) AND TimeCond;
BuyPrice = Max(Ref(WH, -1), O);
ShortPrice = Min(Ref(WL, -1), O);
SellPrice = CoverPrice = C;
EntryDay = Flip(Buy OR Short, ND);
Sell = Cover = TimeNum() == 130000 AND EntryDay == 0;
ApplyStop(stopTypeLoss, stopModePoint, 200, ExitAtStop = 1);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег.
Последний раз редактировалось: 000 (Ср Окт 22, 2014 1:17 am), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
Ух спасибо огромное. Даже не так просто оказалось, я бы сам не сделал) Сегодня уже поздно, завтра погоняю код и отпишусь! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я там кое что добавил. Сразу забыл а ща вспомнил... )))) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
Доброе утро Олег.
Прогнал код. Работает. Но есть выходы иногда раньше 13-00. я так понял срабатывает условие на шорт если лонг и он закрывает и встает в шорт.
а по системе выход строго по стопу или в 13-00) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну так может в настройках тестера выключить опцию "закрывать позицию при поступлении противоположного сигнала"? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
000 писал(а): |
Ну так может в настройках тестера выключить опцию "закрывать позицию при поступлении противоположного сигнала"? |
ааа) точно, совсем затупил, сорри! Все отличноработает, буду экспериментировать. Еще раз огромное спасибо) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
что то не так. не сразу заметил. Позиция в 1/3 случаев держится несколько дней. 2-3-6 дней. На след день почему-то не всегда закрывается.
пытался найти причину, не смог) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Попробуй вот эту строку
Sell = Cover = TimeNum() == 130000 AND EntryDay == 0;
заменить на
Sell = Cover = TimeNum() > 130000 AND EntryDay == 0; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
000 писал(а): |
Попробуй вот эту строку
Sell = Cover = TimeNum() == 130000 AND EntryDay == 0;
заменить на
Sell = Cover = TimeNum() > 130000 AND EntryDay == 0; |
то же самое только выходы теперь в 13-05, но в те же дни...т.е. иногда через пару дней, черз 4 дня..или неделю
с EntryDay что то. Из условия закрытия я убрал EntryDay==0 и система выходит в 13-00, но косяк в том что если входила утром до 13, то выходит в этот же день)) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Orange2000 писал(а): |
000 писал(а): |
Попробуй вот эту строку
Sell = Cover = TimeNum() == 130000 AND EntryDay == 0;
заменить на
Sell = Cover = TimeNum() > 130000 AND EntryDay == 0; |
то же самое только выходы теперь в 13-05, но в те же дни...т.е. иногда через пару дней, черз 4 дня..или неделю
с EntryDay что то. Из условия закрытия я убрал EntryDay==0 и система выходит в 13-00, но косяк в том что если входила утром до 13, то выходит в этот же день)) |
Угу. Для того и ввел EntryDay.
О, бля, понял. Если система в позе, но поступают сигналы, то тестер их игнорирует, а на EntryDay они один хрен влияют и включают его заново. Ща не досуг, позже подумаю и исправлю. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Типа так
Код: |
TimeCond = TimeNum() >= 101500 AND TimeNum() < 180000;
TN = TimeNum();
NW = DayOfWeek() < Ref(DayOfWeek(), -1);
ND = DayOfWeek() != Ref(DayOfWeek(), -1);
WH = HHV(H, BarsSince(NW)+1);
WL = LLV(L, BarsSince(NW)+1);
Buy = H > Ref(WH, -1) AND TimeCond;
Short = L < Ref(WL, -1) AND TimeCond;
BuyPrice = Max(Ref(WH, -1), O);
ShortPrice = Min(Ref(WL, -1), O);
SellPrice = CoverPrice = C;
pos = ED = 0;
for( i = 0; i < BarCount; i++ )
{
if(pos == 0)
{
if(Buy[i] OR Short[i])
{
pos = 1;
ED = 1;
}
}
else if(pos == 1)
{
Buy[i] = 0;
Short[i] = 0;
if(ND[i] == 1)
ED = 0;
else if(TN[i] == 130000 AND ED == 0)
{
pos = 0;
Sell[i] = Cover[i] = 1;
}
}
}
ApplyStop(stopTypeLoss, stopModePoint, 200, ExitAtStop = 1);
|
Наверняка это не самый лучший код, но так мне проще. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
На этот раз все четко! спасибо) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|