Как открыть несколько позиций, и закрыть их одновременно

 
Как открыть несколько позиций, и закрыть их одновременно

Народ!!!! помогите, я чесно продолбался над эьтим целый день, но чото не получается, видно ручки немного кривоваты.

Хочется при одном условии открывать позицию, при другом накидывать еще( сколько раз 2ое условие сработает, столько и накинется), а при 3ем условии закрыть все позиции и открытся в другую сторону.

Доумничал я до того, чтооно у меня закрывает несколькао позиций, и начинает открывать в другую сторону, но держит открытыми в противоположную.

Всем спасибо!!!!!
 
из эксперта нельзя одновременно открывать и закрывать несколько позиций
за один раз Вы можете произвести только одну торговую операцию. читайте на нашем сайте про Expert Advisors
 
вот пример, как закрыть все позиции и открыться в противоположную сторону

/*[[
Name := MA20 cross
Author := Copyright © 2003, Metaquotes Software Corp
Link := https://www.metaquotes.net/
Lots := 1.00
Stop Loss := 0
Take Profit := 0
Trailing Stop := 0
]]*/

Variables: PrevTime(0);
Variables: MaCurrent(0),MaPrevious(0);
Variables: cnt(0),WasClosedSell(False),WasClosedBuy(False);

If PrevTime=Time And WasClosedSell=False And WasClosedBuy=False Then exit;
PrevTime=Time;

MaCurrent=iMA(20,MODE_SMA,1);
MaPrevious=iMA(20,MODE_SMA,2);

If (Close[2]>MaPrevious And Close[1]<MaCurrent And WasClosedSell=False) Or WasClosedBuy=True Then Begin
If Close[2]>MaPrevious And Close[1]<MaCurrent then print(TimeToStr(Time)," - Close crosses down MA20")
Else print(TimeToStr(Time)," - Some buy trades is to be closed");
if CurTime-LastTradeTime < 30 then Begin
print("Wait up to 30 seconds please");
Exit;
End;
For cnt=1 to TotalTrades Begin
If OrderValue(cnt,VAL_SYMBOL)=Symbol And
OrderValue(cnt,VAL_TYPE)==OP_BUY Then Begin
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,3,Violet);
WasClosedBuy=True;
Exit; // close only 1 order at same time! and exit
End;
End;
WasClosedBuy=False;
If Close[2]>MaPrevious And Close[1]<MaCurrent then Begin
SetOrder(OP_SELL,1,Bid,3,0,0,RED);
Exit;
End;
End;

If (Close[2]<MaPrevious And Close[1]>MaCurrent) Or WasClosedSell=True Then Begin
If (Close[2]<MaPrevious And Close[1]>MaCurrent) then print(TimeToStr(Time)," - Close crosses up MA20")
Else print(TimeToStr(Time)," - Some sell trades is to be closed");
if CurTime-LastTradeTime < 30 then Begin
print("Wait up to 30 seconds please");
Exit;
End;
For cnt=1 to 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; // close only 1 order at same time! and exit
End;
End;
WasClosedSell=False;
// open position at next time
If (Close[2]<MaPrevious And Close[1]>MaCurrent) then SetOrder(OP_BUY,Lots,Ask,3,0,0,GREEN);
End;
 
почему не работает
почему этот эксперт не работает на демосчете на одноминутном графике