OrderModify и error 130 - моделирование по ценам открытия

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
kravs
131
kravs  
Учусь тестировать идеи. Такая ситуация. Текущий Bid = 1.3508. Открыта позиция на покупку. Нужно подтянуть SL к цене 1,3506. Срабатывает ошибка 130 (функция OrderModify пытается изменить SL слишком близко к текущей цене). Обращаю внимание, что метод моделирования: по ценам открытия. Как можно обойти эту ошибку?
khorosh
12498
khorosh  
Владимир Тезис
4266
Владимир Тезис  
kravs >>:
Учусь тестировать идеи. Такая ситуация. Текущий Bid = 1.3508. Открыта позиция на покупку. Нужно подтянуть SL к цене 1,3506. Срабатывает ошибка 130 (функция OrderModify пытается изменить SL слишком близко к текущей цене). Обращаю внимание, что метод моделирования: по ценам открытия. Как можно обойти эту ошибку?


Позиция на покупку открывается по Аску, а закрывается по Биду. Поэтому прежде всего нужно знать, что при подтягивании стопа нужно работать с ценой бид. 
Далее. Если, как Вы утверждаете, подтягивание происходит слишком близко к рынку, то сама логика ситуации подсказывает Вам решение - сначала проверить цену на предмет близости, потом подтягивать, если близость допустимая.
int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);
if(Bid-1.3506>=MinLevel*Point){
 ......... OrderModify()........
}
kravs
131
kravs  
drknn >>:


Позиция на покупку открывается по Аску, а закрывается по Биду. Поэтому прежде всего нужно знать, что при подтягивании стопа нужно работать с ценой бид.
Далее. Если, как Вы утверждаете, подтягивание происходит слишком близко к рынку, то сама логика ситуации подсказывает Вам решение - сначала проверить цену на предмет близости, потом подтягивать, если близость допустимая.


Это правильно, если тестировать по тикам (методы "все тики" или "контрольные точки"). А как быть, если тестирование осуществляется "по ценам открытия". Как я уже упомянул, 1,3508 - это цена открытия текущего бара.
int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);
if(Bid-1.3506>=MinLevel*Point){
 ......... OrderModify()........
}
Как здесь написано, произойдет сравнение, SL не подтянется, правильно. Теперь следующий запуск функции start() произойдет ЛИШЬ на цене открытия следующего бара (так как метод моделирования по ценам открытия). И SL не будет подтянут. А само тело текущего бара запросто может пробить уровень SL, который не был выставлен.
kravs
131
kravs  


Я прочел статью, но, к сожалению, ответ на свой вопрос не нашел.
techno
1226
techno  
kravs >>:


Я прочел статью, но, к сожалению, ответ на свой вопрос не нашел.

че там искать то? SL должен быть в дистанции большей или равной стоплевел(для каждого дц свое, измеряется в пунктах) от текущей цены

kravs
131
kravs  
Techno >>:

че там искать то? SL должен быть в дистанции большей или равной стоплевел(для каждого дц свое, измеряется в пунктах) от текущей цены

Да я понимаю :) . Но как выставить SL, когда цена открытия бара находится на дистанции меньшей или равной стоплевел при тестировании "ПО ЦЕНАМ ОТКРЫТИЯ"?

techno
1226
techno  
kravs >>:

Да я понимаю :) . Но как выставить SL, когда цена открытия бара находится на дистанции меньшей или равной стоплевел при тестировании "ПО ЦЕНАМ ОТКРЫТИЯ"?


если в коде не косячишь и не работает, значит никак. Тестируй все тики.

kravs
131
kravs  
Techno >>:

если в коде не косячишь и не работает, значит никак. Тестируй все тики.

Да наверняка существует способ обойти этот момент. Надеюсь, что все-таки мне здесь помогут советом. Тестировать все тики, когда они мне вообще не нужны (мне все-равно как ведет себя цена внутри бара), наверное, не целесообразно.



ПавелИванович
471
ПавелИванович  

Если Ваш советник и на реале не использует тики следующие после первого тика свечи - тогда никак, ни в реале, ни в тесте. А если использует, то прийдется Вам признать, что эти тики Вам как раз нужны.

Victor Nikolaev
Модератор
13985
Victor Nikolaev  

В любом случае контроль на STOP_LEVEL нужен. Без него никак. Иначе могут заблокировать работу советника.

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий