Автор |
Сообщение |
myaucha
Зарегистрирован: 22.08.2010
Сообщения: 19
|
Провожу анализ трех баров и проверяю, чтобы тот, что посерединке, был выше тех, что справа и слева от него. При этом пишу так, чтобы не заглядывать в будущее
v_res = ref(H,-2) < ref(H,-1) and ref(H,-1) > H;
Средний бар - это ref(H,-1)
Моя задача пометить этот бар. В приведенном выше условии единичка будет проставлена не на этом баре, а на следующем.
Если я напишу
v_res = ref(v_res,1)
то сдвину единичку на средний бар, но вроде как заглядываю при этом в будущее. Как же правильно написать такое простое условие? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
myaucha
Зарегистрирован: 22.08.2010
Сообщения: 19
|
То ли вопрос я очень сложный задал, то ли очень простой... но ответа нет... интересует решение без for (...), а чисто на массивах |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ничего сложного. Просто я вопрос пропустил.
Если тебе надо для теста, то не надо сдвигать "единичку". Пусть будет на следующем баре. Все равно узнаешь ты о том, что этот бар удовлетворяет условию только после того как сформируется следующий. А если просто на график для удобства и красоты, то сдвинь. Ничего страшного. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
_ok
Зарегистрирован: 12.04.2010
Сообщения: 29
|
Я запутался немного с этим сдвигом, хотел уточнить. ref(C,-1) это сдвиг на один бар с текущего или с предыдущего завершенного бара?
например есть код для тестера (бары дневные)
lokmin = C < Ref(C,-1)AND Ref(C,-1)< Ref(C,-2);
он означает что текущий клоуз меньше вчерашнего клоуза и вчерашний меньше позавчерашнего и заглядывает таким образом в будущее, т.к. сегодняшний клоуз мы еще не знаем
или что вчерашний завершенный клоуз меньше позавчерашнего а позавчерашний меньше чем 2 дня назад
и далее ссылаюсь на хай последнего бара в этой последовательности
BuyLevel = ValueWhen(lokmin , High,1);
как правильно написать вход в покупку
Buy = Ref (Cross (H, BuyLevel),-1);
или просто
Buy = Cross (H, BuyLevel);
И еще если использовать хай вместо клозе ситуация изменится или нет? |
_________________ Олег. Будем знакомы. |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
_ok писал(а): |
Я запутался немного с этим сдвигом, хотел уточнить. ref(C,-1) это сдвиг на один бар с текущего или с предыдущего завершенного бара?
например есть код для тестера (бары дневные)
lokmin = C < Ref(C,-1)AND Ref(C,-1)< Ref(C,-2);
он означает что текущий клоуз меньше вчерашнего клоуза и вчерашний меньше позавчерашнего и заглядывает таким образом в будущее, т.к. сегодняшний клоуз мы еще не знаем |
Тут важно разделять тест и работу в реальном времени.
Если тест, то имеется в виду, что смотрим в конце текущего периода и закрытие уже известно. Таким образо подглядывания нет.
_ok писал(а): |
или что вчерашний завершенный клоуз меньше позавчерашнего а позавчерашний меньше чем 2 дня назад
|
А такой подход лучше годится для работы в реале. Чтобы не ловить конец бара и не совершать сделку в последние секунды торговли бара проще перенести сигнал на открытие следующего бара. Но в таком случае при тесте и цену сделки надо ставить Open
_ok писал(а): |
и далее ссылаюсь на хай последнего бара в этой последовательности
BuyLevel = ValueWhen(lokmin , High,1);
|
А почему на последний? Ничто не мешает сослаться на средний (самый нижний)
_ok писал(а): |
как правильно написать вход в покупку
Buy = Ref (Cross (H, BuyLevel),-1);
или просто
Buy = Cross (H, BuyLevel);
И еще если использовать хай вместо клозе ситуация изменится или нет? |
Первый вариант сделка по закрытию. Второй по открытию следующего бара.
В реале если сделка осуществляется не по Open/Close а именно по цене уровня BuyLevel надо использовать H. Фигня в том, что если H уровень пересек, то ниже он уже никак не станет. А клозе может уйти выше и потом снова опуститься. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
_ok
Зарегистрирован: 12.04.2010
Сообщения: 29
|
Спасибо, кое что в голове прояснятся.
Но есть несколько вопросов. Пишу я пока для тестера и получается у меня, что вот такой код смещает исполнение сделки аж на два бара в перед, т.е. если сегодня сигнал то сделка исполнится только послезавтра (бары дневные).
Buy = Ref (Cross (H, BuyLevel),-1);
Чтобы сделка исполнилась завтра нужно писать без Ref
Buy = Ref (H, BuyLevel);
А вот чтобы войти сегодня на текущем баре по цене клозе или BuyLevel (соответственно выставляю нужную цену) нужно написать
Buy = Ref (Cross (H, BuyLevel),1); - но ведь здесь заглядывание в будущее. Что я неправильно делаю?
И еще несколько вопросов
- в тестере лучше пользоваться SetTradeDelays или Ref,
- можно ли их использовать вместе |
_________________ Олег. Будем знакомы. |
|
Посмотреть профиль Отправить личное сообщение |
|
_ok
Зарегистрирован: 12.04.2010
Сообщения: 29
|
Блииин, понял почему такие задержки у меня, в тестере потому что задержки установлены. |
_________________ Олег. Будем знакомы. |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|