Ай нид хелп

 

Написал советник который открывает одновременно две позиции в разные стороны, но появилась проблема: немогу отследить закрытие всех своих ордеров и соответственно дать команду на торговлю. В данной версии лоты выставляются с каждым тиком. Цель: Выставить два ордера, как оба сработали - опять выставляем два ордера.


//+------------------------------------------------------------------+
extern int StopLoss = 10;
extern int TakeProfit = 20;
extern int magicnumber = 777;
extern double lot = 0.1;


int start()
{
int a = 0;

for(int z=0; z<=OrdersTotal(); z++) // перебираем все ордера
{
if(OrderMagicNumber() == magicnumber) // если маг номер совпал - считаем кол-во наших ордеров
{
a++; // сколько наших ордеров
}
}
if (a ==0) // если после перебора ордеров наших ордеров нет - торгуем
{
OrderSend(Symbol(),OP_BUY,lot,Ask,1,Bid-StopLoss*Point,Bid+TakeProfit*Point,"Doubler BUY",magicnumber,0,Green);
OrderSend(Symbol(),OP_SELL,lot,Bid,1,Ask+StopLoss*Point,Ask-TakeProfit*Point,"Doubler SELL",magicnumber,0,Red);
}
return(0);
}

//+------------------------------------------------------------------+

 
Metathron писал(а) >>

Написал советник который открывает одновременно две позиции в разные стороны, но появилась проблема: немогу отследить закрытие всех своих ордеров и соответственно дать команду на торговлю. В данной версии лоты выставляются с каждым тиком. Цель: Выставить два ордера, как оба сработали - опять выставляем два ордера.


//+------------------------------------------------------------------+
extern int StopLoss = 10;
extern int TakeProfit = 20;
extern int magicnumber = 777;
extern double lot = 0.1;


int start()
{
int a = 0;

for(int z=0; z<=OrdersTotal(); z++) // перебираем все ордера
{
if(OrderMagicNumber() == magicnumber) // если маг номер совпал - считаем кол-во наших ордеров
{
a++; // сколько наших ордеров
}
}
if (a ==0) // если после перебора ордеров наших ордеров нет - торгуем
{
OrderSend(Symbol(),OP_BUY,lot,Ask,1,Bid-StopLoss*Point,Bid+TakeProfit*Point,"Doubler BUY",magicnumber,0,Green);
OrderSend(Symbol(),OP_SELL,lot,Bid,1,Ask+StopLoss*Point,Ask-TakeProfit*Point,"Doubler SELL",magicnumber,0,Red);
}
return(0);
}

//+------------------------------------------------------------------+

Похоже несколько советников на разные графики повесили, а магик им не поменяли просто.

 
//+------------------------------------------------------------------+
extern int StopLoss = 10;
extern int TakeProfit = 20;
extern int magicnumber = 777;
extern double lot = 0.1;


int start()
{
int a = 0;

for(int z=0; z<=OrdersTotal(); z++) // перебираем все ордера !!! ОШИБКА - надо z<OrdersTotal()
{
 OrderSelect(z, SELECT_BY_POS, MODE_TRADES); // !!!! вы ЗАБЫЛИ взять ордер
if(OrderMagicNumber() == magicnumber) // если маг номер совпал - считаем кол-во наших ордеров
{
a++; // сколько наших ордеров
}
}
if (a ==0) // если после перебора ордеров наших ордеров нет - торгуем
{
OrderSend(Symbol(),OP_BUY,lot,Ask,1,Bid-StopLoss*Point,Bid+TakeProfit*Point,"Doubler BUY",magicnumber,0,Green);
OrderSend(Symbol(),OP_SELL,lot,Bid,1,Ask+StopLoss*Point,Ask-TakeProfit*Point,"Doubler SELL",magicnumber,0,Red);
}
return(0);
}

//+------------------------------------------------------------------+