Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 След. |
Автор |
Сообщение |
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Спасибо !!! Вот еще вопрос.Вот написал код. Условие- если разница между текущим параболиком и sar_100 более 200 (цена выше параболика), тогда запоминаем хай свечи как уровень входа. И, если любая следующая свеча этот хай пересекает до конца текущего параболика, тогда входим в шорт. Но он почему-то неправильно считает. Пример на скриншоте. Берет не текущий Parab, а самую верхнюю точку, когда уже произошло следующее пересечение. Тут по условиям вообще входа быть не должно.
Код: |
Parab = SAR( 0.02, 0.2 );
SAR_100 = ValueWhen( Cross(O,Parab), Ref(Parab, -1));
EnterShort=ValueWhen((Parab-SAR_100)>=200 AND TradeTime AND H!=Parab AND C>Parab,H);
EnterShort=IIf(O>Parab,EnterShort,Null);
Short = Cross(H,EnterShort) AND C>Parab;
ShortPrice = EnterShort;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Предыдущий вопрос все еще актуален. И еще вопрос. Как закодить, если сигналы на вход наступают в разное время - сначала один, чуть позже другой ? Например, средние пересеклись, а параболик еще не перескочил. Т.е. входим в позицию в момент пересечения параболика, учитывая, что пересечение произошло только когда цена была ниже параболика. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Т.е. входим в позицию в момент пересечения параболика, учитывая, что пересечение произошло только когда цена была ниже параболика. |
Как это? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
000 писал(а): |
Цитата: |
Т.е. входим в позицию в момент пересечения параболика, учитывая, что пересечение произошло только когда цена была ниже параболика. |
Как это? |
Имел ввиду, произошло пересечение средних, когда цена была ниже параболика. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
Cond1 = O < Parab;
Cond2 = Cross(MA1, Ma2);
Short = Cond1 AND Cond2; |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Олег, подскажи по пирамидингу. Для примера возьмем простое условие. Если цена под параболиком, то покупаем на каждой свечке по 1 контракту (максимум 5). Если до следующего перескока параболика менее 5 свечей, тогда покупаем только по кол-ву свечей. Написал такой код
Код: |
SetPositionSize(1, 5);
Buy1 = (Cross(Parab,O) OR Ref(Cross(Parab,O),-1) OR Ref(Cross(Parab,O),-2) OR Ref(Cross(Parab,O),-3) OR Ref(Cross(Parab,O),-4)) AND O<Parab;
Sell=Cross(O,Parab) OR TimeNum()==184359 OR TimeNum()==234859;
SellPrice=C;
Pos = Flip(Buy1, Sell);
Buy = IIf(Buy1 AND Ref(Pos, -1) == 0, 1, IIf(Buy1, sigScaleIn, 0));
BuyPrice=C;
|
Вроде работает. Но есть два вопроса.
1) А как сделать, чтобы входить на разных свечах разным числом контрактов. Например, на первой свече входим 2 контрактами, на второй еще 2 и на третьей оставшимся одним ?
2) Почему в детейлет лог показывает одно, а в трейд листе другое. Т.е. была сделка на 4 свечи (4 контракта). Детейлет лог показывает 4 сделки (1 бай и 3 скейл аут), а вот в трейд листе я вижу почему-то 5 контрактов и профит на 5 контрактов. И в трейд листе цена входа указана не средняя по всем контрактам, а только цена закрытия первой свечи, на которой входили. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
1) А как сделать, чтобы входить на разных свечах разным числом контрактов. Например, на первой свече входим 2 контрактами, на второй еще 2 и на третьей оставшимся одним ?
|
Типа так
Код: |
SetPositionSize(IIf( Ref(Cross(Parab,O),-1), 2, 1), 5); |
Цитата: |
2) Почему в детейлет лог показывает одно, а в трейд листе другое. Т.е. была сделка на 4 свечи (4 контракта). Детейлет лог показывает 4 сделки (1 бай и 3 скейл аут), а вот в трейд листе я вижу почему-то 5 контрактов и профит на 5 контрактов. И в трейд листе цена входа указана не средняя по всем контрактам, а только цена закрытия первой свечи, на которой входили.
|
У тебя в коде вообще нету SigScaleOut. Я вообще не понимаю как он может его показывать. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Не получается. Этот код
Код: |
SetPositionSize(IIf( Ref(Cross(Parab,O),-1), 2, 1), 5);
Buy1 = (Cross(Parab,O) OR Ref(Cross(Parab,O),-1) OR Ref(Cross(Parab,O),-2) OR Ref(Cross(Parab,O),-3) OR Ref(Cross(Parab,O),-4)) AND O<Parab;
Sell=Cross(O,Parab) OR TimeNum()==184359 OR TimeNum()==234859;
SellPrice=C;
Pos = Flip(Buy1, Sell);
Buy = IIf(Buy1 AND Ref(Pos, -1) == 0, 1, IIf(Buy1, sigScaleIn, 0));
BuyPrice=C;
|
Все равно докидывает по одному контракту. На каждой свечке. Я тут немного упростил задачу. На первой свечке после перескока параболика (цена под параболиком) входим в лонг 3 контрактами, на второй свечке после перескока еще 2. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Чета я не обратил сразу внимания.
Вот тут
Код: |
SetPositionSize(1, 5); |
У тебя 5. ЭТО ЧТО? Там 5 вообще никогда быть не должно. Поставь 4 и все заработает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
000 писал(а): |
Чета я не обратил сразу внимания.
Вот тут
Код: |
SetPositionSize(1, 5); |
У тебя 5. ЭТО ЧТО? Там 5 вообще никогда быть не должно. Поставь 4 и все заработает. |
Да, я это сам догнал, что надо 4 ставить. Тогда правильно все. Добирает по одному контракту на каждой свече. А если нужно 3 контракта на первой свече и 1 на второй ? Всего 4. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
SetPositionSize(IIf( Cross(Parab, O), 3, 1), 4); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
000 писал(а): |
Код: |
SetPositionSize(IIf( Cross(Parab, O), 3, 1), 4); |
|
Нет, все равно добирает по 1 контракту. Что-то в коде не так, не пойму.
Код: |
Buy1 = (Cross(Parab,O) OR Ref(Cross(Parab,O),-1)) AND O<Parab;
Sell=Cross(O,Parab) OR TimeNum()==184359 OR TimeNum()==234859;
SellPrice=C;
Pos = Flip(Buy1, Sell);
Buy = IIf(Buy1 AND Ref(Pos, -1) == 0, 1, IIf(Buy1, sigScaleIn, 0));
BuyPrice=C;
SetPositionSize(IIf( Cross(Parab, O), 3, 1), 4);
|
нужно 3 контракта на первой свече и 1 на второй. Всего 4. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну. Открывает 3 контракта и потом добирает по 1 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Привет, Олег !
Вот код
Код: |
Parab = SAR( 0.02, 0.2 );
SAR_1 = ValueWhen( Cross(Parab, O), Ref(Parab, -1));
BuyLevel=...
Buy = Cross(EnterLong,L) AND O<Parab AND SAR_1>ref(SAR_1,-1);
|
Ситуация видна на графике. Под SAR2 имел ввиду ref(SAR_1,-1). В общем, если пересечение свечи и BuyLevel (красной линии) происходит на первой свечи после перескока параболика (где SAR_1), тогда покупает. А если на последующих свечах, то не покупает, потому что ref(SAR_1,-1) уже стал другим. Т.е. как обратиться к прошлому значению SAR_1 в такой ситуации ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм
Вот тут
Код: |
... AND O<Parab AND SAR_1>ref(SAR_1,-1)
|
O<Parab Значит параболик выше цены. В таком случае он всегда идет вниз.
дальше.
SAR_1>ref(SAR_1,-1) Значит парабоик растет.
Не кажется, что это взаимоисключающие условия? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|