[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 1069
Facciamo un semplice esperimento dimostrando che il drawdown in un trade separato (ogni trade) NON appare sul grafico del saldo/equity.
Scriviamo un Expert Advisor di due righe di codice:
Eseguiamolo sul grafico EURUSD D1 dal 1° maggio 2010 al 1° agosto 2010. Dovrà comprare EUR a 1.2200 senza stop e chiudere la posizione a take profit a 1.3000 Vedremo il drawdown sul grafico di equilibrio/equity e sul grafico di visualizzazione:
Come potete vedere, sul grafico di visualizzazione (in alto nello screenshot) il drawdown è visibile, mentre sul grafico di equilibrio/equity NON lo è. C'è solo un commercio lì. Guardiamo il rapporto del tester:
Nel rapporto del tester, l'estrazione è FIGURANTE.
Spero che la questione sia stata chiarita?
.
Forse, c'è una domanda "PERCHE' si fa così?" Questa è una domanda non per noi utenti, ma per gli sviluppatori di MT4. Secondo me, questo è sbagliato perché il grafico di equilibrio/equità non mostra l'overbetting.
Alexander, grazie mille! Molto dettagliato e approfondito, grazie mille per il vostro lavoro. Gli sviluppatori di MT4 non rispondono qui?
C'è un problema. Una transazione dovrebbe essere aperta quando passa attraverso il limite superiore (acquisto) o inferiore (vendita) del corridoio dell'indicatore.
double barier = 0.08; // confini del corridoio.
R() - funzione indicatore
Funzione per controllare la condizione di attraversamento del confine superiore o inferiore:
L'Expert Advisor apre una posizione immediatamente quando l'indicatore passa un confine (indipendentemente da quale). Se è su - compra, se è giù - vendi.
C'è un problema. L'operazione dovrebbe essere aperta quando passa attraverso il limite superiore (acquisto) o inferiore (vendita) del corridoio dell'indicatore.
...
In realtà succede che l'EA apre una posizione immediatamente quando l'indicatore passa il confine (non importa quale). Se sale - compra, se scende - vendi.
Aumentare leggermente il valore della variabile barier
dzhini: Non è utile. Potrebbe essere dovuto a un errore di assegnazione dei segni?
Puoi leggere i fondi di caffè o qualcos'altro, dato che ovviamente non ci sono abbastanza informazioni.
1. un indicatore o oscillatore:
2. Se oscillatore, ha dei limiti o no? Se lo fa, quali sono i suoi alti e bassi?
3. Forse il problema non è nel codice della suddetta funzione, ma nel codice della sua interpretazione?
Poiché non ci sono telepati qui, e tutte le informazioni necessarie che avete sono classificate, la domanda è la risposta. Cioè, in base alle informazioni che hai fornito, aumentando la variabile avresti dovuto risolvere il problema.
Si possono leggere i fondi di caffè o qualcos'altro, dato che le informazioni sono chiaramente insufficienti.
1. un indicatore o oscillatore:
2. Se è un oscillatore, è limitato o no? Se lo fa, quali sono il suo massimo e il suo minimo?
3. Forse il problema non sta nel codice della funzione di cui sopra, ma nel codice della sua interpretazione?
Dato che non ci sono telepati qui e hai tutte le informazioni che ti servono segnate come segrete, la domanda è la risposta. Cioè a colpo d'occhio, a giudicare dalle informazioni che fornite, l'aumento della variabile dovrebbe aver risolto il problema.
La vostra funzione deve funzionare correttamente secondo le condizioni menzionate nei commenti:
int RFilter()
{
if ( R(2)> -barier && R(1) < -barier ) return (-1); // posa corta se il valore dell'indicatore sulla barra precedente è superiore alla barra inferiore e quella attuale è inferiore a questa barra
if ( R(2)< barier && R(1) > barier ) return (1); // posa lunga se il valore dell'indicatore è sotto la barra superiore sulla barra precedente ed è sopra questa barra su quella attuale
return(0); // Non fare nulla in tutti gli altri casi.
Allora la vostra funzione dovrebbe funzionare correttamente per le condizioni nei commenti:
int RFilter()
{
if ( R(2)> -barier && R(1) < -barier ) return (-1); // posa breve, se il valore dell'indicatore sulla barra precedente è superiore alla barra inferiore e quella attuale è inferiore a questa barra
if ( R(2)< barier && R(1) > barier ) return (1); // posa lunga se il valore dell'indicatore è sotto la barriera superiore sulla barra precedente e la supera sulla barra attuale
return(0); // Nessuna azione in tutti gli altri casi.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Facciamo un semplice esperimento dimostrando che il drawdown in un trade separato (ogni trade) NON appare sul grafico del saldo/equity.
Scriviamo un Expert Advisor di due righe di codice:
Eseguiamolo sul grafico EURUSD D1 dal 1° maggio 2010 al 1° agosto 2010. Dovrà comprare EUR a 1.2200 senza stop e chiudere la posizione a take profit a 1.3000 Vedremo il drawdown sul grafico di equilibrio/equity e sul grafico di visualizzazione:
Come potete vedere, sul grafico di visualizzazione (in alto nello screenshot) il drawdown è visibile, mentre sul grafico di equilibrio/equity NON lo è. C'è solo un commercio lì. Guardiamo il rapporto del tester:
Nel rapporto del tester, l'estrazione è FIGURANTE.
Spero che la questione sia stata chiarita?
.
Forse, c'è una domanda "PERCHE' si fa così?" Questa è una domanda non per noi utenti, ma per gli sviluppatori di MT4. Secondo me, questo è sbagliato perché il grafico di equilibrio/equità non mostra l'overbetting.
Colleghi, forse qualcuno si è imbattuto in questo.
C'è un limite al numero di file aperti contemporaneamente? 4 è OK, 5 è aperto, ma non ci scrive. Non riesco a capire cosa c'è che non va.
C'è un problema. Una transazione dovrebbe essere aperta quando passa attraverso il limite superiore (acquisto) o inferiore (vendita) del corridoio dell'indicatore.
double barier = 0.08; // confini del corridoio.
R() - funzione indicatore
Funzione per controllare la condizione di attraversamento del confine superiore o inferiore:
int RFilter()
{
se ( R(2)> -barier && R(1) < -barier ) ritorna (-1);
se ( R(2)< barier && R(1) > barier ) ritorna (1);
}
L'Expert Advisor apre una posizione immediatamente quando l'indicatore passa un confine (indipendentemente da quale). Se è su - compra, se è giù - vendi.
C'è un problema. L'operazione dovrebbe essere aperta quando passa attraverso il limite superiore (acquisto) o inferiore (vendita) del corridoio dell'indicatore.
...
In realtà succede che l'EA apre una posizione immediatamente quando l'indicatore passa il confine (non importa quale). Se sale - compra, se scende - vendi.
Domanda per gli intenditori
Posso creare il mio strumento di trading per il mio tester?
Sostituisci EURUSD30_2.fxt con il mio o con qualcos'altro.
metaquotes\tester\history\EURUSD30_2.fxt
Ho provato a creare simple_csv2fxt, ma tester ha sostituito il file con uno proprio.
Forse qualcuno ha qualche esperienza di creazione, grazie.
Aumentare leggermente il valore della variabile barier
Non è utile. Potrebbe essere dovuto a un errore di assegnazione dei segni?
Puoi leggere i fondi di caffè o qualcos'altro, dato che ovviamente non ci sono abbastanza informazioni.
1. un indicatore o oscillatore:
2. Se oscillatore, ha dei limiti o no? Se lo fa, quali sono i suoi alti e bassi?
3. Forse il problema non è nel codice della suddetta funzione, ma nel codice della sua interpretazione?
Poiché non ci sono telepati qui, e tutte le informazioni necessarie che avete sono classificate, la domanda è la risposta. Cioè, in base alle informazioni che hai fornito, aumentando la variabile avresti dovuto risolvere il problema.
Si possono leggere i fondi di caffè o qualcos'altro, dato che le informazioni sono chiaramente insufficienti.
1. un indicatore o oscillatore:
2. Se è un oscillatore, è limitato o no? Se lo fa, quali sono il suo massimo e il suo minimo?
3. Forse il problema non sta nel codice della funzione di cui sopra, ma nel codice della sua interpretazione?
Dato che non ci sono telepati qui e hai tutte le informazioni che ti servono segnate come segrete, la domanda è la risposta. Cioè a colpo d'occhio, a giudicare dalle informazioni che fornite, l'aumento della variabile dovrebbe aver risolto il problema.
Questo è un indicatore con la seguente formula:
doppio R(int shift)}
Vincoli: (-1;1)
Questo è un indicatore con questa formula:
doppio R(int shift)}
Vincoli: (-1;1)
La vostra funzione deve funzionare correttamente secondo le condizioni menzionate nei commenti:
int RFilter()
{
if ( R(2)> -barier && R(1) < -barier ) return (-1); // posa corta se il valore dell'indicatore sulla barra precedente è superiore alla barra inferiore e quella attuale è inferiore a questa barra
if ( R(2)< barier && R(1) > barier ) return (1); // posa lunga se il valore dell'indicatore è sotto la barra superiore sulla barra precedente ed è sopra questa barra su quella attuale
return(0); // Non fare nulla in tutti gli altri casi.
}
Allora la vostra funzione dovrebbe funzionare correttamente per le condizioni nei commenti:
int RFilter()
{
if ( R(2)> -barier && R(1) < -barier ) return (-1); // posa breve, se il valore dell'indicatore sulla barra precedente è superiore alla barra inferiore e quella attuale è inferiore a questa barra
if ( R(2)< barier && R(1) > barier ) return (1); // posa lunga se il valore dell'indicatore è sotto la barriera superiore sulla barra precedente e la supera sulla barra attuale
return(0); // Nessuna azione in tutti gli altri casi.
}