Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что MQL5 является объектно-ориентированным языком?
bountyhunter
127
bountyhunter 2012.10.16 19:11 
Еффект тот что тестер открывает только Buy позиции не смотря на условия Sellесли поменять местами то только Sell

нужно что бы он открывал Buy или Sell по условию закрытия предыдущей сделки по ТП или по СЛ

Вот код

extern int TP=5;

extern int SL=5;

extern double lot=0.1;


int start()

{

int r=1,t=2;

int total=OrdersTotal();

if (total>0)

return;

if (closeTP(r)==true)

OrderSend (Symbol(),OP_BUY,lot,Ask,3,Bid-SL*Point,Bid+TP*Point,"Окрыта позиция на покупку",0,0,0);

if (closeTP(r)==false)

OrderSend (Symbol(),OP_SELL,lot,Bid,3,Ask+SL*Point,Ask-TP*Point,"Окрыта позиция на продажу",0,0,0);

return(0);

}

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

bool closeTP (bool pos)


{

int b=OrdersHistoryTotal();

for (int a=0;a<b;a++)

{

if (a<b)

continue;

OrderSelect (a, SELECT_BY_POS, MODE_HISTORY);

}

if (OrderTakeProfit()==OrderClosePrice() && OrderType()==OP_BUY)

bool buy=true;

if (!OrderTakeProfit()==OrderClosePrice() && OrderType()==OP_BUY)

buy=false;

if (OrderTakeProfit()==OrderClosePrice() && OrderType()==OP_SELL)

bool sell=true;

if (!OrderTakeProfit()==OrderClosePrice() && OrderType()==OP_SELL)

sell=false;

if (buy==true && sell==false)

pos=true;

if (buy==false && sell==true)

pos=false;

return(pos);

Victor Nikolaev
Модератор
14040
Victor Nikolaev 2012.10.17 00:49  
bool closeTP (bool pos)
{

   int b=OrdersHistoryTotal();

   for (int a=0;a<b;a++)
   {
      if (a<b)
         continue;
      OrderSelect (a, SELECT_BY_POS, MODE_HISTORY);
   }
OrderSelect() никогда не сработает
bountyhunter
127
bountyhunter 2012.10.17 08:10  
R
Vinin:
OrderSelect() никогда не сработает

Как ето

 for (int a=0;a<b;a++)   //Запускаем цикл перебора ордеров в истории
   {
      if (a<b)		// Если а (текущий выбраный ордер) меньше чем b (всего ордеров)
         continue	//запустить цикл заново дот ех пор пока a   не будет равно b

OrderSelect (a, SELECT_BY_POS, MODE_HISTORY); //если а равно b тоесть выбран последний ордер то выбрать его с помощью ордер селекта

почему не сработает

bountyhunter
127
bountyhunter 2012.10.17 08:12  

а все все я понял

я перепутал continue с break

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий