MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1904

 
DanilaMactep açık çizelgeleri h1 dönemine geçirir. Ve kodun, belirtilen ada sahip şablonu tüm açık grafiklere uygulaması için kodu nasıl yeniden oluşturabilirim?

İşte, bu size yardımcı olacaktır.

 ChartApplyTemplate ( 0 , "..........tpl" ))
 
Alekseu Fedotov # :

İşte, bu size yardımcı olacaktır.

Ve özellikle "yetenekli" bir kişiye lütfen işlevi açıklayın
 ChartApplyTemplate()
komut dosyası nereye yerleştirilmelidir?
 
DanilaMactep # :
Ve özellikle "yetenekli" bir kişiye, lütfen komut dosyasının hangi yerinin değiştirilmesi gerektiğini açıklayın.

işte senaryo

 //+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template = "ADX" ; // Имя шаблона(without '.tpl')
//----
ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT ;   //
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   long currChart, prevChart = ChartFirst ();
   int i = 0 , limit = 100 ;
   bool errTemplate;
   while (i < limit)
     {
      currChart = ChartNext (prevChart);
       if (TimeFrame != PERIOD_CURRENT )
        {
         ChartSetSymbolPeriod (prevChart, ChartSymbol (prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate (prevChart, Template + ".tpl" );
       if (!errTemplate)
        {
         Print ( "Error " , ChartSymbol (prevChart), "-> " , GetLastError ());
        }
       if (currChart < 0 )
         break ;
       Print (i, ChartSymbol (currChart), " ID =" , currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+
Dosyalar:
 
137 Matrix # :

işte senaryo

Kod için çok teşekkür ederim - yarın onu meta düzenleyicide mahvedeceğim, bugün çok geç.

 
137 Matrix # :

işte senaryo

Tünaydın. Kodu bu şekilde scripte aktardım.
 //+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "АВТОР - КОПИЯ 1"
#property link        " https://vk.com/danila_mastep "
#property version    "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template = "default" ; // Имя шаблона(without '.tpl')
//----
ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT ;   //
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   long currChart, prevChart = ChartFirst ();
   int i = 0 , limit = 100 ;
   bool errTemplate;
   while (i < limit)
     {
      currChart = ChartNext (prevChart);
       if (TimeFrame != PERIOD_CURRENT )
        {
         ChartSetSymbolPeriod (prevChart, ChartSymbol (prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate (prevChart, Template + ".tpl" );
       if (!errTemplate)
        {
         Print ( "Error " , ChartSymbol (prevChart), "-> " , GetLastError ());
        }
       if (currChart < 0 )
         break ;
       Print (i, ChartSymbol (currChart), " ID =" , currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+

Bir grafiğe sürüklerken ve giriş parametrelerine şablon adını girerken, terminal yanıt vermeyi kesiyor ve hiçbir şey olmuyor. Şablonlar tüm grafiklere uygulanmıyor :-( Kodu yanlış mı aktardım veya başka bir şeyde sorun mu var? Şablon adını iki kez kontrol ettim - yalnızca adı nokta tpl olmadan giriyorum
 
DanilaMactep # :
Tünaydın. Kodu bu şekilde scripte aktardım.
Bir grafiğe sürüklerken ve giriş parametrelerine şablon adını girerken, terminal yanıt vermeyi kesiyor ve hiçbir şey olmuyor. Şablonlar tüm grafiklere uygulanmıyor :-( Kodu yanlış mı aktardım veya başka bir şeyde sorun mu var? Şablon adını iki kez kontrol ettim - yalnızca adı nokta tpl olmadan giriyorum

adı girin ve tüm açık grafiklerde - bu şablon açılacaktır.

örneğin - şablonu şablon adıyla kaydedin ve komut dosyası ayarlarında şablonu şu şekilde girin

 
DanilaMactep # :
Tünaydın. Kodu bu şekilde scripte aktardım.
Bir grafiğe sürüklerken ve giriş parametrelerine şablon adını girerken, terminal yanıt vermeyi kesiyor ve hiçbir şey olmuyor. Şablonlar tüm grafiklere uygulanmıyor :-( Kodu yanlış mı aktardım veya başka bir şeyde sorun mu var? Şablon adını iki kez kontrol ettim - yalnızca adı nokta tpl olmadan giriyorum

Kodunuza bir satır eklemeniz yeterliydi. Hatta iki satırı bir satırla değiştirin

 string tplName = "name.tpl" ;
/********************Script program start function*******************/
void OnStart ()
 {
   long prevChart = ChartFirst ();
   while (prevChart >= 0 )
   {
     //if(ChartPeriod(prevChart) != PERIOD_H1)
     //  ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_H1);
     ChartApplyTemplate (prevChart, tplName);
    prevChart = ChartNext (prevChart);
   }
 } /******************************************************************/
/*****************************End program****************************/
 

Tünaydın! Durum aşağıdaki gibidir: terminalde iki özdeş çizelge açıktır. Bir robotun üzerine, diğerinin üzerine bir robot kurulur. Robot-1'in açtığı pozisyonun robot-2'nin kurulu olduğu çizelgede de açılması için kod (böyle bir ihtimal varsa) nasıl yazılır? Hatta daha da iyisi, sadece robot-2'nin kurulu olduğu çizelgede robot-1'in durumuna göre pozisyon açılmalıdır. Benim "bilgim" yeterli değil.

Teşekkür ederim.

 
novichok2018 # :

Tünaydın! Durum aşağıdaki gibidir: terminalde iki özdeş çizelge açıktır. Bir robotun üzerine, diğerinin üzerine bir robot kurulur. Robot-1'in açtığı pozisyonun robot-2'nin kurulu olduğu çizelgede de açılması için kod (böyle bir ihtimal varsa) nasıl yazılır? Hatta daha da iyisi, sadece robot-2'nin kurulu olduğu çizelgede robot-1'in durumuna göre pozisyon açılmalıdır. Benim "bilgim" yeterli değil.

Teşekkür ederim.

Grafikler aynıysa, siparişler her ikisinde de görünür. Emirler grafikle değil sembolle açılır.
 
Alexey Viktorov # :

Kodunuza bir satır eklemeniz yeterliydi. Hatta iki satırı bir satırla değiştirin

Alexey, ipucu için çok teşekkür ederim - Satırları ekledim ve hepsi işe yaradı, tek sorun şu ki, varsayılan şablonun manuel seçiminde bile terminal HD'yi donduruyor))))))))) zamanı geldi bilgisayarı temizlemek için ve yani, sorun belirtileri var (