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

Рейтинг 2156



РЕКОМЕНДУЮ



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

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

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

Брокер для ваших роботов, 15 лет на рынке

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

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

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

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

  35  AM2 Сообщений: 16537 - Андрей

  • 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

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