Вот так сейчас написал
for (i=0; i<=OrdersTotal()-1; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if ( (OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) )
{
int ot = OrderType();
double fir_op_pr = OrderOpenPrice();
if(ot==OP_BUY) prof = NormalizeDouble((Bid-fir_op_pr),Digits)/Point;
if (ot == OP_SELL) prof = NormalizeDouble((fir_op_pr-Ask),Digits)/Point;
breek;
}
}
}
Вместо ot = OrderType(); писал и if(OrderType()==OP_BUY)
if(OrderType()==OP_SELL)
все равно не то
Давайте подумаем заново а не проще ли сделать так?\
1 Стоп ордер
//+------------------------------------------------------------------+
void BuyStop1()
{
double ldStop=0, ldTake=0;
double pAsk=Ask+Delta*point;
//----
if (!ExistOrder(1)) {
if (StopLoss!=0) ldStop=pAsk-StopLoss*point;
if (TakeProfit!=0) ldTake=pAsk+TakeProfit*point;
SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake,1);
}
}
//+------------------------------------------------------------------+
void SellStop1()
{
double ldStop=0, ldTake=0;
double pBid=Bid-Delta*point;
//----
if (!ExistOrder(2)) {
if (StopLoss!=0) ldStop=pBid+StopLoss*point;
if (TakeProfit!=0) ldTake=pBid-TakeProfit*point;
SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake,2);
}
}
//+------------------------------------------------------------------+
bool ExistOrder(int mn) {
bool Exist=False;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic+mn) {
Exist=True; break;
}
}
}
return(Exist);
}
//+------------------------------------------------------------------+
void SetOrder(int op, double pp, double ldStop, double ldTake, int mn) {
color clOpen;
if (op==OP_BUYSTOP) clOpen=Blue;
else clOpen=Red;
OrderSend(Symbol(),op,Lots,pp,0,ldStop,ldTake,CommentOrder,Magic+mn,0,clOpen);
Sleep(10000);
RefreshRates();
}
//+------------------------------------------------------------------+
самый простой лучшего прогера Кима! и Не будет запарки