Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 2 стопа (помогите решить задачу) Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
ZDN



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Пн Янв 24, 2011 10:36 pm Ответить с цитатой Вернуться к началу

Уважаемые знатоки Amibroker! Вот, уже который день не могу решить задачу с выставлением стопа в моей системе. Помогите подобрать код для тестера, я пока еще начинающий знаток ами.
По системе есть 2 стопа (рассматривается лонг), один ставится в момент входа на минимуме предыдущей свечи (свеча №1), где был сигнал на вход, а после закрытия свечи, на которой произошел вход в рынок (свеча №2), вышеуказанный стоп нужно снять и выставить скользящий стоп (среднее значение минимума предыдущей свечи (свеча №1), где был сигнал на вход + минимум свечи, на которой был вход(свеча №2), т.е. простая двухдневная скользящая). Данный скользящий стоп должен двигаться по рынку пока его не пересечёт цена сверху вниз (минимум последующей свечи, на рисунке – это свеча №7).
Заранее всем огромное спасибо. Прошу прощения если неловко написал условие задачи, старался, как мог.

Файл с рисунком прилагаю.

Совсем забыл... вход осуществляется при пересечении двух скользящих, выход только по одному из стопов.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Янв 25, 2011 12:20 am Ответить с цитатой Вернуться к началу

Все очень просто. Первый стоп ставим функцией ApplyStop(), а второй обычным sell
Код:

ApplyStop(stopTypeLoss, stopModePoint, BuyPrice - L, ExitAtStop = 1);

Sell = L < IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);
SellPrice = IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZDN



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Вт Янв 25, 2011 8:57 am Ответить с цитатой Вернуться к началу

000 писал(а):
Все очень просто. Первый стоп ставим функцией ApplyStop(), а второй обычным sell
Код:

ApplyStop(stopTypeLoss, stopModePoint, BuyPrice - L, ExitAtStop = 1);

Sell = L < IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);
SellPrice = IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);


Спасибо Вам, буду разбираться...
Посмотреть профиль Отправить личное сообщение
ZDN



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Вт Янв 25, 2011 4:35 pm Ответить с цитатой Вернуться к началу

Код:

ApplyStop(stopTypeLoss, stopModePoint, BuyPrice - L, ExitAtStop = 1);

Sell = L < IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);
SellPrice = IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);

Данный код работает как надо, но в ходе тестирования столкнулся с такой вот проблемкой: если минимум последующего бара после входа будет ниже чем ранее заданный скользящий стоп и первоначальный стоп(ApplyStop(stopTypeLoss, stopModePoint, BuyPrice - L, ExitAtStop = 1)), то выход происходит по цене ApplyStop(…), а не по скользящему стопу.
Пытался решить проблемку сам, но, видно, опыта маловато еще. Прошу помощи…
(картинку тоже прилагаю)

Есть еще один вопросик – почему в условии L < IIf(Buy, L, ((Ref(L, -1) + Ref(L, -2)) /2) - P), после Buy стоит L, ведь получается, что Buy – это у нас открытая покупка (Buy=1) и соответственно левая часть неравенства должна сравниваться с L… (хотя всё работает) В чем здесь у меня ошибка в понимании?
Crying or Very sad
Посмотреть профиль Отправить личное сообщение
Teema



Зарегистрирован: 01.04.2009
Сообщения: 184

СообщениеДобавлено: Вт Янв 25, 2011 7:03 pm Ответить с цитатой Вернуться к началу

кратко

Sell = L < IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);

т.е. если L<L то продажа.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Teema



Зарегистрирован: 01.04.2009
Сообщения: 184

СообщениеДобавлено: Вт Янв 25, 2011 7:08 pm Ответить с цитатой Вернуться к началу

И еще IIF(buy,.....
это IIF(Buy==1,...
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Teema



Зарегистрирован: 01.04.2009
Сообщения: 184

СообщениеДобавлено: Вт Янв 25, 2011 7:10 pm Ответить с цитатой Вернуться к началу

Teema писал(а):
кратко

Sell = L < IIf(Buy, L, (Ref(L, -1) + Ref(L, -2))/2);

т.е. если L<L то продажа.


Так, понял. на этот случай APPLY.

BuyPrice-L Это минимум предыдущей свечи? В APPLY?
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Teema



Зарегистрирован: 01.04.2009
Сообщения: 184

СообщениеДобавлено: Вт Янв 25, 2011 7:21 pm Ответить с цитатой Вернуться к началу

А как ты отделяешь вход от сигнала на вход? И стрелочка по какому принципу рисуется?
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZDN



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Вт Янв 25, 2011 7:38 pm Ответить с цитатой Вернуться к началу

Teema писал(а):
А как ты отделяешь вход от сигнала на вход? И стрелочка по какому принципу рисуется?


у меня сигнал поступает при выполнении условия и сразу на той же свече рассчитывается значение для входа - величина ценника. По моей системе, сам вход осуществляется уже на следующей свечке. Но, так как я еще зеленый в Ami, у меня стрелки входа на графике показаны чуть раньше и в отчете тестера стоит не тот бар, где я вхожу, а тот, где сигнал. Так вот у меня получилось, но всё работает по отчету, так как мне надо… вот только бы со стопом еще всё утрясти. Smile
Посмотреть профиль Отправить личное сообщение
Teema



Зарегистрирован: 01.04.2009
Сообщения: 184

СообщениеДобавлено: Вт Янв 25, 2011 8:33 pm Ответить с цитатой Вернуться к началу

те входишь на открытии?
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZDN



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Вт Янв 25, 2011 8:41 pm Ответить с цитатой Вернуться к началу

Teema писал(а):
те входишь на открытии?


при достижении расчитанного ценника (уровня)
Посмотреть профиль Отправить личное сообщение
Teema



Зарегистрирован: 01.04.2009
Сообщения: 184

СообщениеДобавлено: Вт Янв 25, 2011 8:51 pm Ответить с цитатой Вернуться к началу

Давай поштучно разберемся. Потом и админ подтянетсяSmile
Поступает сигнал на покупку. На следующем баре ты входишь если H>расчетный уровень?
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZDN



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Вт Янв 25, 2011 9:12 pm Ответить с цитатой Вернуться к началу

Teema писал(а):
Давай поштучно разберемся. Потом и админ подтянетсяSmile
Поступает сигнал на покупку. На следующем баре ты входишь если H>расчетный уровень?


на следующем баре вхожу если H>уровня, ну и логично, что L<расчетного уровня. если всё ок... то дальше всё как я описал выше, т.е. дальше работает только стоп.

код такой на вход: buy = signal1 > signal2 AND ref(h, 1) > uroven AND ref(l, 1) < uroven ; buypriсe = uroven; проскальзывание не учитываю пока.

так то у мя проблем с определением цены в тестере нет, только вот надо будет как то перенести указатель стрелки входа для полного порядка на свечку вперед, где я покупаю.
Посмотреть профиль Отправить личное сообщение
Teema



Зарегистрирован: 01.04.2009
Сообщения: 184

СообщениеДобавлено: Вт Янв 25, 2011 9:30 pm Ответить с цитатой Вернуться к началу

А я о чем? Ref(H,1)>uroven
Это заглядывание вперед. Это значит я покупаю сейчас, если хай будущего бара больше уровня. Если включить BarReplay увидишь. Просто надо все условия правильно записывать если хочешь реальный результат получить.
Ref(H,0)>uroven или просто Н>u...

buy = signal1 > signal2 AND H > uroven ; buypriсe = max(O,uroven);
Так попробуй.
А L может потом стать < но потом ты по uroven не войдешь!
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZDN



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Вт Янв 25, 2011 9:44 pm Ответить с цитатой Вернуться к началу

Teema

спасибо за помощь, обязательно попробую... Smile тогда получается, что мне нужно еще записать первое условие так: ref(signal1,-1)>ref(signal2,-1), да?
ведь у меня первое условие появляется баром раньше, а потом уже идет проверка на H и L на баре, где уже сам вход в рынок.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen