Автор |
Сообщение |
Евгений
Зарегистрирован: 13.12.2010
Сообщения: 45
|
Здравствуйте. Подскажите как сделать вход в позицию при закрытии свечки над неким уровнем, но не сразу, а при некотором откате на n пунктов.
Cond1 = Cross(C,VL);// первое условие покупки
как сделать откат? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
Cond1 = Cross(C,VL);
Level = ...; // уровень
MaxLevel = HighestSince( Cross(C, Level), H); // максимум достигнутый ценой после пересечения Level
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Евгений
Зарегистрирован: 13.12.2010
Сообщения: 45
|
Сделал так, но что-то открывается совсем не там где надо....
Cond1 = Cross(C,VL);// цена закрывается над неким уровнем
LevelLong = VL-k; // уровень входа
MinLevel = LowestSince( Cross(C, VL), L); // минимум достигнутый ценой после пересечения уровня
BuySignal = L<= MinLevel ;
BuyPrice = MinLevel; |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Не математик
Зарегистрирован: 11.04.2012
Сообщения: 44
Откуда: Баранки
|
Евгений писал(а): |
Сделал так, но что-то открывается совсем не там где надо....
Cond1 = Cross(C,VL);// цена закрывается над неким уровнем
LevelLong = VL-k; // уровень входа
MinLevel = LowestSince( Cross(C, VL), L); // минимум достигнутый ценой после пересечения уровня
BuySignal = L<= MinLevel ;
BuyPrice = MinLevel; |
Я бы написал так.
Код: |
VL=...;
k=... ;
Cond1 = Cross(C,VL);// цена закрывается над неким уровнем
LevelLong = valuewhen(Cond1,C) - k; // закрытие над уровнем фиксируем,запоминаем и от него отнимаем необходимый "К"(свой уровень отката)
Buy = Cross(H,LevelLong); // покупаем откат
BuyPrice = LevelLong;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
Евгений
Зарегистрирован: 13.12.2010
Сообщения: 45
|
Сделал так:
Cond1 = Cross(C,VL);// закрытие над уровнем
LevelLong = ValueWhen(Cond1,VL) - k; // уровень отката
Buy = L<=LevelLong; // покупаем откат
BuyPrice = LevelLong;
В итоге вход произошел на той свечке, которая закрылась над первым уровнем (так как ее минимум получился ниже линии отката). Но минимум был раньше, чем закрытие над уровнем. Хронология событий не соблюдается. На картинке показано где вошел и где должен был войти. Что-то не так с кодом....... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Не математик
Зарегистрирован: 11.04.2012
Сообщения: 44
Откуда: Баранки
|
Евгений писал(а): |
В итоге вход произошел на той свечке, которая закрылась над первым уровнем (так как ее минимум получился ниже линии отката). Но минимум был раньше, чем закрытие над уровнем. Хронология событий не соблюдается. На картинке показано где вошел и где должен был войти. Что-то не так с кодом....... |
Перейди на таймфрейм ниже.
TimeFrameSet();
TimeFrameRestore();
TimeFrameExpand();
Ами не знает, что было внутри бара. Считает худший вариант. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Евгений
Зарегистрирован: 13.12.2010
Сообщения: 45
|
Я наверное не смогу перейти на таймфрейм ниже. График 5-ти минутный и история закачана на 5-ти минутках. А разве никак нельзя заставить Амиброкер понять, что минимумы надо отслеживать только после закрытия свечки над линией? Не может же минимум свечки быть позже чем ее закрытие..... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Евгений
Зарегистрирован: 13.12.2010
Сообщения: 45
|
Вопрос так и не решил. Может кто-нибудь подсказать !!!!! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот так сделай
Код: |
Cond1 = Ref(Cross(C,VL), -1); // закрытие над уровнем |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Евгений
Зарегистрирован: 13.12.2010
Сообщения: 45
|
000 писал(а): |
Вот так сделай
Код: |
Cond1 = Ref(Cross(C,VL), -1); // закрытие над уровнем |
|
Сделал, не работает. Так наверное проверяется условие закрытия над уровнем прошлой свечи. А если закрытие было и после него прошло несклолько свечей , то уже условие и выполняться не будет.....Или я не прав? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ref() исключает из вот этого
Код: |
LevelLong = ValueWhen(Cond1,VL) - k; |
свечку на которой произошло пробитие.
А как конкретно не работает? Что не так? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Евгений
Зарегистрирован: 13.12.2010
Сообщения: 45
|
Вот код который сейчас:
Cond1 = Ref(Cross(C,VL), -1);// условия покупки
LevelLong = ValueWhen(Cond1,VL) - k; //
BuySignal = L<= LevelLong AND InDay; // покупаем откат
BuyPrice = LevelLong;
SellSignal = EndDay;
Sell = SellSignal;
SellPrice = Close;
Cond11 = Ref(Cross(VS,C), -1);// условия продажи
LevelShort = ValueWhen(Cond11,VS) + k; //
ShortSignal = H>=LevelShort AND InDay; //
ShortPrice = LevelShort;
CoverSignal = EndDay;
Cover = CoverSignal;
CoverPrice = Close;
Buy = BuySignal;
Short = ShortSignal;
На картинке непонятные сделки в шорт, а где нужно в лонг не входит.... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Для начала посмотри есть ли там сигнал на покупку.
Это можно сделать двумя способами.
1. В настройках тестера на закладке Report включи опцию Detailed log
http://www.amisite.ru/begin/bk_set5.shtml
сделай тест и посмотри наличие сигнала
2. Запусти код как индикатор и выведи сигналы с помощью стрелок
типа PolotShapes(Buy, .....)
Если сигнал есть, но система не переворачивается, то в настройках тестера включи Reverse entry signal forces exit
http://www.amisite.ru/begin/bk_set2.shtml
А вообще такие вещи лучше для начала делать отдельно. Сделай только лонг и смотри и добивайся правильной работы. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|