// Der Indikator unterbricht alle Versuche, über Expert Advisors zu handeln. Er erlaubt nur den Handel mit Händen.// Um die Versuchung zu vermeiden, die Anzeige bei laufendem Terminal auszuschalten, ist sie unsichtbar.#property indicator_chart_window#property indicator_buffers0#property indicator_plots0#include <Symbol.mqh> // https://www.mql5.com/de/code/18855#include <fxsaber\Expert.mqh> // https://www.mql5.com/de/code/19003void MyAlert( conststring Str )
{
string StrArray[];
for (int i = StringSplit(Str, '\n', StrArray) - 1; i >= 0; i--)
Alert(StrArray[i]);
}
bool NextOnCalculate( conststring SymbName = NULL )
{
const SYMBOL Symb(SymbName);
MqlRates Rates[1] = {0};
Rates[0].time = TimeCurrent();
return(Symb.IsCustom() ? Symb.CloneRates(Rates) : ChartSetSymbolPeriod(0, _Symbol, _Period));
}
const SYMBOL SymbTimer("Timer");
voidOnInit()
{
if (_Symbol == SymbTimer.Name)
ChartIndicatorGet(0, 0, ChartIndicatorName(0, 0, 0));
elseif (SymbTimer.IsExist() && SymbTimer.On() && NextOnCalculate(SymbTimer.Name))
{
iCustom(SymbTimer.Name, PERIOD_CURRENT,
".." + StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_PATH)) + 5));
SymbTimer.Off();
}
}
string GetExpertData( constulong Chart = 0 )
{
string Str = NULL;
MqlParam Parameters[];
string Names[];
if (EXPERT::Parameters(Chart, Parameters, Names))
{
Str += "\n" + ::ChartSymbol(Chart) + " " + ::EnumToString(::ChartPeriod(Chart)) + " " + Parameters[0].string_value + "\n";
constint Amount = ::ArraySize(Names);
for (int i = 0; i < Amount; i++)
Str += (string)i + ": "+ Names[i] + " = " + Parameters[i + 1].string_value + "\n";
}
return(Str);
}
void Active( constint AlertTime = 5 )
{
staticconstuint StartTime = GetTickCount();
staticuint PrevInterval = 0;
constuint Interval = (GetTickCount() - StartTime) / 1000;
conststring Str = MQLInfoString(MQL_PROGRAM_NAME) + ": I've been watching you for " + TimeToString(Interval, TIME_SECONDS);
long Chart = ChartFirst();
if (Chart != -1)
do
{
if (EXPERT::Is(Chart))
MyAlert(GetExpertData(Chart) + "Removed - " + (string)EXPERT::Remove(Chart));
ChartSetString(Chart, CHART_COMMENT, Str);
ChartRedraw(Chart);
}
while ((Chart = ChartNext(Chart)) != -1);
elseif (!(Interval % AlertTime) && (Interval != PrevInterval))
{
MyAlert(Str);
PrevInterval = Interval;
}
}
intOnCalculate( constint, constint, constint, constdouble &[] )
{
staticint i = 0;
if ((_Symbol == SymbTimer.Name) && NextOnCalculate())
Active();
elseif (i++ > 0)
ChartIndicatorDelete(0, 0, ChartIndicatorName(0, 0, ChartIndicatorsTotal(0, 0) - 1));
return(0);
}
ZY Wenn Sie das Terminal neu starten, kann es manchmal vorkommen (MT5 Build 1881), dass es sich in Prozessen aufhängt. Dies kann durch das gewaltsame Entfernen des entsprechenden Prozesses terminal64.exe und das Löschen von MetaTrader 5\Bases\Custom\history\Timer\*.hcc behoben werden.
В наше время информационных технологий использование различных роботов и электронных экспертов для торговли на финансовых рынках стало довольно обычным явлением. Главными преимуществами электронных экспертов принято считать безукоризненное выполнение алгоритма и безустанная работа 24 часа в сутки. Для их круглосуточного использования арендуются...
D.h. speichern Sie die Chart-Vorlage, lesen Sie es, analysieren Sie es und finden Sie den Namen des Expert Advisors. Es ist immer noch eine Krücke, aber es funktioniert gut so weit (für etwa ein paar Monate). Ich denke, wenn Sie eine normale Festplatte verwenden, sollten Sie dies nicht zu oft tun (zum Beispiel bei jedem Tick). Ich hoffe, CHART_EXPERT_NAME wird eines Tages in MQL4 erscheinen .
Es ist meinem Anwendungsfall nicht sehr ähnlich. Die Hauptfrage zu diesem Beispiel ist, was passiert, wenn der Name der Musikdatei in einem Skriptparameter angegeben wird, anstatt ihn über globale Variablen zu übergeben? Ich kann Ihnen mein Projekt in einer privaten Nachricht schicken.
Es ist nicht sehr ähnlich zu meinem Anwendungsfall. Die wichtigste Frage zu dem Beispiel ist, was passiert, wenn der Name der Musikdatei in einem Skriptparameter angegeben wird, anstatt über globale Variablen übergeben zu werden.
Ich erinnere mich nicht mehr an den Grund, aber die Option mit einem Eingabeparameter wird sofort vorgeschlagen. Da das Beispiel so verdreht ist, muss es sich um eine Einschränkung des MT5 handeln.
Oh, diese russischen Hacker.... Nun, warum alle Experten aufhalten, wenn man ein bisschen im Arsch ist?
Übrigens, Sie haben auch einen Fehler. Statik funktioniert nicht.
Übrigens, Sie haben auch einen Fehler. Statik funktioniert nicht.
Ich habe hier keinen Fehler gesehen
Forum über Trading, automatisierte Handelssysteme und das Testen von Handelsstrategien.
Fragen von Anfängern MQL5 MT5 MetaTrader 5
fxsaber, 2018.08.02 17:09
ZY Wenn Sie das Terminal neu starten, kann es manchmal vorkommen (MT5 Build 1881), dass es sich in Prozessen aufhängt. Dies kann durch das gewaltsame Entfernen des entsprechenden Prozesses terminal64.exe und das Löschen von MetaTrader 5\Bases\Custom\history\Timer\*.hcc behoben werden.
In dem Artikel hat der Autor sehr ausführlich auf die Nuancen der Ergebnisse dieser Bibliothek hingewiesen. Ich empfehle, ihn zu lesen.
In MT4 fehlt viel mehr als FileSave und FileLoad (die jeweils in 3 Zeilen geschrieben sind):
In meinem Projekt habe ich es so gelöst (mit dem "name"-Tag):
Wo SubstringParser hat diesen Code:
D.h. speichern Sie die Chart-Vorlage, lesen Sie es, analysieren Sie es und finden Sie den Namen des Expert Advisors. Es ist immer noch eine Krücke, aber es funktioniert gut so weit (für etwa ein paar Monate). Ich denke, wenn Sie eine normale Festplatte verwenden, sollten Sie dies nicht zu oft tun (zum Beispiel bei jedem Tick). Ich hoffe, CHART_EXPERT_NAME wird eines Tages in MQL4 erscheinen .
Wird es eine neue Version mit Unterstützung für die Ausführung von Skripten geben?
Funktioniertdieses Beispiel nicht?
Dieses Beispiel funktioniert nicht?
Es ist meinem Anwendungsfall nicht sehr ähnlich. Die Hauptfrage zu diesem Beispiel ist, was passiert, wenn der Name der Musikdatei in einem Skriptparameter angegeben wird, anstatt ihn über globale Variablen zu übergeben? Ich kann Ihnen mein Projekt in einer privaten Nachricht schicken.
Es ist nicht sehr ähnlich zu meinem Anwendungsfall. Die wichtigste Frage zu dem Beispiel ist, was passiert, wenn der Name der Musikdatei in einem Skriptparameter angegeben wird, anstatt über globale Variablen übergeben zu werden.
Ich erinnere mich nicht mehr an den Grund, aber die Option mit einem Eingabeparameter wird sofort vorgeschlagen. Da das Beispiel so verdreht ist, muss es sich um eine Einschränkung des MT5 handeln.