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



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

СообщениеДобавлено: Вт Апр 05, 2011 11:44 am Ответить с цитатой Вернуться к началу

Как бы по проще задать такое вот выражение? Question

Объясню:
Имеем 2 (...3,4-10) параметра, допустим
Х=Хай больше прошлого Хая
и
Y=Лой больше прошлого Лоя

Теперь нужно, что бы сделка открывалась когда Х>0 и Y>0, а так же, когда X>0 но Y<0 или X<0 и Y>0.

Т.е. когда исполняется только одно и/или второе условие.

Конечно, желательно без циклов. По простому... Wink


Последний раз редактировалось: Alex (Вт Апр 05, 2011 7:37 pm), всего редактировалось 3 раз(а)
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

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

Не уверен, может так покатит Question
Только непонятно когда к какому условию применять меньше нуля. Оно или выполняется или нет. Если выполняется, ставим 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ить массивы как нить, но я не знаю как Smile
Посмотреть профиль Отправить личное сообщение ICQ Number
Alex



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

СообщениеДобавлено: Вт Апр 05, 2011 2:37 pm Ответить с цитатой Вернуться к началу

spitfire писал(а):
Не уверен, может так покатит Question
Только непонятно когда к какому условию применять меньше нуля. Оно или выполняется или нет. Если выполняется, ставим 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ить массивы как нить, но я не знаю как Smile


Ну вот почти то...
А теперь представь, что этих условий 10штук Exclamation
Запаришься же все комбинации переписывать Laughing

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


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

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

Если надо чтобы получалась истина если выполняется хоть одно из условий то
A = B OR C OR D...;

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



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

СообщениеДобавлено: Ср Апр 06, 2011 3:46 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Если надо чтобы получалась истина если выполняется хоть одно из условий то
A = B OR C OR D...;


А если в один момент B и D, но без С, а потом наоборот D и С, но без В.
Как тут быть?

А вот еще вопрос -
Как в тестере и в реале задать открытие сделки по закрытию бара?
Просто, Buy=C and X...Y...Z ???
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Апр 06, 2011 3:54 pm Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Ср Апр 06, 2011 5:11 pm Ответить с цитатой Вернуться к началу

000 писал(а):
A = B OR C OR D;
сработает если в любой момент хоть один из B, C или D выполняется.
Цена сделки задается функцией BuyPrice, SellPrice, ShortPrice, CoverPrice.
Покупка по цене закрытия будет так
Код:
Buy = ...; // правила когда совершить сделку
Buyrice = Close; // по цене закрытия.


Нет. Я имел ввиду именно ОТКРЫТИЕ по ЗАКРЫТИЮ.
Понимаешь, такая проблема, если пишешь
Код:
  Buy=L>MA

То он "заглядывает в будущее" т.к. если прошлый С>MA, то на открытии следующего бара, его Лой будет всегда больше средней, но потом, во время формирования бара, он может и зайти за МА.
Если задать в условиях Открытие сделки по закрытию бара, то этого можно избежать, т.к. все уже будет видно... Wink
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Апр 06, 2011 5:26 pm Ответить с цитатой Вернуться к началу

Ясно.
Тогда просто переносишь сигнал на следующий бар.
Если для теста то можно или в настройках АА или settradedelays()
При этом цену исполнения сделки ставь Open
А для робота
Buy = Ref(Buy, -1);

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



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

СообщениеДобавлено: Ср Апр 06, 2011 6:20 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Ясно.
Тогда просто переносишь сигнал на следующий бар.
Если для теста то можно или в настройках АА или settradedelays()
При этом цену исполнения сделки ставь Open
А для робота
Buy = Ref(Buy, -1);


Если я правильно понял SetTradeDelays, то он должен открывать сделку на открытии следующего бара, если на прошлом баре все условия выполнились.
Если так, тогда не помогает это Laughing .
Рисует тоже самое... Rolling Eyes

ЗЫ.
Я задал
Buy=C>O OR C<O;
Мне кажется это будет тоже?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Alex писал(а):

Если я правильно понял SetTradeDelays, то он должен открывать сделку на открытии следующего бара, если на прошлом баре все условия выполнились.
Если так, тогда не помогает это Laughing .
Рисует тоже самое... Rolling Eyes

SetTradeDelays на рисование не влияет. Влияет на тестер. Я написал, что это только для теста. Сместить можно на сколько угодно. Если SetTradeDelays(1, 1, 1, 1); то сместить ся на один бар.
Alex писал(а):

ЗЫ.
Я задал
Buy=C>O OR C<O;
Мне кажется это будет тоже?

А смысл? Ты написал купить если всечка белая или черная (т.е. в любом случае)... Sad

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



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

СообщениеДобавлено: Чт Апр 07, 2011 12:26 pm Ответить с цитатой Вернуться к началу

000 писал(а):

Alex писал(а):

ЗЫ.
Я задал
Buy=C>O OR C<O;
Мне кажется это будет тоже?

А смысл? Ты написал купить если всечка белая или черная (т.е. в любом случае)... Sad


Ну смысл в том, что бы сделка начиналась считаться и рисоваться только по закрытию бара. Не раньше.
Мне показалось это верным вариантом.
Хотя, наверно еще можно написать С>0 (нуля)?

И еще, вдогонку. Smile
Как сделать такую вещь Question :
Если сделка была профитной и мы заработали, допустим ХХХ пунктов на ней, то на сегодня больше не открываем сделок. Ну а если меньше ХХХ или убыток, то пробуем дальше.
Сенкс. Wink
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Апр 07, 2011 12:34 pm Ответить с цитатой Вернуться к началу

Alex писал(а):

Ну смысл в том, что бы сделка начиналась считаться и рисоваться только по закрытию бара. Не раньше.
Мне показалось это верным вариантом.
Хотя, наверно еще можно написать С>0 (нуля)?

Сделть так, чтобы робот открывал сделку именно в момент закрытия практически не реально. По умолчанию в роботе сделано так, чтобы он открывал сделку сразу в момент открытия следующего бара. Это практически закрытие бара на котором сигнал.
Alex писал(а):

И еще, вдогонку. Smile
Как сделать такую вещь Question :
Если сделка была профитной и мы заработали, допустим ХХХ пунктов на ней, то на сегодня больше не открываем сделок. Ну а если меньше ХХХ или убыток, то пробуем дальше.
Сенкс. Wink

В принципе можно, но это не просто...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen