Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Codeschnipsel (http://www.expert-advisor.com/forum/forumdisplay.php?f=292)
-   -   Template auf alle Charts anwenden - Update (http://www.expert-advisor.com/forum/showthread.php?t=5898)

Kronenchakra 21.10.17 13:38

Template auf alle Charts anwenden - Update
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mittlerweile habe ich eine bessere Version von ApplyTemplate programmiert.
Das Script kann man natürlich mit einem HotKey verbinden, (zB Ctrl+T), dann ist das besonders bequem.
Code:

//+------------------------------------------------------------------+
//|                                                ApplyTemplate.mq5 |
//|                                Copyright © 2017 Ing. Otto Pauser |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017 Ing. Otto Pauser"
#property link      ""
#property version  "1.00"
#property description "Aktuelles Template wird unter dem Namen 'LastApplied.tpl' gespeichert"
#property description "und auf alle offenen Charts angewendet"

string ProgName = MQLInfoString(MQL_PROGRAM_NAME);    // Name des Scripts (für MessageBox)
string TmplName = "LastApplied";                      // unter diesem Namen wird die aktuelle Einstellung gespeichert, wird immer kommentarlos überschrieben

void OnStart()
{
  ENUM_TIMEFRAMES initPeriod  = _Period;                                  // Timeframe des aktuellen Charts merken
  long            initScale  = ChartGetInteger(ChartID(),CHART_SCALE);  // scale des aktuellen Charts merken
  long            initChartID = ChartID();                                // aktueller Chart
  long            currChartID = ChartFirst();                            // Schleifenvariable über alle Charts

  if(!ChartSaveTemplate(initChartID,TmplName))                            // hier wird die aktuelle Einstellung in Datei geschrieben
      {
        PlaySound("alert");
        MessageBox("*ERROR* ChartSaveTemplate: "+TmplName,ProgName,MB_ICONERROR);
        return;                                                          // exit here
      }
     
  while(currChartID>=0)                                                  // Schleife über alle Charts
      {
        if(currChartID!=initChartID)                                      // nicht für Chart in dem das Script gestartet wurde
            { 
              //if(ChartSymbol(currChartID)!="SILVER")                      // nicht für Chart "SILVER". Diese Zeile kann enfernt werden, ist nur für meine Anwendung
                                                                            // ist auch Beispiel für Filter für Charts die nicht verändert werden sollen
                  if(!ChartApplyTemplate(currChartID, TmplName))          // Template anwenden
                    {
                        MessageBox("*ERROR* ChartApplyTemplate: "+TmplName,ProgName,MB_ICONERROR);
                        return;                      // exit here
                    }
              }
        currChartID=ChartNext(currChartID);
    }

  currChartID = ChartFirst();                                            // reset auf ersten Chart
  while(currChartID>=0)                                                  // nochmal Schleife über alle Charts
      {
        if(currChartID!=initChartID)                                      // nicht für Chart in dem das Script gestartet wurde
            {
              if(ChartPeriod(currChartID)!=initPeriod)                    // Timeframe einstellen
                  ChartSetSymbolPeriod(currChartID,ChartSymbol(currChartID),initPeriod); 

              if(ChartGetInteger(currChartID,CHART_SCALE)!=initScale)    // Scale einstellen
                  ChartSetInteger(currChartID,CHART_SCALE,  initScale);
            }
        currChartID=ChartNext(currChartID);
    }

  PlaySound("ok");                                                        // akustisch bemerkbar machen
}

Für den MT4 bitte umbenennen auf ApplyTemplate.mq4 und im MT4 kompilieren.

Grüße Otto


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum