Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
ArrayInitialize non funziona il codice è allegato, se decommentiamo il ciclo, tutto va bene.
E quando si dichiarano le variabili nella classe e l'indicatore a livello globale con lo stesso nome, appare un avviso.
Durante il fine settimana, mentre non c'erano tick, ho fatto il debug dell'indicatore su conti demo, facendolo girare sull'ultima build di due istanze del terminale MT5, ma di società diverse: MetaQuotes e EGlobal. Le impostazioni sono le stesse ovunque. Per essere sicuro ho controllato off-line, quindi il fattore tick è escluso.
Il problema è che il codice più semplice del "sottoindicatore" (per non parlare dell'indicatore completo e più complesso) mostra un numero diverso di risultati in diversi terminali di diverse aziende:
1. EGlobal. 2. Meta-Citazioni.
Ho scaricato completamente entrambi i terminali (controllato con Task Manager per processi di memoria), li ho caricati di nuovo e ho ricompilato entrambi i codici per sicurezza. Alla fine - nessun cambiamento.
MathRound() funziona diversamente in 4 e 5, e dovrebbe essere lo stesso.
Il codice di 4p:
Codice di 5 secondi:
MathRound() funziona diversamente in 4 e 5, e dovrebbe essere lo stesso.
Codice di 4 secondi:
Codice di 5 secondi:
Il problema è qui:
Questo valore è arrotondato diversamente in 4 e 5.
Non c'è da sorprendersi, è così che dovrebbe essere.
Perché MT5 non salva la cronologia degli ordini, ecc. se il test viene interrotto? In MT4 è stato salvato.
Inoltre non c'è posizionamento nella cronologia degli ordini dal grafico di test - era comodo visualizzare gli ordini nella zona di grandi drawdown cliccando sul grafico.
Buona sera.
Potete spiegarmi, per favore, come funziona il metodo SLeep()?
Dovrebbe mettere in pausa l'Expert Advisor per un certo periodo di tempo, o mi sbaglio?
{for (int sleep=0;sleep<10000;sleep++)
se(BarsCalculated(Handle)>=o_bars_reoptimizate)
{ Print(BarsCalculated(Handle)); break; } else Sleep(100);}
Per questo codice, mi aspetto il risultato - se il numero di barre calcolate per un certo indicatore è maggiore di un certo valore, il ciclo viene interrotto; altrimenti c'è un ritardo di 100ms nell'ulteriore esecuzione del codice. Il ritardo totale possibile è 100*10000ms....Questo è un tempo sufficiente per il calcolo dell'indicatore. Allora perché il codice continua a girare (che segue questo ciclo) o nel tester, questa funzione non funziona come presumo. Grazie in anticipo per il chiarimento.
Buona sera.
Potete spiegarmi, per favore, come funziona il metodo SLeep()?
Dovrebbe mettere in pausa l'Expert Advisor per un certo periodo di tempo, o mi sbaglio?
{for (int sleep=0;sleep<10000;sleep++)
se (BarsCalculated(Handle)>=o_bars_reoptimizate)
{ Print(BarsCalculated(Handle)); break; } else Sleep(100);}
Per questo codice, mi aspetto il risultato - se il numero di barre calcolate per un certo indicatore è maggiore di un certo valore, il ciclo viene interrotto; altrimenti c'è un ritardo di 100ms nell'ulteriore esecuzione del codice. Il ritardo totale possibile è 100*10000ms....Questo è un tempo sufficiente per il calcolo dell'indicatore. Allora perché il codice continua a girare (che segue questo ciclo) o nel tester, questa funzione non funziona come presumo. Grazie in anticipo per il chiarimento.
La documentazione, per esempio, di CopyBuffer, fa scervellare: "Se volete fare una copia parziale dei valori dell'indicatore in un altro array (non il buffer dell'indicatore), dovete usare l'array intermedio per questo scopo, nel quale vengono copiati i valori richiesti. E già da questa matrice intermedia eseguire la copia elemento per elemento del numero richiesto di valori nei posti giusti della matrice ricevente. "
Se si fa esplicitamente riferimento abuffer_num, la necessità di legare preliminarmente l'array ricevente al buffer indicatore con uno o un altro numero di sequenza attraverso SetIndexBuffer è certamente implicita. Ma,"se vogliamo copiare alcuni valori dell'indicatore in un altro array (non il buffer dell'indicatore)", non possiamo parlare dibuffer_num, perché non è un indicatore, e non lo abbiamo collegato a niente per definizione.
Una contraddizione?
Ambiguità?
O forse sono completamente programmato?
Ho cercato di trovare una definizione chiara di un buffer di indicatori e non ci sono riuscito. È davvero un buffer qualsiasi collegato tramite SetIndexBuffer o non è sufficiente e dovrebbe essere un array con l'identificatore INDICATOR_DATA?