Автор |
Сообщение |
Дмитрий
Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов
|
Вот такую конструкцию можно использовать?
S=...;
S1=Ref(S,-BarsSince(Buy));
S2=Ref(S,-BarsSince(Short));
S3=IIf(Buy,S1,S2);
ApplyStop(stopTypeLoss, stopModePoint, S3, 1, True); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Сделать то можно почти все. За разрешение изменения уровня стопа отвечает 5-ый параметр (volatile)
А чтобы он изменялся по параметру на момент сделки запомние его
qqq = ValueWhen(Buy, параметр); |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Дмитрий
Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов
|
000 писал(а): |
Сделать то можно почти все. За разрешение изменения уровня стопа отвечает 5-ый параметр (volatile)
А чтобы он изменялся по параметру на момент сделки запомние его
qqq = ValueWhen(Buy, параметр); |
почему то не правильно работает функция IIF
Вот при такой конструкции
S=...;
q1=ValueWhen(Buy,S);
q2=ValueWhen(Short,S);
S3=IIf(Buy,q1,q2);
ApplyStop(stopTypeLoss, stopModePoint, S3, 1, True);
правильно считаются только шорты а баи нет. Соответственно если заменить S3=IIf(Short,q2,q1) будут правильно считаться баи. а шорты нет. Не подскажите в чем здесь ошибка? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Дмитрий
Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов
|
Вопрос снимается. Нашел решение. надо использовать
S3=IIf(BarsSince(Buy)<BarsSince(Short),q1,q2); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
AmiTrt
Зарегистрирован: 01.06.2011
Сообщения: 90
|
Дмитрий писал(а): |
Вот при такой конструкции
S=...;
q1=ValueWhen(Buy,S);
q2=ValueWhen(Short,S);
...
|
Не понял - а зачем такой огород городить из q1 и q2, если в данном коде можно просто S использовать без привлечения q1, q2 - ?? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Действительно. Если в случаях Buy и Short были разные стопы... А так можно просто
Код: |
s = ValueWhen(Buy OR Short, S); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AmiTrt
Зарегистрирован: 01.06.2011
Сообщения: 90
|
Дмитрий писал(а): |
Вопрос снимается. Нашел решение. надо использовать
S3=IIf(BarsSince(Buy)<BarsSince(Short),q1,q2); |
Наткнулся на один баг с похожей конструкцией - на первой сделке, приходящейся на первые(глобально среди всех периодов) bar может не сработать и выдать неопределенный стоп.
Чтобы и там корректно сработало - добавить условие-пустышку надо:
S3=IIf(BarsSince(Buy)<BarsSince(Short) OR false,q1,q2) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|