// L'indicatore interrompe tutti i tentativi di trading tramite Expert Advisor. Permette solo di operare con le mani.// Per evitare la tentazione di spegnerlo mentre il Terminale è in funzione, l'indicatore è in modalità invisibile.#property indicator_chart_window#property indicator_buffers0#property indicator_plots0#include <Symbol.mqh> // https://www.mql5.com/it/code/18855#include <fxsaber\Expert.mqh> // https://www.mql5.com/it/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 Se si riavvia il terminale, a volte si può verificare (MT5 build 1881) che si blocca nei processi. Il problema può essere risolto rimuovendo forzatamente il processo corrispondente terminal64.exe ed eliminando MetaTrader 5BasesCustom\history\Timer\*.hcc.
В наше время информационных технологий использование различных роботов и электронных экспертов для торговли на финансовых рынках стало довольно обычным явлением. Главными преимуществами электронных экспертов принято считать безукоризненное выполнение алгоритма и безустанная работа 24 часа в сутки. Для их круглосуточного использования арендуются...
Cioè salva il modello di grafico, lo legge, lo analizza e trova il nome dell'Expert Advisor. È ancora una stampella, ma finora funziona bene (per circa un paio di mesi). Penso che se si utilizza un HDD regolare, non si dovrebbe fare questa operazione troppo spesso (ad esempio, ad ogni tick). Spero che CHART_EXPERT_NAME appaia un giorno in MQL4 .
Non è molto simile al mio caso d'uso. La domanda principale sull'esempio è: cosa succede se il nome del file musicale è specificato in un parametro dello script, invece di lanciarlo attraverso le variabili globali? Posso inviarvi il mio progetto in un messaggio privato.
Non è molto simile al mio caso d'uso. La domanda principale dell'esempio è: cosa succede se il nome del file musicale viene specificato in un parametro dello script invece di essere lanciato attraverso le variabili globali?
Non ricordo assolutamente il motivo, ma l'opzione con un parametro di input viene immediatamente suggerita. Poiché l'esempio è così contorto, deve trattarsi di una limitazione di MT5.
Oh, quegli hacker russi.... Beh, perché fermare tutti gli esperti quando si è un po' fregati?
A proposito, avete anche un bug. La statica non funziona.
A proposito, avete anche un bug. La statica non funziona.
Non ho visto un errore qui
Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading.
Domande dei principianti MQL5 MT5 MetaTrader 5
fxsaber, 2018.08.02 17:09
ZY Se si riavvia il terminale, a volte si può verificare (MT5 build 1881) che si blocca nei processi. Il problema può essere risolto rimuovendo forzatamente il processo corrispondente terminal64.exe ed eliminando MetaTrader 5BasesCustom\history\Timer\*.hcc.
Nell'articolo l'autore ha evidenziato in modo molto dettagliato le sfumature dei risultati di questa biblioteca. Ne consiglio la lettura.
Si dà il caso che a MT4 manchi molto di più di FileSave e FileLoad (che sono scritti in 3 righe ciascuno):
Nel mio progetto, ho risolto in questo modo (con il tag "name"):
Dove SubstringParser ha questo codice:
Cioè salva il modello di grafico, lo legge, lo analizza e trova il nome dell'Expert Advisor. È ancora una stampella, ma finora funziona bene (per circa un paio di mesi). Penso che se si utilizza un HDD regolare, non si dovrebbe fare questa operazione troppo spesso (ad esempio, ad ogni tick). Spero che CHART_EXPERT_NAME appaia un giorno in MQL4 .
Ci sarà una nuova versione con il supporto per l'esecuzione di script?
Questo esempio non funziona?
Questo esempio non funziona?
Non è molto simile al mio caso d'uso. La domanda principale sull'esempio è: cosa succede se il nome del file musicale è specificato in un parametro dello script, invece di lanciarlo attraverso le variabili globali? Posso inviarvi il mio progetto in un messaggio privato.
Non è molto simile al mio caso d'uso. La domanda principale dell'esempio è: cosa succede se il nome del file musicale viene specificato in un parametro dello script invece di essere lanciato attraverso le variabili globali?
Non ricordo assolutamente il motivo, ma l'opzione con un parametro di input viene immediatamente suggerita. Poiché l'esempio è così contorto, deve trattarsi di una limitazione di MT5.