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



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

СообщениеДобавлено: Вт Сен 29, 2009 2:21 pm Ответить с цитатой Вернуться к началу

Подскажите пожалуйста, можно ли поставить стоп так, чтобы при покупке он был расположен ниже уровня SS, скажем на 1 % и дальнейший выход из сделки произошел либо при срабатывании стопа, либо при появлении реверсного сигнала на продажу. Аналогично в обратную сторону, стоп выше уровня dd. В данном случае выход из сделок происходит преждевременно.
a = Param("ma",25,3,50,1);
b = Param("ma1",47,3,50,1);
S = Param("%Price",1,0.1,5,0.1);
Opt1=Optimize("ma",15,5,70,5);
Opt2=Optimize("ma1",28,4,100,8);
Opt3=Optimize("S",1.6,0.5,5,0.1);
Stop = C * Param("SSS",1,0.5,2.5,0.5)/100;
Cond1 = Cross(MA(C,Opt1),MA(C,Opt2));
Cond2 = Cross(MA(C,Opt2),MA(C,Opt1));
F = Flip(Cond1,Cond2);
ss = ValueWhen(Cond1,C,1) + Opt3*ValueWhen(Cond1,C,1)/100;
dd = ValueWhen(Cond2,C,1) - Opt3*ValueWhen(Cond2,C,1)/100;
SSS = ss - stop;
DDD = dd + stop;
Buy = F==1 AND Cross(C,SS);
Sell = (F==0 AND Cross(dd,C)) OR Cross(SSS,L);
SellPrice = IIf(Cross(SSS,L),SSS,C);
Short = F==0 AND Cross(dd,C);
Cover = (F==1 AND Cross(C,SS)) OR Cross(H,DDD);
CoverPrice = IIf(Cross(H,DDD),DDD,C);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Сен 29, 2009 4:06 pm Ответить с цитатой Вернуться к началу

Вот ненадо всех этих заморочек. Гораздо проще и приятнее поставить стопы при помощи AppyStop()
Код:

a = Param("ma",25,3,50,1);
b = Param("ma1",47,3,50,1);
S = Param("%Price",1,0.1,5,0.1);
Opt1=Optimize("ma",15,5,70,5);
Opt2=Optimize("ma1",28,4,100,8);
Opt3=Optimize("S",1.6,0.5,5,0.1);
 
Buy = Cover = Cross(MA(C,Opt1),MA(C,Opt2));
Sell = Short = Cross(MA(C,Opt2),MA(C,Opt1));
ApplyStop(stopTypeLoss, stopModePercent, Opt3, 1, Volatile = False);


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



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

СообщениеДобавлено: Вт Сен 29, 2009 5:08 pm Ответить с цитатой Вернуться к началу

А все же можно так сделать или нет, или сложно? Не усну Shocked . Я не акцентирую внимание на самих скользящих, система может быть различной. Здесь цель убрать лишние сигналы, особенно в период тренда и мне кажется что это может неплохо работать.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Сен 29, 2009 7:32 pm Ответить с цитатой Вернуться к началу

В принципе можно. И похоже в коде ошибочка
Вот это
Код:

ss = ValueWhen(Cond1,C,1) + Opt3*ValueWhen(Cond1,C,1)/100;

Похоже собственно уровень стопа
А зачем потом?
Код:

SSS = ss - stop;


Или я не понял логику системы.... Sad

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



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

СообщениеДобавлено: Вт Сен 29, 2009 8:09 pm Ответить с цитатой Вернуться к началу

Условие:
Купить, если выполняется условие Cond1, появляется уровень SS на 0,5 % выше свечи соответствующей пробитию, покупка по цене закрытия свечи, пробившей этот уровень. Стоп ставится на 1 % ниже уровня SS, а не от цены закрытия.
Посмотреть профиль Отправить личное сообщение
DMITRY



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

СообщениеДобавлено: Вт Сен 29, 2009 9:08 pm Ответить с цитатой Вернуться к началу

ss - это % на который необходимо поднять уровень после Cond1
SSS - это сигнал на продажу имитирующий стоп 1 % ниже уровня, но проблема в том что он выкидывает из сделки раньше времени, т.к находит соответствующие комбинации.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Сен 29, 2009 9:49 pm Ответить с цитатой Вернуться к началу

Ага. Вроде понял. Ну давай разберем твой код.
Вобщем при покупке мы фиксируем некий уровень выше цены покупки
Код:
ss = ValueWhen(Cond1,C,1) + Opt3*ValueWhen(Cond1,C,1)/100;

и от него отнимаем размер стопа
Код:

Stop = C * Param("SSS",1,0.5,2.5,0.5)/100;

который не оптимизируем, а задаем параметром.
При этом размер стопа меняется динамически т.к. зависит от С которая всегда разная.
С точки зрения логики не совсем понятно т.к. при покупке если С растет, то стоп отодвигается вниз.
С другой стороны если зафиксировать размер стопа по С в момент покупки то вообще всякий смысл пропадает т.к. сперва прибавляем к цене покупки фиксированный %, а затем отнимаем опять фиксированный %.
Еще нюанс. Срабатывание стопа написано через Cross(). Эта функция подразумевает пересечение. Т.е. если в момент постановки стопа L сразу был ниже уровня стопа, то никаких гарантий, что стоп сработает нет т.к. нет пересечения. По идее надо просто сравнивать уровни
Код:
L < SSS

Еще.
При оптимизации уровня ss он может меняться от 0,5 до 5 %, При этом размер стопа отнимаемый от этого уровня может быть
Код:
Param("SSS", 1, 0.5, 2.5, 0.5)/100;

максимум 2,5
Т.е. в некоторых вариантах оптимизации стоп будет сразу выше уровня покупки.
Я бы сделал по другому
Код:
Stop = C * Param("SSS", 1.01, 1.01, 2, 0.01)* S/100;

чтобы гарантировать, что стоп будет ниже уровня.

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



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

СообщениеДобавлено: Вт Сен 29, 2009 11:20 pm Ответить с цитатой Вернуться к началу

Не совсем так, покупка происходит при пересечении С уровня SS, построенного от С свечи подтверждающей верность условия Cond1. Смысл: лучше купить немного попозже, но зато пропустить незначительные откаты. Проблема в том чтобы поставить стоп ниже уровня SS. Если стоп поставить по С, то при его срабатывании выше уровня SS я могу пропустить очередное пересечение С уровня SS и упустить тренд. Прописанный в этой системе стоп не однозначен, т.к. работает не совсем правильно, закрывает позицию преждевременно. Попробую поставить вопрос по новому. Что надо сделать, чтобы при покупке стоп выставлялся ниже уровня SS, при продаже выше уровня DD, а не от цены закрытия.

a = Param("ma",25,3,50,1);
b = Param("ma1",47,3,50,1);
S = Param("%Price",1,0.1,5,0.1);
Opt1=Optimize("ma",15,5,70,5);
Opt2=Optimize("ma1",28,4,100,8);
Opt3=Optimize("S",1.6,0.1,5,0.1);
Cond1 = Cross(MA(C,Opt1),MA(C,Opt2));
Cond2 = Cross(MA(C,Opt2),MA(C,Opt1));
F = Flip(Cond1,Cond2);
ss = ValueWhen(Cond1,C,1) + Opt3*ValueWhen(Cond1,C,1)/100;
dd = ValueWhen(Cond2,C,1) - Opt3*ValueWhen(Cond2,C,1)/100;
Buy = F==1 AND Cross(C,SS);
Sell = F==0 AND Cross(dd,C);
Short = F==0 AND Cross(dd,C);
Cover = F==1 AND Cross(C,SS);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Сен 29, 2009 11:33 pm Ответить с цитатой Вернуться к началу

А стоп нужен динамичский (изменяется со временем) или как поставили так и стоит?

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



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

СообщениеДобавлено: Ср Сен 30, 2009 7:48 am Ответить с цитатой Вернуться к началу

Как поставили и стоит, либо сработал. либо сигнал на продажу.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Сен 30, 2009 10:46 pm Ответить с цитатой Вернуться к началу

a = Param("ma",25,3,50,1);
b = Param("ma1",47,3,50,1);
S = Param("%Price",1,0.1,5,0.1);
Opt1=Optimize("ma",15,5,70,5);
Opt2=Optimize("ma1",28,4,100,Cool;
Opt3=Optimize("S",1.6,0.5,5,0.1);

Cond1 = Cross(MA(C,Opt1),MA(C,Opt2));
Cond2 = Cross(MA(C,Opt2),MA(C,Opt1));

ss = ValueWhen(Cond1, C, 1)*(1 + Opt3/100);
dd = ValueWhen(Cond2, C, 1)*(1 - Opt3/100);

F = Flip(Cond1,Cond2);

Buy = F == 1 AND Cross(C, SS);
Short = F = 0 AND Cross(dd, C);

Stop = Param("SSS",1,0.5,2.5,0.5);

SSS = ValueWhen(Cond1, C, 1)*(1 + Opt3 - Stop/100);
DDD = ValueWhen(Cond1, C, 1)*(1 + Opt3 + Stop/100);

Sell = Short OR L < SSS;
SellPrice = IIf(Short, C, SSS);

Cover = Buy OR H > DDD;
CoverPrice = IIf(Buy, C, DDD);


//////////////////////
Или гораздо проще так
//////////////////////
a = Param("ma",25,3,50,1);
b = Param("ma1",47,3,50,1);
S = Param("%Price",1,0.1,5,0.1);
Opt1=Optimize("ma",15,5,70,5);
Opt2=Optimize("ma1",28,4,100,Cool;
Opt3=Optimize("S",1.6,0.5,5,0.1);

Cond1 = Cross(MA(C,Opt1),MA(C,Opt2));
Cond2 = Cross(MA(C,Opt2),MA(C,Opt1));

ss = ValueWhen(Cond1, C, 1)*(1 + Opt3/100);
dd = ValueWhen(Cond2, C, 1)*(1 - Opt3/100);

F = Flip(Cond1,Cond2);

Buy = Cover = F == 1 AND Cross(C, SS);
Short = Sell = F == 0 AND Cross(dd, C);

Stop = Param("SSS",1,0.5,2.5,0.5);

ApplyStop(0, 1, Stop, 1, false);

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



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

СообщениеДобавлено: Чт Окт 01, 2009 5:23 pm Ответить с цитатой Вернуться к началу

Спасибо, испытаю, отпишусь.
Посмотреть профиль Отправить личное сообщение
DMITRY



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

СообщениеДобавлено: Чт Окт 08, 2009 12:45 pm Ответить с цитатой Вернуться к началу

Идею написанного уловил, но к сожалению должного результата так и не получается.
1-й код я немного поправил, если правильно понял лучше так,
SSS = ValueWhen(Cond1, C, 1)*(1 + Opt3/100)*(1 - Stop/100);
DDD = ValueWhen(Cond2, C, 1)*(1 + Opt3/100)*(1 + Stop/100);
Но проблема в том что этот код находит в дальнейшем схожие комбинации и выкидывает из сделки немного раньше времени.
Я не профи в АФЛ, можно немного пояснить на какой % выставляется стоп
Stop = Param("SSS",1,0.5,2.5,0.5);
Не совсем понимаю суть данного выражения. По умолчанию стоит 1, а в системе данные провалы игнорируются. Аналогичная ситуация во втором коде, получается стоп 5%. Поставил:
Opt4=Optimize("stop",1,0.5,6,0.5);
Не получается необходимого результата, много лишнего.
Надо чтобы стоп выставлялся строго после покупки/продажи только 1 раз, на установленный % ниже/выше соответствующего уровня, если он срабатывает но позже цена пересекает снова тот же уровень, то он должен выставиться на том же месте, не более, и выход из сделки произойти при появлении сигнала в обратном направлении, с последующим выставлением соответствующего стопа.
Как я себе представляю должен выставляться обычный стоп, как во втором коде
ApplyStop(0, 1, ?, 1, False);
Только 3-й параметр содержать условие приравнивающее CLOSE(Buy/Sell) к пересеченному уровню и от него выставлять %. Не понимаю как так сделать.
Возможно это или невозможно, в любом случае большое человеческое спасибо за диалог. Very Happy
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Окт 09, 2009 12:16 am Ответить с цитатой Вернуться к началу

Функция ApplyStop выставляет стоп от цены входа в сделку.
Если задана конкретная цена покупки BuyPrice, то % стопа (если стоп в %) считается именно от этой цены.
Таким образом получается что задав цену сделки BuyPrice и ShortPrice отличные от Close (например SS и DD) стоп будет считаться от этих уровней.

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



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

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

Но тогда и вход в сделку происходит на пересечении цены с SS и DD, а хотелось бы на Close. Rolling Eyes
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen