Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1904

 
DanilaMactep offenen Charts im Zeitraum n1. Wie kann ich den Code so umschreiben, dass das Skript eine Vorlage mit dem angegebenen Namen auf alle geöffneten Diagramme anwendet?

Hier, das wird Ihnen helfen.

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

Hier, das wird Ihnen helfen.

Und für eine besonders "begabte" Person, können Sie bitte die Funktion erklären
ChartApplyTemplate()
wo im Skript ersetzt werden sollte?
 
DanilaMactep #:
Können Sie bitte einer besonders "begabten" Person erklären, welche Funktion an welcher Stelle der Schrift ersetzt werden soll?

Hier ist das Skript

//+------------------------------------------------------------------+
//|                                           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++;
     }
  }
//+------------------------------------------------------------------+
Dateien:
 
137 Matrix #:

Hier ist das Skript

Vielen Dank für den Code - ich werde ihn morgen in den Meta-Editor einfügen, es ist heute schon spät.

 
137 Matrix #:

Hier ist das Skript

Guten Tag. Übertragen Sie den Code wie folgt in das Skript.
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           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++;
     }
  }
//+------------------------------------------------------------------+

Wenn ich sie auf das Diagramm ziehe und den Vorlagennamen in die Eingabeparameter eingebe, reagiert das Terminal nicht mehr und es passiert nichts. Die Vorlagen werden nicht auf alle Diagramme angewendet :-( Habe ich den Code falsch kopiert oder gibt es ein Problem mit etwas anderem? Ich habe den Namen der Vorlage doppelt überprüft - ich gebe nur den Namen ohne den Punkt tpl ein
 
DanilaMactep #:
Hallo. Ich habe den Code wie folgt in das Skript eingefügt.
Wenn ich sie auf das Diagramm ziehe und den Vorlagennamen in die Eingabeparameter eingebe, reagiert das Terminal nicht mehr und es passiert nichts. Die Vorlagen werden nicht auf alle Diagramme angewendet :-( Habe ich den Code falsch kopiert oder gibt es ein Problem mit etwas anderem? Ich habe den Namen der Vorlage doppelt überprüft - ich gebe nur den Namen ohne den Punkt tpl ein

geben Sie den Namen ein und diese Vorlage wird in allen geöffneten Diagrammen geöffnet.

zum Beispiel - speichern Sie die Vorlage unter dem Namen template und schreiben Sie die Vorlage in die Skripteinstellungen

 
DanilaMactep #:
Guten Tag. Ich habe den Code wie folgt in das Skript übertragen.
Wenn ich sie auf das Diagramm ziehe und den Vorlagennamen in die Eingabeparameter eingebe, reagiert das Terminal nicht mehr und es passiert nichts. Die Vorlagen werden nicht auf alle Diagramme angewendet :-( Habe ich den Code falsch kopiert oder gibt es ein Problem mit etwas anderem? Ich habe den Namen der Vorlage doppelt überprüft - ich gebe nur den Namen ohne den Punkt tpl ein

Alles, was Sie tun mussten, war, eine Zeile in Ihren Code einzufügen. Oder auch zwei Zeilen durch eine ersetzen

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****************************/
 

Guten Tag, die Situation ist folgende: Ich habe zwei identische Charts im Terminal geöffnet. Ein Roboter wird auf dem einen und der andere auf dem anderen installiert. Wie kann ich in den Code schreiben (wenn es eine Möglichkeit gibt), dass die von Roboter 1 eröffnete Position auch in dem Chart geöffnet wird, in dem Roboter 2 platziert ist? Oder besser noch, wie man Roboter-1 öffnen eine Position nur auf dem Chart mit Roboter-2? Mein "Wissen" ist nicht ausreichend.

Mein "Wissen" ist nicht ausreichend. Danke.

 
novichok2018 #:

Guten Tag, die Situation ist folgende: Ich habe zwei identische Charts im Terminal geöffnet. Ein Roboter wird auf dem einen und der andere auf dem anderen installiert. Wie kann ich in den Code schreiben (falls es eine Möglichkeit gibt), dass die von Roboter 1 eröffnete Position auch in dem Chart geöffnet wird, in dem Roboter 2 platziert ist? Oder besser noch, wie kann man Roboter-1 eine Position nur auf dem Chart mit Roboter-2 öffnen lassen? Mein "Wissen" ist nicht ausreichend.

Mein "Wissen" ist nicht ausreichend. Danke.

Wenn die Diagramme identisch sind, sind die Aufträge in beiden sichtbar. Aufträge werden nach dem Symbol eröffnet, nicht nach dem Chart.
 
Alexey Viktorov #:

Alles, was Sie tun mussten, war, eine Zeile in Ihren Code einzufügen. Oder auch zwei Zeilen durch eine ersetzen

Alexey, vielen Dank für den Tipp - hinzugefügt Zeilen und alles funktionierte, das einzige Problem - jetzt auch bei der manuellen Auswahl der Standard-Vorlage das Terminal hängtXD))))))))) scheint es Zeit, den Computer zu reinigen, aber es gibt Anzeichen von Problemen (
Grund der Beschwerde: