Автор |
Сообщение |
Teema
Зарегистрирован: 01.04.2009
Сообщения: 184
|
да, примерно так. Логика
Но и на баре входа uroven должен выть известен. И тогда все будет норм. И стрелка BUY будет в нужное время в нужном месте.
Сделаешь, напиши. Посмотрим стопы. У меня они уже в одной системе неплохо работают. |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZDN
Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk
|
Teema писал(а): |
да, примерно так. Логика
Но и на баре входа uroven должен выть известен. И тогда все будет норм. И стрелка BUY будет в нужное время в нужном месте.
Сделаешь, напиши. Посмотрим стопы. У меня они уже в одной системе неплохо работают. |
ок! завтра сделаю, отпишусь... скинь кодик стопов, если такой же принцип, а то у меня всё еще вопрос открыт... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Teema
Зарегистрирован: 01.04.2009
Сообщения: 184
|
Нет готового варианта. Только часть из того что Олег написал проверена. Вместе доделаем |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ок. Давайте пока сами. Завтра вечером посмотрю, что у вас получилось.
Пока напишу почему сделал так и почему не правильно работает.
Sell = L < IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);
На баре где покупка стоп определятся по минимуму свечки. В принципе там и так уже стоит стоп опставленный ApplyStop(), но если оставить обычный скользящий, то есть вероятность, что он окажется выше Low на баре входа и не кстати сработает. Поэтому я его установил на Low.
А не работает вот почему. Стоп имеет приоритет перед всеми другими сигналами и если на одном баре 2 сигнала (в данном случае выход и стоп), то сработает именно стоп. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZDN
Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk
|
[quote="zadun"]
Teema писал(а): |
да, примерно так. Логика
Но и на баре входа uroven должен выть известен. И тогда все будет норм. ...... |
Пробую - пробую, но есть маленькое НО.... - uroven теперь у меня рассчитывается на предыдущем баре, а не на баре входа, т.к. на условие покупки теперь добавлено ref(...,-1). Есть ли вариант??? (оператор или прием) - как то зафиксировать ценник uroven-я и присвоить его на бар, где и происходит вход в рынок. У меня ведь сигнал и uroven рассчитываюся баром раньше и по параметрам предыдущих баров, а не на том, где вход.
А стоп наверно как то через логику придется мудрить, может даже через цикл
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
Teema
Зарегистрирован: 01.04.2009
Сообщения: 184
|
Я так делаю Buy=H>ref(U,-1); сравниваешь High с предыдушим значением уровня. Ну и другие условия добавляй.
Короче, на предыдущем баре должны быть готовы все условия и уровни.
На текущем баре пишешь условия входа в сделку, при этом берешь все нужные значения с предыдущего бара. |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZDN
Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk
|
Всё дело в том, что я так и делаю, но ерундистика у меня в присвоении BuyPrice.... он та у меня будет равен uroven, а тот рассчитан на предыдущем баре - вот стрелка и ставится баром раньше, а не так как надо. вот если бы как то пересчитать (перенести ценник) uroven на бар входа, тогда и стрелка была бы на нужном баре. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
ZDN
Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk
|
Асы Amibroker - Help!!! Всё перепробывал для решения задачи со стопом, но ни как не могу отделаться от возникшей проблеммы с срабатыванием первоначального стоп вместо скользящего. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Во первых по входу и уровню.
Обзову условие Cond
Код: |
Cond = ...;
Buy = Ref(Cond, -1) AND O < Ref(H, -1) AND H > Ref(H, -1);
// на прошлом баре было условие а на текущем открытие ниже прошлого хая а най выше прошлого
BuyPrice = Ref(H, -1);
// цена сделки равна прошлому хаю.
|
Правильней BuyPrice сделать так
Код: |
BuyPrice = IIf(O > Ref(H, -1), O, Ref(H, -1));
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Теперь про стоп. Идеально конечно написать цикл, но можно попробовать и так.
Код: |
Sell = L < Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, L));
SellPrice = IIf(O < Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, L)), O, Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, L))); |
Если Low меньше верхнего из уровней первый из которых скользящий стоп (Ref(L, -1) + Ref(L, -2))/2 а второй Low в момент когда был прошлый сигнал Buy.
С ценой выхода так. Если открытие ниже уровня стопа, то выход по открытию. В противном случае выход по уровню.
Тут может быть косяк. Если за время сделки возникнет еще один сигнал на покупку, то и первый стоп перенесется на уровень Low этого бара несмотря на то, что сигнал не будет исполнен т.к. система уже в рынке.
Но тут как посмотреть. В общем в этом есть логика. Ведь на сигнале входа мы ставим стоп на Low? так почему бы не переносить его и в процессе сделки если возник новый сигнал?
Теперь о косяке в логике системы.
Мы входим внутри свечи при пробитии уровня и ставим стоп на Low этой свечи. Интересно как мы это можем сделать когда до закрытия свечи её Low не известен? Таким образом мы подсматриваем вперед. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZDN
Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk
|
Спасибо, Олег!
Я вхожу при пробитии уровня рассчитанного на предыдущей свече и ставлю стоп на Low той же предыдущей свечки, а уж потом когда закроется свеча, где я входил - отменяю поставленный стоп и рассчитываю скользящий стоп по Low закрытой свечи и предыдущей, как среднее.
Олег, НЕТ заглядывания в будущее. Торгую эту систему уже несколько месяцев, пока всё ок, но есть дополнительные идеи и поэтому нужно воспроизвести ее в тестере amibroker’a. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Тогда так.
Код: |
Sell = L < Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, Ref(L, -1)));
SellPrice = IIf(O < Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, L)), O, Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, L)));
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZDN
Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk
|
Вставил в тестер вот такой код:
Sell = L < Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, Ref(L, -1)));
SellPrice = IIf(O < Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, Ref(L, -1))), O, Max((Ref(L, -1) + Ref(L, -2))/2, ValueWhen(Buy, Ref(L, -1))));
Проверил на выборке результаты тестера, сперва обрадовался (несколько трейдов выполнились идеально), но потом появилась вот такая картина (см. рисунок):
- в течении позиции у меня был один ложный сигнал на продажу и сразу за ним сигнал на покупку, хотя перед сигналом на продажу было еще целая куча сигналов на покупку;
- выход произошел баром раньше по цене минимума предыдущего бара (или пред-предыдущего бара, где должен был быть выход), как будь то у меня на этом баре был сигнал на вход, а там, где случился выход - был выход по первоначальному стопу, а не по скользящему, т.е. по условию (MAX(...,...).
Наверно здесь еще проверка на продажу нужна или, Олег, как Вы и говорили, - нужен цикл. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Напишу. Только не сегодня. Или в субботу вечером или в воскресенье. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZDN
Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk
|
000 писал(а): |
Напишу. Только не сегодня. Или в субботу вечером или в воскресенье. |
Ок! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|