// L'indicateur coupe court à toute tentative de négociation par le biais d'Expert Advisors. Il ne permet de négocier qu'avec les mains.// Pour éviter toute tentation de l'éteindre lorsque le terminal est en marche, l'indicateur est en mode invisible.#property indicator_chart_window#property indicator_buffers0#property indicator_plots0#include <Symbol.mqh> // https://www.mql5.com/fr/code/18855#include <fxsaber\Expert.mqh> // https://www.mql5.com/fr/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 Si vous redémarrez le terminal, vous pouvez parfois rencontrer (MT5 build 1881) qu'il se bloque dans les processus. Il est possible d'y remédier en supprimant de force le processus correspondant terminal64.exe et en supprimant MetaTrader 5\Bases\Custom\history\Timer\*.hcc.
Dans l'article, l'auteur a mis en évidence de manière très détaillée les nuances des résultats de cette bibliothèque. Je vous en recommande la lecture.
В наше время информационных технологий использование различных роботов и электронных экспертов для торговли на финансовых рынках стало довольно обычным явлением. Главными преимуществами электронных экспертов принято считать безукоризненное выполнение алгоритма и безустанная работа 24 часа в сутки. Для их круглосуточного использования арендуются...
C'est-à-dire enregistrer le modèle de graphique, le lire, l'analyser et trouver le nom de l'Expert Advisor. C'est encore une béquille, mais cela fonctionne bien jusqu'à présent (depuis environ deux mois). Je pense que si vous utilisez un disque dur normal, vous ne devriez pas faire cela trop souvent (par exemple, à chaque tic-tac). J'espère que CHART_EXPERT_NAME apparaîtra un jour dans MQL4.
Il n'est pas très similaire à mon cas d'utilisation. La question principale de l'exemple est de savoir ce qui se passe si le nom du fichier musical est spécifié dans un paramètre du script, au lieu de le lancer à travers les variables globales. Je peux vous envoyer mon projet par message privé.
Ce n'est pas très similaire à mon cas d'utilisation. La principale question concernant l'exemple est la suivante : que se passe-t-il si le nom du fichier musical est spécifié dans un paramètre du script au lieu d'être transmis par des variables globales ?
Je ne me souviens pas du tout des raisons, mais l'option d'un paramètre d'entrée est immédiatement suggérée. Puisque l'exemple est si tordu, il doit s'agir d'une limitation de MT5.
Oh, ces pirates russes.... Pourquoi arrêter tous les experts quand on est un peu dans la merde ?
Au fait, vous avez aussi un bogue. La statique ne fonctionne pas.
D'ailleurs, vous avez également un bogue. La statique ne fonctionne pas.
Je n'ai pas vu d'erreur ici
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading.
Questions des débutants MQL5 MT5 MetaTrader 5
fxsaber, 2018.08.02 17:09
ZY Si vous redémarrez le terminal, vous pouvez parfois rencontrer (MT5 build 1881) qu'il se bloque dans les processus. Il est possible d'y remédier en supprimant de force le processus correspondant terminal64.exe et en supprimant MetaTrader 5\Bases\Custom\history\Timer\*.hcc.
Dans l'article, l'auteur a mis en évidence de manière très détaillée les nuances des résultats de cette bibliothèque. Je vous en recommande la lecture.
Il se trouve que MT4 manque bien plus que FileSave et FileLoad (qui sont écrits en 3 lignes chacun) :
Dans mon projet, j'ai résolu le problème de cette manière (avec la balise "name") :
Là où SubstringParser a ce code :
C'est-à-dire enregistrer le modèle de graphique, le lire, l'analyser et trouver le nom de l'Expert Advisor. C'est encore une béquille, mais cela fonctionne bien jusqu'à présent (depuis environ deux mois). Je pense que si vous utilisez un disque dur normal, vous ne devriez pas faire cela trop souvent (par exemple, à chaque tic-tac). J'espère que CHART_EXPERT_NAME apparaîtra un jour dans MQL4.
Une nouvelle version sera-t-elle disponible avec la possibilité d'exécuter des scripts ?
Cet exemple ne fonctionne-t-il pas ?
Cet exemple ne fonctionne pas ?
Il n'est pas très similaire à mon cas d'utilisation. La question principale de l'exemple est de savoir ce qui se passe si le nom du fichier musical est spécifié dans un paramètre du script, au lieu de le lancer à travers les variables globales. Je peux vous envoyer mon projet par message privé.
Ce n'est pas très similaire à mon cas d'utilisation. La principale question concernant l'exemple est la suivante : que se passe-t-il si le nom du fichier musical est spécifié dans un paramètre du script au lieu d'être transmis par des variables globales ?
Je ne me souviens pas du tout des raisons, mais l'option d'un paramètre d'entrée est immédiatement suggérée. Puisque l'exemple est si tordu, il doit s'agir d'une limitation de MT5.