21.10.17
|
Gesperrter Benutzer
|
|
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
|
|
Template auf alle Charts anwenden - Update
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
|