Автор |
Сообщение |
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
Привествую Олег! Вот идея, которая требует реализации в ами. Думаю тебе будет просто ее сделать. Будет полезна многим для их систем.
Есть простая система:
Buy= Cross(C, MA(C,13));
Sell= Cross(MA(C,13) , C);
Cover = Buy;
Short = Sell;
Нужно так исправить, что бы в лонг входило только на пробое хая свечи на которой был сигнал. Т.е. на след свече или 2ой и т.д.
И для шорта, так же только лоу смотрим.
Sell и Cover соответсвтенно срабатывает именно по закрытию.
таким образом можно пересидеть в кеше пока идет боковичок! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
BuySignal = Cross(C, MA(C,13));
ShortSignal = Cross(MA(C,13) , C);
BuyLevel = ValueWhen(BuySignal, H);
ShortLevel = ValueWhen(ShortSignal, L);
Buy = H > BuyLevel;
BuyPrice = BuyLevel;
Short = L < ShortLevel;
ShortPrice = ShortLevel;
Cover = Buy;
Sell = Short;
// для проверки
Plot(C, "", colorBlack, styleCandle);
Plot(MA(C,13), "", colorRed);
Plot(BuyLevel, "", colorBlue);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
Олег, спасибо за элегантное решение...Но есть проблема в части сделок
МА=100 в моем случае сейчас.
вот тут непонятные выходы я обвел кружочками.
1ый и 3ий лонг должен был держаться, средняя снизу цены. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нарисуй обе линии BuyLevel и ShortLevel на графике и посмотри.
Про "средняя снизу цены." ты ничего в ТЗ не писал. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
Понял.
Изменил фрагмент на:
Buy = C > BuyLevel AND C>MA(C,13);
BuyPrice = BuyLevel;
Short = C < ShortLevel AND C<MA(C,13);
ShortPrice = ShortLevel;
и получил что изначально хотел.
Но ломаю голову на тем что твой код изначально дает на тестах в 5 раз больше прибыли. Где то подвох) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нарисуй на графике уровни и сигналы. Потом погоняй в бар реплеере. Лучше если в реплеере будет фрейм меньше чем не графике, чтобы свечки постепенно рисовались.
Понаблюдай. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
Да, надо будет прогнать, поглядеть а то прям грааль получается)
Спасибо еще раз за помощь) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
в общем, много сделок на истории с прибылью 50-100 пп. Цены тестер берет по уровню хай-лоу, что нереально в живой торговле. Проскальзывание делает эти все множество мелких профитов в множество мелких убытков)
Но все равно твой код дает большую прибыль) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Orange2000 писал(а): |
Цены тестер берет по уровню хай-лоу, что нереально в живой торговле. |
Угу. Потому, что вот так
Код: |
BuyPrice = BuyLevel;
ShortPrice = ShortLevel; |
писать не правильно. Если цена гепнулась выше/ниже уровня, то тестер открывает сделку по цене внутри свечи, но максимально близко к уровню. Отсюда и получается сделка по макс/мин. Надо писать так.
Код: |
BuyPrice = Max(O, BuyLevel);
ShortPrice = Min(O, ShortLevel); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Orange2000
Зарегистрирован: 15.10.2009
Сообщения: 185
|
Олег , тут по коду этйо системы есть проблема.
вот мой код подкорректированый:
Код: |
BuySignal = Cross(C, MA(C,13));
ShortSignal = Cross(MA(C,13) , C);
BuyLevel = ValueWhen(BuySignal, H);
ShortLevel = ValueWhen(ShortSignal, L);
Buy = H > BuyLevel AND C>MA(C,13);
BuyPrice=CoverPrice = BuyLevel;
Short = L < ShortLevel AND C<MA(C,13);
ShortPrice=SellPrice = ShortLevel;
Cover = Buy;
Sell = Short;
|
в общем если взять значения меньше 13. например 5 (что бы чаще переворачивало) то в реально торговле иногда убираются стрелочки.
Т.е. напрмиер сработал пробой лоу и система встала в шорт, но тут же в этйо свече котировки устремляются вверх , происходит переворот CROSS уже вверх , то стрелочка ШОРТ исчезает.
Отсюда на истории и очень большая рпибыль.
как это можно исправить, что бы переворота не было и страелочки не убирались, если уже появились?
все дело я так понимаю в добавленном условии AND C>MA(C,13). Т.е. CLOSE не известен в моент пробой ЛОУ или ХАЙ.
p.s. вот та кбудет правильней?
Код: |
Buy = H > BuyLevel AND Ref(C>MA(C,13),-1);
BuyPrice=CoverPrice = BuyLevel;
Short = L < ShortLevel AND Ref(C<MA(C,13),-1);
ShortPrice=SellPrice = ShortLevel;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Правильный анализ, правильные выводы. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Atlasraketa
Зарегистрирован: 12.07.2015
Сообщения: 136
|
Мне кажется с таким интервалом мувинга будет много срабатываний на вход выход, и бы добавил моментум как фильтр. Т.е. пересечние двух моментумов. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|