Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 32
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
Controllo se l'indicatore è pronto (all'inizio diOnCalculate)
si può anche aggiungere un Controllo del periodo
1. Solo un chiarimento. Ora è chiaro che stiamo parlando della stessa cosa.
2. Lo capisco, ma non sono d'accordo che si debbano capovolgere gli array per farlo. È necessario avere un indicatore per due terminali? È quasi come fare 2in1 una falce e un'ascia.
3. come ho capito Buffer[] è usato dal ricevitore nella funzione CopyBuffer() per ottenere solo 1 valore di indicatore.
4. Non avete prestato attenzione alla cosa più importante. L'inizio della copia del valore dell'indicatore non dovrebbe essere determinato dall'indice della barra, ma dal tempo della barra i-esima.
1. Ok.
2. Ho invertito l'array perché riscrivo l'indicatore dai quattro - tutto funziona correttamente in esso e tutti i dati sono corretti. Tutto in esso è legato all'ottenimento di dati nell'esatta sequenza in cui vengono letti nel ciclo. Se non giriamo il buffer, dovremo scrivere l'indicatore da zero - per quale motivo? È abbastanza complicato. Ho citato questo indicatore solo come esempio di quanto sia errato ottenere dati da un cf non nativo.
No. In Buffer[], i dati vengono inseriti nel ciclo uno per uno - ad ogni iterazione del ciclo, viene inserito un valore preso da AO().
4. Cosa intende per "inizio della copia"?
1. Bene.
2. Sto capovolgendo l'array perché sto riscrivendo l'indicatore da quattro - tutto funziona correttamente in esso, tutti i dati sono corretti. Tutto è legato all'ottenimento dei dati nell'esatta sequenza in cui vengono letti nel ciclo. Se non giriamo il buffer, dovremo scrivere l'indicatore da zero - per quale motivo? È abbastanza complicato. Ho citato questo indicatore solo come esempio di quanto sia errato ottenere dati da un cf non nativo.
No. In Buffer[] i dati sono inseriti nel ciclo uno per uno - ad ogni iterazione del ciclo viene inserito un valore preso da AO()
4. Cosa intendete per "inizio della copiatura"?
2. Niente vi impedisce di costruire un ciclo da 0 a rates_total-1
3. Sì, ho sbagliato qualcosa da qualche parte.
4.
dovrebbe essere cambiato in
"Da dove iniziare" o "da quale data" questo è l'inizio della copia dei valori dell'indicatore nell'array del ricevitore.
3. Sì, ho sbagliato qualcosa da qualche parte.
4. Nel vostro codice.
dovrebbe essere cambiato in
"Da dove cominciamo" o "da quale data" questo è l'inizio della copia dei valori dell'indicatore nell'array del ricevitore.
Perché passare la data se sto leggendo il valore dall'indice del ciclo? Avete eseguito questo indicatore di prova? Trae sempre AO solo da uno - il fattore di corrente specificato nelle impostazioni. Non importa come cambiate il timeframe corrente, il grafico AO corrisponde sempre a quello che avete impostato nelle impostazioni.
In questo caso tutti i dati vengono restituiti, ma nel mio indicatore che sto modificando, i dati non vengono restituiti da un prezzo non nativo.
Non avete bisogno di questo indicatore di prova - i dati di una corrente non nativa sono già restituiti. Ma i dati non vengono restituiti nel mio, ma li ottengo allo stesso modo.
Perché passare la data se sto leggendo il valore dall'indice del ciclo? Avete eseguito questo indicatore di prova? Traccia sempre AO da uno solo - il setff nelle impostazioni. Non importa come cambiate il timeframe corrente, il grafico AO corrisponde sempre a quello che avete impostato nelle impostazioni.
In questo caso tutti i dati vengono restituiti, ma nel mio indicatore che sto modificando, i dati non vengono restituiti da un prezzo non nativo.
Non avete bisogno di questo indicatore di prova - i dati di una corrente non nativa sono già restituiti. Ma il mio no, ma ricevo i dati esattamente allo stesso modo.
Perché la barra zero H4 contiene QUATTRO barre H1. E se richiedete l'indice 2 del periodo H1, otterrete il valore dell'indicatore sulla barra 2 del periodo H4.
Faccio fatica a capire cosa sono riuscito a scrivere.
Al momento sono le 13:35. Tempo di apertura della barra H1 corrente = 13:00. Si cerca di copiare i valori dell'indicatore per l'indice della barra = 1, cioè la barra 12:00 del periodo H1 corrente. Ma invece delle 12:00 si ottengono le 8:00 al tempo H4 del periodo
Per H1 la prima barra è 12:00
Per H4 la prima barra è 8:00
Sia lì che lì l'indice della barra è il primo...
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
fxsaber, 2017.04.12 08:38
Un po' di punta di cappello. Bypassare l'operatore di assegnazioneForum sul trading, sistemi di trading automatico e test di strategie di trading
Non posso ottenere i dati dell'indicatore dal timeframe alto
Artyom Trishkin, 2017.04.14 01:23
Per quattro giorni ho cercato di ottenere i dati dell'indicatore AO standard dal timeframe senior nell'indicatore, e ancora nessun modo...
Sto leggendo i dati AO nel loop, ma esattamente nel loop non ci sono dati storici. Ci sono dati sulla barra corrente. Qual è il problema? Cosa sto facendo di sbagliato?
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Caratteristiche del linguaggio mql5, consigli e trucchi
fxsaber, 2017.02.27 18:40
Grazie per il suggerimento! Nel deserto è SymbolInfoMarginRate. Quindi ora è cosìdouble GetMarginRequired( const string Symb )
{
MqlTick Tick;
double MarginInit, MarginMain;
return((SymbolInfoTick(Symb, Tick) && SymbolInfoMarginRate(Symb, ORDER_TYPE_BUY, MarginInit, MarginMain)) ? MarginInit * Tick.ask *
SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
Dobbiamo essere chiari sul fatto che ci possono essere requisiti di margine molto diversi in MT5 in diverse direzioni. Cioè una singola variante di MT4 potrebbe non funzionare. Sul Forex, ovviamente, questo non sarà il caso. Ma dovete ricordare. Quindi, in generale, si dovrebbe scrivere così
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
double MarginInit, MarginMain;
const bool Res = SymbolInfoMarginRate(symbol, action, MarginInit, MarginMain);
margin = Res ? MarginInit * price * volume * SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) /
(SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0;
return(Res);
}
Evidenziato può restituire 0. BKS si è imbattuto in questo.
Fatto così:
Credo che stiate facendo molte cose "sbagliate". Per favore, descrivete quello che dovete fare: passo per passo, punto per punto.
Cosa c'è esattamente che non va? Questa era la domanda - cosa sto facendo di sbagliato per ottenere i dati degli indicatori da un timeframe non nativo?
Esempio: l'indicatore funziona su М1, mentre i dati di AO dovrebbero essere ottenuti da М5. Così, mentre abbiamo limite>1 (la storia deve essere ricalcolata), AO da M5 restituisce zero con assenza di errore di dati. Non appena tutta la storia è calcolata (limit==0), allora cominciano ad arrivare i dati di AO con M5.