Помогите пожалуйста со скриптом.
Здравствуйте Дамы и Господа, в программировании я новичок и поэтому прошу помощи в одном из скриптов. Суть скрипта в том чтобы он находил открытые ордера отдельно SELL отдельно BUY и модифицировал их под общий тейк-профит и при срабатывании этого тейк-профита закрывались все ордера одного направления. В этом скрипте почему то не закрываются ордера и модифицируется тейк-профит только последнего ордера. Что в нем может быть не так?:
double Bprice=0;
double Blots=0;
double Bsum=0;
for (int n=0; n<buyk; n++)
{
if (OrderSelect(n,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY)
{
Blots=Blots+OrderLots();
Bsum=Bsum+OrderLots()*OrderOpenPrice();
}
if (Blots!=0) Bprice=Bsum/Blots;
if (Bprice>0 )
Bprice = NormalizeDouble(Bprice+level*Point,Digits);
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES) == true && OrderType() == OP_BUY && buyk>1)
OrderModify(buy,OrderOpenPrice(),0,Bprice,0,Red);
}
double Sprice=0;
double Slots=0;
double Ssum=0;
for ( int e=0; e<sellk; e++)
{
if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_SELL)
{
Slots=Slots+OrderLots();
Ssum=Ssum+OrderLots()*OrderOpenPrice();
}
if (Slots!=0) Sprice=Ssum/Slots;
if (Sprice>0 )
Sprice = NormalizeDouble(Sprice-level*Point,Digits);
if(OrderSelect(e,SELECT_BY_POS,MODE_TRADES) == true && OrderType() == OP_SELL && sellk>1)
OrderModify(sell,OrderOpenPrice(),0,Sprice,0,Red);
}
double sss,bbb;
for (int b=ksb; b>0; b--)
{sss= NormalizeDouble(Bid,Digits);
bbb= NormalizeDouble(Ask,Digits);
if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES )== true && OrderType() == OP_BUY && OrderCloseTime()>0)
OrderClose(OrderTicket(),OrderLots(),bbb,3,Red);}
for (int v=ksb; v>0; v--)
{if (OrderSelect(v,SELECT_BY_POS,MODE_TRADES )== true && OrderType() == OP_SELL && OrderCloseTime()>0)
OrderClose(OrderTicket(),OrderLots(),sss,3,Red);}
Здравствуйте Дамы и Господа, в программировании я новичок и поэтому прошу помощи в одном из скриптов. Суть скрипта в том чтобы он находил открытые ордера отдельно SELL отдельно BUY и модифицировал их под общий тейк-профит и при срабатывании этого тейк-профита закрывались все ордера одного направления. В этом скрипте почему то не закрываются ордера и модифицируется тейк-профит только последнего ордера. Что в нем может быть не так?:
double Bprice=0;
double Blots=0;
double Bsum=0;
for (int n=0; n<buyk; n++)
{
if (OrderSelect(n,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY)
{
Blots=Blots+OrderLots();
Bsum=Bsum+OrderLots()*OrderOpenPrice();
}
if (Blots!=0) Bprice=Bsum/Blots;
if (Bprice>0 )
Bprice = NormalizeDouble(Bprice+level*Point,Digits);
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES) == true && OrderType() == OP_BUY && buyk>1)
OrderModify(buy,OrderOpenPrice(),0,Bprice,0,Red);
}
double Sprice=0;
double Slots=0;
double Ssum=0;
for ( int e=0; e<sellk; e++)
{
if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_SELL)
{
Slots=Slots+OrderLots();
Ssum=Ssum+OrderLots()*OrderOpenPrice();
}
if (Slots!=0) Sprice=Ssum/Slots;
if (Sprice>0 )
Sprice = NormalizeDouble(Sprice-level*Point,Digits);
if(OrderSelect(e,SELECT_BY_POS,MODE_TRADES) == true && OrderType() == OP_SELL && sellk>1)
OrderModify(sell,OrderOpenPrice(),0,Sprice,0,Red);
}
double sss,bbb;
for (int b=ksb; b>0; b--)
{sss= NormalizeDouble(Bid,Digits);
bbb= NormalizeDouble(Ask,Digits);
if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES )== true && OrderType() == OP_BUY && OrderCloseTime()>0)
OrderClose(OrderTicket(),OrderLots(),bbb,3,Red);}
for (int v=ksb; v>0; v--)
{if (OrderSelect(v,SELECT_BY_POS,MODE_TRADES )== true && OrderType() == OP_SELL && OrderCloseTime()>0)
OrderClose(OrderTicket(),OrderLots(),sss,3,Red);}
Последнее редактирование модератором: