Автор |
Сообщение |
Alex
Зарегистрирован: 13.03.2011
Сообщения: 29
|
Как бы по проще задать такое вот выражение?
Объясню:
Имеем 2 (...3,4-10) параметра, допустим
Х=Хай больше прошлого Хая
и
Y=Лой больше прошлого Лоя
Теперь нужно, что бы сделка открывалась когда Х>0 и Y>0, а так же, когда X>0 но Y<0 или X<0 и Y>0.
Т.е. когда исполняется только одно и/или второе условие.
Конечно, желательно без циклов. По простому... |
Последний раз редактировалось: Alex (Вт Апр 05, 2011 7:37 pm), всего редактировалось 3 раз(а) |
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Не уверен, может так покатит
Только непонятно когда к какому условию применять меньше нуля. Оно или выполняется или нет. Если выполняется, ставим 1, если нет - 0.
Код: |
X=IIF(H>Ref(H,-1), 1, 0);
Y=IIF(L>Ref(L,-1), 1, 0);
Buy1 = IIF(X>0 AND Y>0, 1, 0);
Buy2 = IIF(X>0 AND Y<0, 1, 0);
Buy3 = IIF(X<0 AND Y>0, 1, 0);
Buy = IIF(Buy1>0 OR Buy2>0 OR Buy3>0, 1, 0);
|
Последняя строка как то криво выглядит, может можно XORить массивы как нить, но я не знаю как |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Alex
Зарегистрирован: 13.03.2011
Сообщения: 29
|
spitfire писал(а): |
Не уверен, может так покатит
Только непонятно когда к какому условию применять меньше нуля. Оно или выполняется или нет. Если выполняется, ставим 1, если нет - 0.
Код: |
X=IIF(H>Ref(H,-1), 1, 0);
Y=IIF(L>Ref(L,-1), 1, 0);
Buy1 = IIF(X>0 AND Y>0, 1, 0);
Buy2 = IIF(X>0 AND Y<0, 1, 0);
Buy3 = IIF(X<0 AND Y>0, 1, 0);
Buy = IIF(Buy1>0 OR Buy2>0 OR Buy3>0, 1, 0);
|
Последняя строка как то криво выглядит, может можно XORить массивы как нить, но я не знаю как |
Ну вот почти то...
А теперь представь, что этих условий 10штук
Запаришься же все комбинации переписывать
Нечто подобное нужно, но в одну-две строчки... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если надо чтобы получалась истина если выполняется хоть одно из условий то
A = B OR C OR D...; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex
Зарегистрирован: 13.03.2011
Сообщения: 29
|
000 писал(а): |
Если надо чтобы получалась истина если выполняется хоть одно из условий то
A = B OR C OR D...; |
А если в один момент B и D, но без С, а потом наоборот D и С, но без В.
Как тут быть?
А вот еще вопрос -
Как в тестере и в реале задать открытие сделки по закрытию бара?
Просто, Buy=C and X...Y...Z ??? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
A = B OR C OR D;
сработает если в любой момент хоть один из B, C или D выполняется.
Цена сделки задается функцией BuyPrice, SellPrice, ShortPrice, CoverPrice.
Покупка по цене закрытия будет так
Код: |
Buy = ...; // правила когда совершить сделку
Buyrice = Close; // по цене закрытия. |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex
Зарегистрирован: 13.03.2011
Сообщения: 29
|
000 писал(а): |
A = B OR C OR D;
сработает если в любой момент хоть один из B, C или D выполняется.
Цена сделки задается функцией BuyPrice, SellPrice, ShortPrice, CoverPrice.
Покупка по цене закрытия будет так
Код: |
Buy = ...; // правила когда совершить сделку
Buyrice = Close; // по цене закрытия. |
|
Нет. Я имел ввиду именно ОТКРЫТИЕ по ЗАКРЫТИЮ.
Понимаешь, такая проблема, если пишешь
То он "заглядывает в будущее" т.к. если прошлый С>MA, то на открытии следующего бара, его Лой будет всегда больше средней, но потом, во время формирования бара, он может и зайти за МА.
Если задать в условиях Открытие сделки по закрытию бара, то этого можно избежать, т.к. все уже будет видно... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ясно.
Тогда просто переносишь сигнал на следующий бар.
Если для теста то можно или в настройках АА или settradedelays()
При этом цену исполнения сделки ставь Open
А для робота
Buy = Ref(Buy, -1); |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex
Зарегистрирован: 13.03.2011
Сообщения: 29
|
000 писал(а): |
Ясно.
Тогда просто переносишь сигнал на следующий бар.
Если для теста то можно или в настройках АА или settradedelays()
При этом цену исполнения сделки ставь Open
А для робота
Buy = Ref(Buy, -1); |
Если я правильно понял SetTradeDelays, то он должен открывать сделку на открытии следующего бара, если на прошлом баре все условия выполнились.
Если так, тогда не помогает это .
Рисует тоже самое...
ЗЫ.
Я задал
Buy=C>O OR C<O;
Мне кажется это будет тоже? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Alex писал(а): |
Если я правильно понял SetTradeDelays, то он должен открывать сделку на открытии следующего бара, если на прошлом баре все условия выполнились.
Если так, тогда не помогает это .
Рисует тоже самое...
|
SetTradeDelays на рисование не влияет. Влияет на тестер. Я написал, что это только для теста. Сместить можно на сколько угодно. Если SetTradeDelays(1, 1, 1, 1); то сместить ся на один бар.
Alex писал(а): |
ЗЫ.
Я задал
Buy=C>O OR C<O;
Мне кажется это будет тоже? |
А смысл? Ты написал купить если всечка белая или черная (т.е. в любом случае)... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex
Зарегистрирован: 13.03.2011
Сообщения: 29
|
000 писал(а): |
Alex писал(а): |
ЗЫ.
Я задал
Buy=C>O OR C<O;
Мне кажется это будет тоже? |
А смысл? Ты написал купить если всечка белая или черная (т.е. в любом случае)... |
Ну смысл в том, что бы сделка начиналась считаться и рисоваться только по закрытию бара. Не раньше.
Мне показалось это верным вариантом.
Хотя, наверно еще можно написать С>0 (нуля)?
И еще, вдогонку.
Как сделать такую вещь :
Если сделка была профитной и мы заработали, допустим ХХХ пунктов на ней, то на сегодня больше не открываем сделок. Ну а если меньше ХХХ или убыток, то пробуем дальше.
Сенкс. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Alex писал(а): |
Ну смысл в том, что бы сделка начиналась считаться и рисоваться только по закрытию бара. Не раньше.
Мне показалось это верным вариантом.
Хотя, наверно еще можно написать С>0 (нуля)?
|
Сделть так, чтобы робот открывал сделку именно в момент закрытия практически не реально. По умолчанию в роботе сделано так, чтобы он открывал сделку сразу в момент открытия следующего бара. Это практически закрытие бара на котором сигнал.
Alex писал(а): |
И еще, вдогонку.
Как сделать такую вещь :
Если сделка была профитной и мы заработали, допустим ХХХ пунктов на ней, то на сегодня больше не открываем сделок. Ну а если меньше ХХХ или убыток, то пробуем дальше.
Сенкс. |
В принципе можно, но это не просто... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|