Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарегистрируйся на MQL5.community, чтобы оставлять комментарии!
luxerman
113
luxerman 2016.07.19 10:12 
Чтобы один ордер запускался я поставил. Как сделать чтобы после срабатывания стоплосс советник выключался?
Vladimir Paukas
4099
Vladimir Paukas 2016.07.19 11:53  
luxerman:
Чтобы один ордер запускался я поставил. Как сделать чтобы после срабатывания стоплосс советник выключался?

Навсегда?
LRA
317
LRA 2016.07.19 12:45  
luxerman:   советник выключался
ExpertRemove()
luxerman
113
luxerman 2016.07.19 17:41  
paukas:

Навсегда?
Да навсегда, чтоб потом только при нажатии на эксперта запускался
luxerman
113
luxerman 2016.07.19 17:41  
LRA:
ExpertRemove()
Этот вариант не работает, эксперт все равно перезапускается
LRA
317
LRA 2016.07.19 18:50  
luxerman:   Этот вариант не работает, эксперт все равно перезапускается
Как это перезапускается? Скорей всего, вызов этой функции не производится
Попробуйте до и после вызова этой функции вставить алерты:
Alert("Выгружаем эксперт");
ExpertRemove();

Alert("Выгрузка произведена. Смотрим, что будет");

Или приложите код, посмотрю

Ну вот, получилось!

luxerman
113
luxerman 2016.07.20 12:08  
LRA:
Как это перезапускается? Скорей всего, вызов этой функции не производится
Попробуйте до и после вызова этой функции вставить алерты:
Alert("Выгружаем эксперт");
ExpertRemove();

Alert("Выгрузка произведена. Смотрим, что будет");

Или приложите код, посмотрю

Ну вот, получилось!

Работает можете еще подсказать чтоб при срабатывании стоплосс включалась эта функция ExpertRemove()(происходил выход, а не запускался еще раз ордер);

if(BuyCnt == 0)//запуск только одного ордера
{

ticket = OrderSend(Symb, OP_BUY, 1.0, Ask, 3, StopLossLevel, 0, "First expert");

}

if(OrderSelect(ticket, SELECT_BY_POS)==true){
       double stopper = OrderStopLoss();   //стоплосс этого ордера
          if(Price <= stopper){     //Price это Bid, тут условие если B
              ExpertRemove();
            }
          }

При таком варианте эта функция не срабатывает

Boeing747
241
Boeing747 2016.09.19 17:35  
luxerman:

Работает можете еще подсказать чтоб при срабатывании стоплосс включалась эта функция ExpertRemove()(происходил выход, а не запускался еще раз ордер);

if(BuyCnt == 0)//запуск только одного ордера
{

ticket = OrderSend(Symb, OP_BUY, 1.0, Ask, 3, StopLossLevel, 0, "First expert");

}

if(OrderSelect(ticket, SELECT_BY_POS)==true){
       double stopper = OrderStopLoss();   //стоплосс этого ордера
          if(Price <= stopper){     //Price это Bid, тут условие если B
              ExpertRemove();
            }
          }

При таком варианте эта функция не срабатывает

Она и не сработает. Потому что условие if(Price <= stopper) не срабатывает. Можешь сам проверить если вместо ExpertRemove(); влепишь Alert("SIGNAL");. Не дождешься сигнала. И вообще вместо Price лучше внедрить Bid предварительно обновив ее RefreshRates();.
Andrew Kornishkin
6669
Andrew Kornishkin 2016.09.20 06:26  
luxerman:
Чтобы один ордер запускался я поставил. Как сделать чтобы после срабатывания стоплосс советник выключался?

bool trade=true; ...

if(trade) PutOrder(0,Ask); ...

if(LastDealResult==2) trade=false;

//+------------------------------------------------------------------+
//| Результат последней сделки                                       |
//+------------------------------------------------------------------+
int LastDealResult()
  {
   int result=0;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderProfit()>0)
           {
            result=1;//tp  
           }
         if(OrderProfit()<0)
           {
            result=2;//sl  
           }
        }
     }
   return(result);
  }
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий