Eseguire un solo test - un solo passaggio. Non l'ottimizzazione, ma un singolo passaggio. In questo modo puoi vedere il registro con certezza.
Cosa intendi per "visivo"? Bene, ho il registro. Non ci vedo niente di male. I parametri sono tutti passati. Anche ha funzionato, ma l'uscita è ancora 20.000.
Cosa intendi per "visivo"? Bene, ho il registro. Non ci vedo niente di male. I parametri sono tutti passati. Anche questo è stato eseguito, ma l'output Balance era 20000 e lo è ancora.
Quindi, cambiate il codice in modo che diamessaggi di errore quando ci sono errori o se l'operazione di scambio non può essere eseguita. O in generale, il codice è sbagliato e non dà segnali. I miracoli non accadono.
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из...
Quindi cambiate il codice in modo che diamessaggi di errore quando si verificano errori o se il trade non può essere eseguito. O se il codice è difettoso e non dà alcun segnale. Non ci sono miracoli.
Sì...
Quindi, l'ottimizzazione non è inclusa in Ontick. OnInit viene elaborato. Ma On-Tick non viene generato. Ecco il problema.
Ho integrato i punti Print ( ) negli input e negli output, ma solo Init viene scritto nel log.
P.S.
Gestisco gli errori. Forza dell'abitudine. Scrivo programmi dal 1987.
Senza il codice, solo i telepati possono aiutare - e ora, per fortuna, tutti i telepati sono in vacanza.
Ho trovato la ragione. Per qualche motivo, gli indicatori non vengono ricalcolati in Ontick (non dà il numero di barre ricalcolate). Forse devo aggiornare le citazioni.
Ho comunque perso i miei ringraziamenti. Sono diventato più intelligente. Ho imparato dove sono scritti i registri.
Convertito un semplice indicatore da MQL4 -> MQL5, ma nessun segnale sulle ultime barre. Per favore, aiutatemi a trovare la ragione. Il codice sorgente e il risultato sono in allegato. Incollerò qui anche quello convertito.
#property indicator_chart_window#property indicator_plots4#property indicator_buffers4#property indicator_color1 PaleVioletRed
#property indicator_color2 DeepSkyBlue
#property indicator_color3 Red
#property indicator_color4 LimeGreen
inputint dist2 = 21; // Distance#2inputint dist1 = 14; // Distance#1double b1[];
double b2[];
double b3[];
double b4[];
int handle_atr;
int min_rates_total;
double atr[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit() {
SetIndexBuffer(0,b1,INDICATOR_DATA);
SetIndexBuffer(1,b2,INDICATOR_DATA);
SetIndexBuffer(2,b3,INDICATOR_DATA);
SetIndexBuffer(3,b4,INDICATOR_DATA);
ArraySetAsSeries(b1,true);
ArraySetAsSeries(b2,true);
ArraySetAsSeries(b3,true);
ArraySetAsSeries(b4,true);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(2,PLOT_DRAW_TYPE,DRAW_ARROW);
PlotIndexSetInteger(3,PLOT_DRAW_TYPE,DRAW_ARROW);
PlotIndexSetInteger(2,PLOT_ARROW,159);
PlotIndexSetInteger(3,PLOT_ARROW,159);
ResetLastError();
handle_atr = iATR(NULL,PERIOD_CURRENT,50);
if(handle_atr==INVALID_HANDLE) {
Print(" *** ATR handle was unable to create. Error ",GetLastError());
returnINIT_FAILED;
}
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetString(0,PLOT_LABEL,"SuperSignals Upper");
PlotIndexSetString(1,PLOT_LABEL,"SuperSignals Lower");
PlotIndexSetString(2,PLOT_LABEL,"SuperSignals Sell");
PlotIndexSetString(3,PLOT_LABEL,"SuperSignals Buy");
returnINIT_SUCCEEDED;
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &High[],
constdouble &Low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[]) {
int counted_bars=prev_calculated;
int i,limit;
ArraySetAsSeries(Low,true);
ArraySetAsSeries(High,true);
if(counted_bars<0) return0;
if(counted_bars>0) counted_bars--;
limit=rates_total-counted_bars;
limit=MathMax(limit,dist1);
limit=MathMax(limit,dist2);
for (i = limit-1; i >= 0; i--) {
int hhb1 = ArrayMaximum(High,i-dist1/2,dist1);
int llb1 = ArrayMinimum(Low, i-dist1/2,dist1);
int hhb = ArrayMaximum(High,MathMax(0,i-dist2/2),dist2);
int llb = ArrayMinimum(Low, MathMax(0,i-dist2/2),dist2);
b1[i] = EMPTY_VALUE;
b2[i] = EMPTY_VALUE;
b3[i] = EMPTY_VALUE;
b4[i] = EMPTY_VALUE;
ArraySetAsSeries(atr,true);
int copied=CopyBuffer(handle_atr,0,0,limit,atr);
if (copied<=0) Print(" *** ATR failed to copy.");
double tr = atr[i];
b1[i] = High[hhb];
b2[i] = Low[llb];
if (i==hhb1) b3[i] = High[hhb1]+tr/2;
if (i==llb1) b4[i] = Low[llb1] -tr/2;
}
return rates_total;
}
//+------------------------------------------------------------------+
Convertito un semplice indicatore da MQL4 -> MQL5, ma nessun segnale sulle ultime barre. Per favore, aiutatemi a trovare la ragione. Il codice sorgente e il risultato sono in allegato. Incollo qui anche quello convertito.
Il risultato.
Il colpevole potrebbe essere qualcosa che non è stato fatto logicamente tra le piattaforme
Si prega di prestare attenzione ai diversi parametri di input
MT4
ArrayMaximum
Ищет в одномерном числовом массиве максимальный элемент.
intArrayMaximum(
constvoid& array[], // массив для поискаint count=WHOLE_ARRAY, // количество проверяемыхint start=0// с какого индекса начинаем поиск
);
MT5
ArrayMaximum
Ищет максимальный элемент в первом измерении многомерного числового массива.
intArrayMaximum(
constvoid& array[], // массив для поискаint start=0, // с какого индекса начинаем поискint count=WHOLE_ARRAY// количество проверяемых
);
L'ottimizzazione è fatta da AGENTI (nel vostro caso, AGENTI LOCALI).
Per visualizzare i log dell'agente locale: fare clic con il tasto destro del mouse sulla scheda Log e andare alla cartella dell'agente
Questo è il punto, non ci sono errori. Tutto è a posto, forse c'è un firewall o qualcosa del genere.
Questo è il punto, non ci sono errori. Tutto conta, forse ci sono dei firewall o qualcosa del genere?
Eseguire un solo test, un solo passaggio. Non l'ottimizzazione, solo un singolo passaggio. In questo modo potrai vedere il registro.
Eseguire un solo test - un solo passaggio. Non l'ottimizzazione, ma un singolo passaggio. In questo modo puoi vedere il registro con certezza.
Cosa intendi per "visivo"? Bene, ho il registro. Non ci vedo niente di male. I parametri sono tutti passati. Anche ha funzionato, ma l'uscita è ancora 20.000.
Cosa intendi per "visivo"? Bene, ho il registro. Non ci vedo niente di male. I parametri sono tutti passati. Anche questo è stato eseguito, ma l'output Balance era 20000 e lo è ancora.
Quindi, cambiate il codice in modo che diamessaggi di errore quando ci sono errori o se l'operazione di scambio non può essere eseguita. O in generale, il codice è sbagliato e non dà segnali. I miracoli non accadono.
Quindi cambiate il codice in modo che diamessaggi di errore quando si verificano errori o se il trade non può essere eseguito. O se il codice è difettoso e non dà alcun segnale. Non ci sono miracoli.
Sì...
Quindi, l'ottimizzazione non è inclusa in Ontick. OnInit viene elaborato. Ma On-Tick non viene generato. Ecco il problema.
Ho integrato i punti Print ( ) negli input e negli output, ma solo Init viene scritto nel log.
P.S.
Gestisco gli errori. Forza dell'abitudine. Scrivo programmi dal 1987.
Sì...
In generale, l'ottimizzazione non è inclusa in Ontick. OnInit viene elaborato. Ma On Tick non viene generato. Ecco il problema.
Ho integrato i punti di stampa ( ) negli ingressi e nelle uscite, ma solo Init viene scritto nel log.
P.S.
Gestisco gli errori. Forza dell'abitudine. Scrivo programmi dal 1987.
Solo i telepati potranno aiutare senza il codice - e ora tutti i telepati sono in vacanza perché è un peccato.
Senza il codice, solo i telepati possono aiutare - e ora, per fortuna, tutti i telepati sono in vacanza.
Ho trovato la ragione. Per qualche motivo, gli indicatori non vengono ricalcolati in Ontick (non dà il numero di barre ricalcolate). Forse devo aggiornare le citazioni.
Ho comunque perso i miei ringraziamenti. Sono diventato più intelligente. Ho imparato dove sono scritti i registri.
Convertito un semplice indicatore da MQL4 -> MQL5, ma nessun segnale sulle ultime barre. Per favore, aiutatemi a trovare la ragione. Il codice sorgente e il risultato sono in allegato. Incollerò qui anche quello convertito.
Il risultato.
Convertito un semplice indicatore da MQL4 -> MQL5, ma nessun segnale sulle ultime barre. Per favore, aiutatemi a trovare la ragione. Il codice sorgente e il risultato sono in allegato. Incollo qui anche quello convertito.
Il risultato.
Il colpevole potrebbe essere qualcosa che non è stato fatto logicamente tra le piattaforme
Si prega di prestare attenzione ai diversi parametri di input
MT4
MT5
Più o meno il colpevole potrebbe essere qualcosa di non logicamente fatto tra le piattaforme
Notate i diversi parametri di input
MT4
MT5
Grazie Vitaliy.
L'ordine delle variabili in questo posto è corretto. Le ho scambiate durante la conversione. Anche le funzioni iHighest / iLowest erano in MQL4.
Questa è un'altra cosa. Mi sono già scervellato.