Errori, bug, domande - pagina 131

 
Dmitriy2:

il codice è inserito, il file non è allegato


Sono state fatte delle correzioni.

Si prega di riprovare.

 
alexvd:

Si blocca a causa del ciclo infinito.

Hai l'unico modo per uscire dal giro: la pausa. Ma la rottura che avete avviene quando si verifica una certa condizione. Uno dei componenti

Si ottiene ogni volta l'handle dell'indicatore all'interno della funzione e lo si copia senza controllare se i dati sono pronti.

Suggerimento.

1. Porta la variabile handle al livello globale.

2. Ricevi la maniglia dell'indicatore a OnInit (non cambi i parametri della parabola in ogni caso).

3. Prima di copiare i dati dal buffer dell'indicatore, controlla la sua prontezza (calcolabilità) - la funzione BarsCalculated (Parabolic) ti aiuterà.

4) Organizzare l'uscita dal ciclo, se non si fa il punto 3, sarà necessario chiamare la funzione BarsCalculated(Parabolic). 3 non è soddisfatto.

2. non sta cambiando nell'esempio di test, infatti questa funzione è usata tutto il tempo con diversi parametri, ecco perché ottengo l'handle non in OnInit

3. lo controllerò, solo che non capisco bene a cosa mi serve, la condizione è tale che non può fallire, una serie di punti parabolici è le barre più vicine, dovrebbero sicuramente essere caricate (e in generale, capisco che lo storico viene caricato al tester un anno prima della data di inizio del test specificata). Funziona davvero bene. Funziona in MQL4 sia in reale che nel tester (anche se non c'è una funzione parabolica separata, ma è incorporata...).

 
alexvd:

Sono state fatte delle correzioni.

Prova di nuovo.

Sì, ha funzionato, grazie.
 
Dmitriy2:

2. non cambia nell'esempio di test, e infatti questa funzione è usata tutto il tempo con diversi parametri, quindi ottengo l'handle non in OnInit

3. Ok, farò un controllo, solo che non capisco bene il punto, la condizione è tale che non può fallire, una serie di punti parabolici è la barra più vicina, dovrebbero sicuramente essere caricati (e in generale, capisco che lo storico viene caricato al tester un anno prima della data di inizio del test specificata). Funziona davvero bene. Funziona in MQL4 sia in reale che nel tester (anche se non c'è una funzione parabolica separata, ma è incorporata...).

3. È stato già discusso e descritto nel riferimento(https://www.mql5.com/ru/docs/series/barscalculated), perché è necessario.

Nota

Questa funzione è utile quando si vogliono ottenere i dati dell'indicatore subito dopo la sua creazione (per ottenere un handle dell'indicatore).

Questo è il suo caso.

L'indicatore è calcolato in base ai dati delle barre. Le barre ci sono, ma i dati calcolati possono essere assenti.

Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
  • www.mql5.com
Доступ к таймсериям и индикаторам / BarsCalculated - Документация по MQL5
 
Rosh:
Ciò significa che questa posizione è il risultato di diversi scambi in questo strumento. Di conseguenza, si vede il prezzo medio ponderato della posizione.
Credevo cheil prezzo medio ponderato si riferisse solo agli indicatori tecnici... credo di non riuscire sempre a portarlo a 0 nel tester durante le corse... a volte qualche centesimo sporge ancora
 
alexvd:

3. Il perché sia necessario è già stato discusso molte volte ed è descritto nell'aiuto(https://www.mql5.com/ru/docs/series/barscalculated).

Questo è il suo caso.

L'indicatore è calcolato su dati a barre. Le barre ci sono, ma i dati calcolati potrebbero non esserci.

Sì, ce l'ho con BarsCalculated, grazie.

Ma comunque è logicamente sbagliato che funzioni e non funzioni nel tester. Devi avere tutti i controlli già costruiti nel tester, e se la richiesta va a qualche dato e non c'è, allora apparirà l'errore. Ma il tester ha delle barre, ma per qualche motivo non può calcolare i dati e rimane in silenzio...

 
maryan.dirtyn:
Pensavo cheil prezzo medio ponderato fosse solo un indicatore tecnico... Non sempre ottengo 0 quando corro nello Strategy Tester... A volte può capitare qualche centesimo.

Media ponderata per volume. Per esempio, ci sono stati tre scambi su EURUSD:

Deal
Volume
Prezzo
Comprare EURUSD
0,1 lotto
1.2800
Comprare EURUSD0,2 lotti
1.3400
Comprare EURUSD0,3 lotti
1.2000
Totale: posizione lunga su EURUSD
0,6 lotto
?


Di conseguenza, abbiamo una posizione su EURUSD con un volume di 0,6 lotti, ma a quale prezzo?

 
Rosh:

Media ponderata per volume. Per esempio, ci sono stati tre scambi su EURUSD:

Deal
Volume
Prezzo
Comprare EURUSD
0,1 lotto
1.2800
Comprare EURUSD0,2 lotti
1.3400
Comprare EURUSD0,3 lotti
1.2000
Totale: posizione lunga su EURUSD
0,6 lotto
?


Ci ritroviamo con una posizione EURUSD di 0,6 lotti, ma a quale prezzo?

Non sarebbe più facile arrotondare il prezzo al livello di precisione della valuta a livello di server? Dopo tutto, l'Expert Advisor dovrà occuparsi della regolazione della precisione e del prezzo per punto...
 
Interesting:
Non sarebbe più facile arrotondare il prezzo al livello di precisione della valuta a livello di server? Dopo tutto, qualsiasi EA dovrebbe soffrire con l'aggiustamento della precisione e del prezzo per punto...
Perché l'EA dovrebbe preoccuparsi? Questo prezzo medio ponderato sarà necessario per calcolare la chiusura delle posizioni. L'Expert Advisor non ne avrà bisogno. La posizione dovrà essere chiusa ad un prezzo normale con il numero di cifre necessario per questo simbolo.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Rosh:
Perché l'Expert Advisor dovrebbe soffrire? Questo prezzo medio ponderato è necessario per calcolare la chiusura delle posizioni. Non è di alcuna utilità per l'Expert Advisor. Dovrà chiudere la posizione ad un prezzo normale con il numero di caratteri necessario per questo simbolo.

In alcuni casi, bisogna avere un valore di prezzo normalizzato, indipendentemente da come il prezzo viene ricevuto.

È più facile fare la normalizzazione lato server finché il server ricalcola comunque il prezzo di apertura (almeno secondo me).


A proposito, visto che stiamo parlando di prezzo medio ponderato e piattaforma di compensazione.

Per quanto ho capito ci sono due modelli di trimming (chiusura parziale) di una posizione perdente che è stata precedentemente chiusa:

1. Non fissare la perdita sulla chiusura parziale, ma semplicemente ricalcolare il prezzo di apertura (se non mi sbaglio, è quello che fa FC);

2. lasciare il prezzo di apertura invariato, fissando la perdita.

Lo stesso vale per l'inversione delle posizioni perdenti


Voglio sapere l'opinione degli sviluppatori su quale metodo sarà alla fine standardizzato in MT5, se possibile perché...