Hi, Ja, Ja, so ist das mir den kleinen Anfragen... das verwende ich für so was. Bei jedem Tick aufrufen. Davor guckst Du noch, ob Orders vorhanden sind. Die Variablen (CheckAmount und MagicNo) musst Du anpassen:
---------------------------------------------------------
void CheckOpenOrdersAll()
{
double profit = 0;
for (int i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol())
{
profit += OrderProfit();
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
}
if (profit > CheckAmount)
{
CloseOrders();
}
}
void CloseOrders(int type=-1)
{
bool select,close,del;
for(int i=OrdersTotal()-1;i>=0;i--)
{
select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&Order MagicNumber()==MagicNo)
{
if(OrderType()==type||type==-1)
{
if(OrderType()==OP_BUY){close=OrderClose(OrderTick et(),OrderLots(),NormalizeDouble(Bid,Digits),4*Pip Value*Point);}
if(OrderType()==OP_SELL){close=OrderClose(OrderTic ket(),OrderLots(),NormalizeDouble(Ask,Digits),4*Pi pValue*Point);}
if(OrderType()>OP_SELL){del=OrderDelete(OrderTicke t());}
}
}
}
}
---------------------------------------------------------
Grüße
|