Как начать работу с MQL5 - страница 25

 
Ahmad861 :

Привет, Владимир, ты помогал мне создать советника с самого начала и ничего не просил взамен, и я хочу поблагодарить тебя от всего сердца. Есть одна последняя вещь, с которой мне нужна помощь, я торгую на нескольких таймфреймах, M5, M15, M30, H1. В настоящее время я запускаю мультитаймфреймы в цикле, мне нужно, чтобы если у меня есть установка в M5, я хочу знать, что M15 также сформировал новую свечу, другими словами, открытие M5 должно быть равно открытию M15. Я перепробовал много способов, но теперь мне нужна профессиональная помощь.

Просто определите следующее событие: на М15 родилась новая свеча. Это автоматически означает: родилась свеча 'M15' и родилась свеча 'M5'.


Верификация:

//+------------------------------------------------------------------+
//|                                        Two Candles Open Time.mq5 |
//|                              Copyright © 2021, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2021, Vladimir Karputov"
#property version   "1.00"
//--- input parameters
input int      Input1=9;
//---
datetime m_prev_bars_m5             = 0;        // "0" -> D'1970.01.01 00:00';
datetime m_prev_bars_m15            = 0;        // "0" -> D'1970.01.01 00:00';
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   datetime time_m5_0=iTime(Symbol(),PERIOD_M5,0);
   if(time_m5_0!=m_prev_bars_m5)
     {
      Print("new M5, ",TimeToString(time_m5_0,TIME_DATE|TIME_MINUTES));
      m_prev_bars_m5=time_m5_0;
     }
   datetime time_m15_0=iTime(Symbol(),PERIOD_M15,0);
   if(time_m15_0!=m_prev_bars_m15)
     {
      Print("new M15, ",TimeToString(time_m15_0,TIME_DATE|TIME_MINUTES));
      m_prev_bars_m15=time_m15_0;
     }
  }
//+------------------------------------------------------------------+


Результат:

2021.05.21 17:14:20.229 2021.04.16 00:35:00   new M5, 2021.04.16 00:35
2021.05.21 17:14:20.474 2021.04.16 00:40:00   new M5, 2021.04.16 00:40
2021.05.21 17:14:20.618 2021.04.16 00:45:00   new M5, 2021.04.16 00:45
2021.05.21 17:14:20.618 2021.04.16 00:45:00   new M15, 2021.04.16 00:45
Файлы:
 
Vladimir Karputov:

Просто определите следующее событие: на M15 родилась новая свеча. Это автоматически означает: родилась свеча 'M15' и родилась свеча 'M5'.


Верификация:


Результат:

Спасибо

 

Пример: как подсчитать количество сделок BUY и SELL для каждого магического числа за текущий день

Код: 'Total transactions today by Magic number.mq5'

//+------------------------------------------------------------------+
//|                     Total transactions today by Magic number.mq5 |
//|                              Copyright © 2021, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2021, Vladimir Karputov"
#property version   "1.000"
//+------------------------------------------------------------------+
//| Structure History Deals                                          |
//+------------------------------------------------------------------+
struct STRUCT_HISTORY_DEALS
  {
   long              magic;                  // Magic number
   int               count_buy;              // Number of Buy deals
   int               count_sell;             // Number of Sell deals
   //--- Constructor
                     STRUCT_HISTORY_DEALS()
     {
      magic                      = 0;
      count_buy                  = 0;
      count_sell                 = 0;
     }
  };
STRUCT_HISTORY_DEALS SHistoryDeals[];
//--- input parameters
input int      Input1=9;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   RequestTradeHistory(SHistoryDeals);
   int size=ArraySize(SHistoryDeals);
   for(int i=0; i<size; i++)
     {
      Print(IntegerToString(SHistoryDeals[i].magic),
            ", BUY: ",IntegerToString(SHistoryDeals[i].count_buy),
            ", SELL: ",IntegerToString(SHistoryDeals[i].count_sell));
     }
  }
//+------------------------------------------------------------------+
//| Request trade history                                            |
//+------------------------------------------------------------------+
void RequestTradeHistory(STRUCT_HISTORY_DEALS &history_deals[])
  {
//--- request trade history
   datetime from_date=iTime(Symbol(),PERIOD_D1,0);
   datetime to_date=TimeCurrent()+86400;
   HistorySelect(from_date,to_date);
   uint total_deals=HistoryDealsTotal();
   ulong ticket_history_deal=0;
   if(total_deals>0)
     {
      ArrayFree(history_deals);
      //--- for all deals
      for(uint i=0; i<total_deals; i++)
        {
         //--- try to get deals ticket_history_deal
         if((ticket_history_deal=HistoryDealGetTicket(i))>0)
           {
            long     deal_ticket       = HistoryDealGetInteger(ticket_history_deal,DEAL_TICKET);
            long     deal_type         = HistoryDealGetInteger(ticket_history_deal,DEAL_TYPE);
            if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
              {
               long     deal_entry        = HistoryDealGetInteger(ticket_history_deal,DEAL_ENTRY);
               if(deal_entry==DEAL_ENTRY_IN)
                 {
                  long     deal_magic        = HistoryDealGetInteger(ticket_history_deal,DEAL_MAGIC);
                  //---
                  int size=ArraySize(history_deals);
                  bool find=false;
                  for(int j=0; j<size; j++)
                    {
                     if(history_deals[j].magic==deal_magic)
                       {
                        if(deal_type==DEAL_TYPE_BUY)
                           history_deals[j].count_buy=history_deals[j].count_buy+1;
                        if(deal_type==DEAL_TYPE_SELL)
                           history_deals[j].count_sell=history_deals[j].count_sell+1;
                        continue;
                       }
                    }
                  if(!find)
                    {
                     ArrayResize(history_deals,size+1);
                     history_deals[size].magic=deal_magic;
                     if(deal_type==DEAL_TYPE_BUY)
                        history_deals[size].count_buy=1;
                     if(deal_type==DEAL_TYPE_SELL)
                        history_deals[size].count_sell=1;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 

Здравствуйте Владимир,

Я новичок в разработке роботов или автоматизации стратегий.

действительно, я закодировал торговую стратегию на основе стохастика. только я хотел бы увеличить размер лотов после убытка и после двух прибылей (профитов), правда не знаю, как вставить этот код в исходный код.



вот мой бот

Файлы:
 
lo1988 :

Здравствуйте, Владимир,

Я новичок в разработке роботов и автоматизации стратегий.

Действительно, я закодировал торговую стратегию на основе стохастика. только, я хотел бы увеличить размер лотов после убытка и после двух прибылей (профитов), правда я не знаю, как вставить этот код в мой источник кода.

вот мой бот

Вы немного схитрили - вы ничего не писали и ничего не разрабатывали самостоятельно: вы просто сгенерировали советник в MQL5 Wizard. Мастер MQL5 генерирует простые стратегии, и в этих стратегиях нет Мартингейла.

Вам нужно:

  • либо самостоятельно освоить язык MQL5
  • либо воспользоваться поиском на CodeBase
  • или создать оплачиваемую работу в сервисе Freelance
 
lo1988 :

Бонжур Владимир,

Я начинающий разработчик роботов или автоматизаторов стратегий.

Я разработал торговую стратегию на основе стохастика , но хочу увеличить объем лотов после потери и после двух прибылей, я не знаю, как вставить этот код в исходный код.



voici mon bot

Я бы хотел, если позволите, еще спросить, можно ли имитировать сделки по дням, и по уровню прибыли.

Как это сделать, если да?

 
lo1988:

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

Как это сделать, если да?

Я отредактировал ваши сообщения, чтобы они были на английском языке.
Поэтому здесь вы должны писать на английском языке (это англоязычный форум).
 
Sergey Golubev:
Я изменил ваши сообщения так, чтобы они были на английском языке.
Поэтому вы должны писать на английском здесь (это форум на английском языке).

Хорошо, спасибо за информацию и помощь

 
lo1988:

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

Как это сделать, если да?

Здравствуйте Владимир, я новичок в разработке роботов или автоматизации стратегий. действительно, я закодировал торговую стратегию на основе стохастика. только, я хотел бы увеличить размер моих лотов после убытка и после двух прибылей (профитов), я действительно не знаю, как вставить этот код в мой источник кода.

Файлы:
 
lo1988:

Здравствуйте Владимир, я новичок в разработке роботов или автоматизации стратегий. действительно, я закодировал торговую стратегию на основе стохастика. только, я хотел бы увеличить размер лотов после убытка и после двух прибылей (профитов), я действительно не знаю, как вставить этот код в мой источник кода.

Он уже ответил вам в своем посте. Вам придется научиться писать код самостоятельно или нанять кого-то, кто сделает это за вас!

Форум о трейдинге, автоматических торговых системах и тестировании торговых стратегий

Как начать работать с MQL5

Владимир Карпутов, 2021.05.23 16:11

Вы немного схитрили - вы ничего не писали и не разрабатывали самостоятельно: вы просто сгенерировали советник в Мастере MQL5. Мастер MQL5 генерирует простые стратегии, и в этих стратегиях нет Мартингейла.

Вам нужно:

  • либо самостоятельно освоить язык MQL5
  • либо воспользоваться поиском на CodeBase
  • или создать оплачиваемую работу в сервисе Freelance