Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 694

 
Renat Akhtyamov:

bene, allora il ciclo indicatore, in cui il numero di barre è proprio questa linea.

Mi chiedo - cosa è chiaro(?), cioè dove leggere sulle peculiarità di MT5 in modalità offline, potresti dirmi per favore?

L'indicatore rates_total - utilizzato con successo al posto di Bars() nel ciclo OnCalculate()
 
Artyom Trishkin:
Nell'indicatore rates_total - è usato con successo al posto di Bars() nel ciclo di OnCalculate()

Ok. Sì, esiste una cosa del genere.

Ci sarà lo stesso numero di barre per diversi strumenti/timeframes, perché ho un indicatore multi-valuta?

Posso cambiare i parametri qui

Bars(_Symbol,_Period);

Ma che dire di rates_total per calcolare l'indicatore per diversi timeframe e simboli?

 
Renat Akhtyamov:

Ok. Sì, esiste una cosa del genere.

Ci sarà lo stesso numero di barre per diversi strumenti/timeframes, perché ho uno strumento multi-valuta?

Per ottenere il numero di barre della storia per un timeframe non corrente o un simbolo non corrente in un indicatore multi-valuta/multi-timeframe, dovremmo usare Bars()
 
Artyom Trishkin:
Per ottenere il numero di barre della storia per un timeframe non corrente o un simbolo non corrente in un indicatore multi-valuta/multi-timeframe, dovreste usare Bars()

Questo è esattamente quello che sto scrivendo - che questa funzione non funziona offline, anche se c'è una cronologia delle citazioni

Pertanto, l'indicatore non può essere testato offline.

Risulta che la quotazione in MT5 è inviata personalmente ad ogni IP e può essere diversa dalla storia della quotazione, che è già disegnata sul grafico? //così va la logica...

 
Renat Akhtyamov:

e poi l'indicatore, in cui il numero di barre è proprio questa linea.

Mi chiedo - che cosa è chiaro(?), cioè dove leggere sulle peculiarità di MT5 in modalità offline, si potrebbe per favore dire?

È chiaro che MT5. Non è chiaro cosa sia stato fatto prima di chiamare Bars(). Questo semplice script funziona e non restituisce zero anche quando non c'è connessione al server o quando non c'è proprio rete.

Non l'ho provato negli indicatori, per questo ho chiesto come si fa nel vostro caso. Molto probabilmente, quando la ri-chiamata sarà il numero reale di barre, la prima chiamata causerà il rinnovo dei dati nella cache.

void OnStart()
  {
        Print("Bars on chart - ",Bars(_Symbol,PERIOD_CURRENT));  
  }
 
Vitalie Postolache:

È chiaro che MT5. Non è chiaro cosa sia stato fatto prima di chiamare Bars(). Questo semplice script funziona per me e non restituisce zero, anche quando non c'è connessione al server o quando non c'è proprio rete.

Non l'ho provato negli indicatori, per questo ho chiesto come si fa nel vostro caso.

void OnStart()
  {
        Print("Bars on chart - ",Bars(_Symbol,PERIOD_CURRENT));  
  }
chiaramente
 

Qual è il modo più semplice per collegarsi alla chiusura di una candela per eseguire l'EA? Per ricalcolare gli indicatori, rimuovere/posizionare gli ordini, ecc.

Con il timer?

Ma come far partire il timer al momento giusto in modo che si attivi ogni ora alle HH:00:00? e non ogni ora dall'attivazione del timer?

 
dimnik:

Qual è il modo più semplice per collegarsi alla chiusura di una candela per eseguire l'EA? Per ricalcolare gli indicatori, rimuovere/posizionare gli ordini, ecc.

Con il timer?

Ma come far partire il timer al momento giusto in modo che si attivi ogni ora alle HH:00:00? e non ogni ora dall'attivazione del timer?

Controlla il tempo di apertura della candela corrente e lo confronta con il tempo di apertura dell'ultimo controllo. Se sono uguali, significa che una nuova barra non si è ancora aperta e ritorna da OnTick(). Se non è uguale - abbiamo identificato l'apertura di una nuova barra - fai tutto ciò che è scritto nell'Expert Advisor e ricorda il nuovo tempo di apertura per il prossimo controllo.
 
Vitaly Muzichenko:

Domanda grafica:

C'è un design come questo

for(long currChart = ChartFirst();currChart != -1; currChart=ChartNext(currChart)) {
 if(currChart == график тестера) continue; // Что сюда написать?
  ObjectSetInteger(currChart,"Sync",OBJPROP_BGCOLOR,clrGreen);
}

Come posso scoprire che il grafico non è quello principale, ma aperto in modalità tester e saltarlo?

Come suggerimento.

Create un modello per il grafico e mettete un'etichetta con il nome, per esempio, "TesterChart" o qualsiasi altro oggetto, potete usare coordinate zero in modo che non sia visibile. Date un nome a questo modello "Tester". Ora tutti i grafici dei test avranno un oggetto con questo nome. Poi chiedete se il grafico ha questo oggetto, se sì, è "Il nostro Tester", saltatelo.

In tutto e per tutto, ma non conosco altro modo.

 
Vasiliy Pushkaryov:
Come suggerimento.

Create un modello per il grafico ed etichettatelo con un nome come "TesterChart" o qualsiasi altro oggetto, possibilmente a coordinate zero in modo che non sia visibile. Date un nome a questo modello "Tester". Ora tutti i grafici dei test avranno un oggetto con questo nome. Poi chiedete se il grafico ha questo oggetto, se sì, è "Il nostro Tester", saltatelo.

Non so come, ma non conosco altro modo.

Grazie, ma questa soluzione non è adatta nel senso che sto testando su più di un modello, ma questo è metà del problema, ma il fatto che questo indicatore non funziona solo per me, la gente semplicemente si stanca di riempire le etichette nel tester.

Risulta che non c'è modo di determinare programmaticamente che il grafico funzioni nel tester? Dove siete voi sviluppatori?

.

Motivazione: