4. Если условия пересечения выполнились, то позиции открытые ранее по данному инструменту необходимо закрыть:
If IsCrossDown Or WasclosedBuy=True Then Begin For cnt=l To TotalTrades Begin
Проверка наличия открытых позиций, которые необходимо закрыть:
, If OrderValue(cntVAL SYMBOL)=Syrabol And
OrderValue(cnt,VAL TYPE)=OP BUY Then Begin P- CloseOrder (Ordervalue (cnt, VAL TICKET) ,
OrderValue(cnt,VAL LOTS), Ask,, 3, Violet);
работа ещё не закончена - после закрытия длинных позиций нужно будет ещё открыть короткую позицию:
WasClosedBuy-True; - j:. - (\
можно выполнить только одну операцию, поэтому выходим: Exit;
End;
все длинные позиции закрыты:
но необходимо для надёжности выдержать 30 секунд. Это обусловлено тем, что советник запускается со следующей пришедшей в информационный терминал MetaTrader цеиы, а закрытие/открытие позиций совершается по получению цены от принципала. Таким образом, может сложиться ситуация, когда для советника придет следующая цена, а для совершения сделки цена от принципала еще не придет. Советник воспримет приход цены как Открытие/закрытие позиции, которого в реальности еще не произошло;
У. If CurTime-LastTradeTime < 30 Then Begin Щ
print («Wait up to 30 seconds please»} ; jVjl
5. Могло не быть ни одной позиции, предназначенной для закрытия, поэтому переменной WasClosedBuy установим True для того, чтобы при следующем запуске у советника была информация о том, что ему необходимо открыть новую позицию
WasClosedBuy=True; Exit;
End;
Wa5ClosedBuy=Faise;
If IsCrossDown Then Begin можно открываться в друг>-ю сторону SetOrder(OP SELL,1,Bid,3,0,О, RED); Exit;
End;
End;
If IsCrossUp or WasClosedSell=True Then Begin
оставшиеся короткие позиции по этому же инструменту нужно закрыть:
For cnt=l то TotalTrades Begin
If OrderValue(cnt,VAL SYMBOL)-Symbol And
OrderValue(cnt,VAL TYPE)=OP SELL Then Begin CloseOrder(OrderValue(cnt, VAL TICKET),
OrderValue(cnt,VAL LOTS), Bid, 3, Violet); WasClosedSell-True; Exit;
End;
End;
все короткие позиции закрыты
If CurTime-LastTradeTime < 30 Then Begin print(«Wait up to 30 seconds piease»); WasClosedSell=True; Exit;
End;
WasClosedSell-False;
можно открываться в другую сторону:
If IsCrossUp Then SetOrder(OP BUY,Lots.Ask,3,0,0,Green); End;
Еще раз про задержку в 30 сек. в п. 4 и 5. Для тестирования, строго говоря, задержка вообще не нужна, поскольку начало работы советника и открытие/ закрьЕтие позиции происходят по одной и той же цене, пришедшей в информационный терминал. При реальной торговле, когда советник начинает работу по цене пришедшей в информационный терминал, а открь[тие/закры-тие позиций происходит по цене принципала - что не одно и то же,- длительность задержки необходимо подгонять под особенности принципала. Например, при работе принципала в режиме instant execution задержка в 30 сек вполне достаточна.
pert Advisor
Sewings I Slrategy Teste j Report ГЕфНУР?).1
31300 | | | | | | | | | | |
2Э567 | | | | | | | | | | |
| | | | | | | | | |
| | | | | ......~* | | | | |
19633 1S71I | | | | | AT* . - | | | | | |
| | | | • •4-i..... | | * " > | | - •- | |
117Э4 | | | | | | | | | | |
| | | | | | | | | |
78S6 1 ЗЭ28 | loooo":" | ...v.- . | | • Ч » * | .. .\ . ..... . J. . | | | - • . • • • . | |
| |
2* Б6 B4 Lll m !«. W4 7?l J4S W6 364 331 S- 3S7 414 44? SS
J Cancel I
Рис. 85. График изменения доходности при использораини метода Пересечение МЛ и ходе letioDoii торгопли. Тестирпвапие проподилос!» на временном интерпалс липлрь 2()((3 - !П1парь20(И i-. Решения об открытии низицнн при1имал1с1. иа осисриеапа.)1иза предыдущего 6<ipa на часоиых графиках.