Группа "Стол заказов MQL"

Рейтинг 2088



РЕКОМЕНДУЮ



Мультивалютный советник «Hedge Martin» на ATR и стоповых ордерах на МТ5

Добрый день.
Прошу переписать советник www.opentraders.ru/downloads/3076/ под мт5 и сделать его мультивалютным.
Стратегия остается прежней.
  • 0
  • Просмотров: 1092
  • 31 октября 2021, 14:24
  • ssg
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Скрипт для МТ5
Следующая запись в группе  
Vertex WPR UO 4.5 AA MTF TT
29 октября 2021
31 октября 2021

Комментарии (7)

+
0
Просьба организовать закрытие по профиту как каждой пары отдельно, так и всего советника по общему профиту в целом.
Список пар определяет пользователь.
avatar

  16  ssg Автор Сообщений: 817

  • 31 октября 2021, 14:27
+
0
не берусь
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 31 октября 2021, 17:22
+
0
Понятно.
avatar

  16  ssg Автор Сообщений: 817

  • 31 октября 2021, 18:03
+
0
Может тогда перепишите на МТ5 этот советник:

//+------------------------------------------------------------------+
//|                                                Corel6 hetmap.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                       Corel6.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

extern string Symb1      = "EURUSD";
extern string Symb2      = "USDCHF";
extern double Delta_open =  0.5;  
extern double Delta_close=  0.2;

extern double Lot        = 1;        // лот
extern double Loss       = 2000;     // убыток
extern double Profit     = 100;      // профит
extern int Slip          = 111;      // реквот
extern int Magic         = 123;      // магик

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(string symb,int type,double price)
  {
   int r=0;
   int dg=(int)SymbolInfoInteger(symb,SYMBOL_DIGITS);

   color clr=Green;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(symb,type,Lot,NormalizeDouble(price,dg),Slip,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   int dig=0;
   string symb="";
   double bid=0,ask=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==Magic && (OrderSymbol()==Symb1 || OrderSymbol()==Symb2))
           {
            if(OrderType()==0)
              {
               symb=OrderSymbol();
               bid=MarketInfo(symb,MODE_BID);
               dig=(int)MarketInfo(symb,MODE_DIGITS);
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(bid,dig),Slip,White);
              }
            if(OrderType()==1)
              {
               symb=OrderSymbol();
               ask=MarketInfo(symb,MODE_ASK);
               dig=(int)MarketInfo(symb,MODE_DIGITS);
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(ask,dig),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double pr=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==Magic && (OrderSymbol()==Symb1 || OrderSymbol()==Symb2))
           {
            pr+=OrderProfit()+OrderCommission()+OrderSwap();
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==Magic && (OrderSymbol()==Symb1 || OrderSymbol()==Symb2))
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ask1=MarketInfo(Symb1,MODE_ASK);
   double ask2=MarketInfo(Symb2,MODE_ASK);

   double bid1=MarketInfo(Symb1,MODE_BID);
   double bid2=MarketInfo(Symb2,MODE_BID);
   
   double delta1=(iClose(Symb1,PERIOD_D1,0)/iClose(Symb1,PERIOD_D1,1)-1)*100;
   double delta2=(iClose(Symb2,PERIOD_D1,0)/iClose(Symb2,PERIOD_D1,1)-1)*100;
   double Delta=MathAbs(delta1-delta2);

   if(AllProfit()>Profit && Profit>0){
      CloseAll();
      Alert("Позиции закрыты по достижению советником прибыли :",Profit);
      }

   if(AllProfit()<-Loss && Loss>0){
      CloseAll();
     Alert("Позиции закрыты по достижению советником убытка :",Loss);
      }
         
   if(CountTrades()>=1 && Delta<Delta_close){
      CloseAll();
      Alert("Позиции закрыты по достижению советником минимального расхождения  :",Delta_close,"%");
      }
  
  
   if(CountTrades()<1)
     {
      if(Delta>Delta_open && delta1>delta2){
         PutOrder(Symb1,1,bid1);
         PutOrder(Symb2,0,ask2);
         Alert("Позиции открыты по достижению советником необходимого расхождения  :",Delta_open,"%");
         }
     if(Delta>Delta_open && delta1<delta2){ 
         PutOrder(Symb1,0,ask1);
         PutOrder(Symb2,1,bid2);
         Alert("Позиции открыты по достижению советником необходимого расхождения  :",Delta_open,"%");
         }
     }

   Comment(
   "\n",Symb1," ",DoubleToStr(delta1,2),"%",
   "\n",Symb2," ",DoubleToStr(delta2,2),"%",
   "\nDelta ",DoubleToStr(Delta,2),"%",
   "\nDelta_open ",Delta_open,"%",
   "\nDelta_close ",Delta_close,"%",
   "\n Profit : ",AllProfit());
  }
//+------------------------------------------------------------------+

avatar

  16  ssg Автор Сообщений: 817

  • 31 октября 2021, 18:46
+
0
avatar

  12  Slava78 Сообщений: 598

  • 1 ноября 2021, 07:38
+
0
Спасибо, Слава.Посмотрел.Мне кажется код слишком избыточен.Надо править.
Подожду что скажет Андрей.Если откажется значит нужно будет уделить время, разобраться и написать самому.
avatar

  16  ssg Автор Сообщений: 817

  • 1 ноября 2021, 09:25
+
0
Заказ снимается.Написал сам.
avatar

  16  ssg Автор Сообщений: 817

  • 1 ноября 2021, 16:00

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари