Закрытие Buy совпадает с критерием открытия Sell и наоборот

 

Всем добрый день!

Я новичек в программировании, но попытался составить простенький советник на основе Stochastic. Принцип в том, чтобы постоянно быть на рынке, то есть, при закрытии Buy должен открываться Sell и наоборот. Но этого, к сожалению, не происходит.

Не могли бы вы мне помочь и показать где кроется ошибка?

Спасибо!

Файлы:
 
Коллега у тебя в журнале в тестере ошибка 130 (2012.09.05 22:12:39 2012.09.04 13:50 _Stochastic EURUSD,M5: OrderSend error 130
), попрообуй нормализовать стоплос и тэйк (NormalizeDouble(stopBB,Digits), это первовое, второе: если это не поможет, то тогда брокер не дает покупать по рынку с установленными стоп и тэйком, выход=> покупать с нулевыми стоп тэйками, а потом модифицировать открытый ордер.
 

Спасибо, dmitriy086!

1. Нормализация ни к чему не привела (есть вероятность, что я просто неумело нормализовал).

2. Нулевые стопы и тэйки тоже не дали видимого результата.

3. Я попробовал изменить следующие строки:


OrderSend(Symbol(),OP_BUY,Lots,Ask,OpenSlippage,Bid-StopLoss*Point,Bid+TakeProfit*Point,"",0,0,Green); 

OrderSend(Symbol(),OP_SELL,Lots,Bid,OpenSlippage,Ask+StopLoss*Point,Ask-TakeProfit*Point,"",0,0,Green); 

4. Получилось следующее:


OrderSend(Symbol(),OP_BUY,Lots,Ask,OpenSlippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green); 

OrderSend(Symbol(),OP_SELL,Lots,Bid,OpenSlippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",0,0,Green); 


Ошибка пропала.

5. В итоге получается, что если я совершаю покупку (по Ask), стопы тоже должны быть в Ask, а если я совершаю продажу (по Bid), стопы, соответственно, тоже должны быть в Bid.

Неужели запрещено выставлять стопы при покупке, например, в Bid (и наоборот)?

Спасибо.

 

А так:

OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble (Ask, Digits),OpenSlippage,NormalizeDouble (Bid-StopLoss*Point, Digits),NormalizeDouble (Bid+TakeProfit*Point, Digits),"",0,0,Green); 

OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble (Bid, Digits),OpenSlippage,NormalizeDouble (Ask+StopLoss*Point, Digits),NormalizeDouble (Ask-TakeProfit*Point, Digits),"",0,0,Green); 
не работает?
 

Спасибо, TarasBY!

Так работает.

Причина обращения: