Главная » Статьи » Форекс - Торговля » Бот-Советник

Советник - "0" убытка по двум ордерам

Советник - "0" убытка по двум ордерам.

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


#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
extern int ticket_1=0;
extern int ticket_2=0;
double profit_1 , profit_2;
double profit;
bool work=true;
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  //---------------- 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

//---++++++++++++++++++++++++++
if(ticket_1<=0 || ticket_2<=0 )
      {Comment("Введите верно номера ордеров !! ");
    stop();}
    else{work = true;}
if(work){ 
 for(int i=0; i<OrdersTotal(); i++){
      if(OrderSelect(ticket_1,SELECT_BY_TICKET ,MODE_TRADES)==true) 
        profit_1 = OrderProfit()+OrderSwap();
        } 
         //else Alert("Ордер №1 не найден!"); 
  for(int i=0; i<OrdersTotal(); i++){     
      if(OrderSelect(ticket_2,SELECT_BY_TICKET,MODE_TRADES)==true) 
        profit_2 = OrderProfit()+OrderSwap(); 
         //else Alert("Ордер №2 не найден!");
    }
  profit = profit_1 + profit_2;
  if(profit>0){
     if(profit_1>profit_2){ CloseOrs(ticket_2); CloseOrs(ticket_1);}
       else { CloseOrs(ticket_1); CloseOrs(ticket_2);}  
   }
   Comment (ticket_1,"  ",ticket_2,
   " Убыток =  ",profit); 
  }
//+------------------------------------------------------------------+
}
//===============================================
void CloseOrs(double ticket) {
    int slippage=8; 
   for(int i=0; i<OrdersTotal(); i++){
      if(OrderSelect(ticket,SELECT_BY_TICKET ,MODE_TRADES)==true){ 
        if (OrderType()==OP_BUY) 
        OrderClose(OrderTicket(),OrderLots(),Bid,slippage);
             
      if (OrderType()==OP_SELL)      
         OrderClose (OrderTicket(),OrderLots(),Ask,slippage);
      }
    }
    Alert("Достигнут 0 убыток по двум ордерам!");
}

// End
void  stop(){
 work=false; }

 

 


 



Источник: http://для достижения суммарного нулевого профита
Категория: Бот-Советник | Добавил: mayorment (25.03.2018) | Автор: для достижения суммарного нулевого
Просмотров: 165 | Теги: для достижения. суммарного. нулевог
Всего комментариев: 0
avatar

Сайт создан для помощи тем, кто делает первые шаги в программировании.

- автор идеи Кузьма Кузин

Возможность бесплатного доступа ко всем материалам и скриптам.

-совместная работа с группой молодых программистов

Срипты для автоматического заработка на SEO сайтах.

- для всех пользователей всё по цене в 1 EUR