Aiuto per la codifica - pagina 36

 

Ho bisogno di una mano per regolare lo STOPLOSS

mladen:
kemal44

Ecco un link a un thread dove si spiega come usare le funzioni nel codice: https: //www.mql5.com/en/forum/173005

È spiegato molto bene lì (e più di quanto io possa spiegare in un post) come usarli

Caro Mladen,

durante il backtesting, BreakEven-Stoplos sembra funzionare, ma quando il conto reale, per quanto vedo che non funziona correttamente,

ti dispiacerebbe dare un'occhiata a un file esperto, e poi dirmi cosa c'è di sbagliato con esso?

grazie in anticipo

File:
xpexpert.txt  24 kb
 

...

kemal

Controlla nella scheda esperti del terminale quale errore è scritto.

Non posso controllarlo perché manca la logica di entrata (non imposta mai BuyCondition o SellCondition a true come è scritto)

kemal44:
Caro Mladen,

Durante il backtesting, BreakEven-Stoplos sembra funzionare ma quando il conto reale, per quanto vedo che non funziona correttamente,

ti dispiacerebbe dare un'occhiata a un file esperto, e poi dirmi cosa c'è di sbagliato?

grazie in anticipo
 
mladen:
kemal

Controllate nella scheda esperti del terminale quale errore è scritto.

Non posso controllarlo perché manca la logica di entrata (non imposta mai BuyCondition o SellCondition a true nel modo in cui è scritto)

Ecco l'esperto con la logica buy sell,

Il problema è lo stop-loss di pareggio.

Quello che voglio fare per breakeven è che se il profitto salta su 5 pip dal punto di entrata, lo stop-loss dovrebbe essere impostato sul punto di entrata per proteggere il portafoglio,

grazie in anticipo

File:
xpexpert_1.txt  24 kb
 

...

Dato che la distanza minima dello stop loss dipende da simbolo a simbolo, da broker a broker e può variare da un momento all'altro, prima di impostare il break even, aggiungete un controllo che sarebbe qualcosa del genere (questo è un esempio generico quando un ordine è un ordine di acquisto, potete scriverlo molto simile all'ordine di vendita) :

double minimalDistance = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

if (OrderType()=OP_BUY && (Bid-OrderOpenPrice())>=minimalDistance)

... your code for setting stop loss

PS: tutto questo è valido (secondo le ultime modifiche - dalla build 419 in su) nei casi in cui il vostro broker non è un broker ECN. Se il vostro broker è un broker ECN, in quel caso MarketInfo(Symbol(),MODE_STOPLEVEL) restituirà 0 nelle ultime build e dovrete fare qualche esperimento per regolare la distanza minima (se c'è) dello stop loss

kemal44:
Ecco l'esperto con la logica buy sell,

il problema è lo stop-loss di pareggio.

Quello che voglio fare con breakeven è che se il profitto sale di 5 pip dal punto di entrata, lo stop-loss dovrebbe essere impostato sul punto di entrata per proteggere il portafoglio,

grazie in anticipo
 
mladen:
Poiché la distanza minima dello stop loss dipende da simbolo a simbolo, da broker a broker e può variare da un momento all'altro, prima di impostare il break even, aggiungete un controllo che sarebbe qualcosa del genere (questo è un esempio generico quando un ordine è un ordine di acquisto, si può scrivere molto simile all'ordine di vendita):
double minimalDistance = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

if (OrderType()=OP_BUY && (Bid-OrderOpenPrice())>=minimalDistance)

... your code for setting stop loss

PS: tutto questo è valido (secondo le ultime modifiche - dalla build 419 in su) nei casi in cui il vostro broker non è un broker ECN. Se il vostro broker è un broker ECN, in questo caso MarketInfo(Symbol(),MODE_STOPLEVEL) restituirà 0 nelle ultime build e dovrete fare qualche esperimento per regolare la distanza minima (se c'è) dello stop loss

Grazie;

La distanza è una bella idea,

Non ho idea delle regole dei broker ECN, il mio broker è una società locale

 

...

kemal44

Del tuo broker - prova quanto segue: un modo semplice per controllare è provare ad aprire un ordine manualmente ma quando lo fai prova ad impostare stop loss e/o take profit. Se questi campi sono disabilitati (come nell'immagine qui sotto) nella finestra di dialogo dell'ordine aperto o qualsiasi valore tranne 0 che hai impostato in questi campi, ottieni un errore, allora il tuo broker è un tipo di broker "ECN / STP".

kemal44:
Grazie;

La distanza è una bella idea,

Non ho idea delle regole dei broker ECN, il mio broker è una società locale
File:
order_open.gif  22 kb
 
mladen:
kemal44

Del tuo broker - prova quanto segue: un modo semplice per controllare è provare ad aprire un ordine manualmente ma quando lo fai prova ad impostare stop loss e/o take profit. Se questi campi sono disabilitati (come nell'immagine qui sotto) nella finestra di dialogo dell'ordine aperto o qualsiasi valore, tranne 0, impostato in questi campi, si ottiene un errore, allora il vostro broker è un tipo di broker "ECN / STP".

La mia finestra di trading è esattamente la stessa della foto sopra. Ho capito che il mio broker è di tipo "ECN / STP".

Grazie

nel frattempo, possiamo ottenere i canali (StdDev ecc.) forniti da MT4 automaticamente nel nostro grafico dall'indicatore o dal codice basato su ea, non ho idea di come codificarlo, ti dispiacerebbe aiutarmi a ottenere il codice di esempio per questo?

grazie in anticipo

 

...

kemal44

Non sono sicuro di aver capito la domanda sui "canali", ma lasciami provare:

Puoi usare qualsiasi indicatore costruito da metatrader usando le funzioni che ti hanno fornito. Per la deviazione standard, ad esempio, la sintassi è la seguente:

.[.[ della[

[TR]

[TD]ma_method

[TD] - [TD="width: 100%"]Metodo MA. Può essere qualsiasi.

[TR]

[TD]applied_price[TD] - [TD="width: 100%"]Prezzo applicato. Può essere uno di enumerazione del.

[TR]

[TD]shift[TD] - [TD="width: 100%"]Indice del valore preso dal buffer dell'indicatore (spostamento relativo alla barra corrente di un dato numero di periodi precedenti).
double iStdDev(

[/TD]

string symbol, int timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift)[/TD]

[/TR]

[/TABLE]

Calcola l'indicatore deviazione standard e restituisce il suo valore

Parametri:

[TABLE="class: docparams"]

symbol[/TD] -
/TD]Simbolo i cui dati devono essere usati per calcolare l'indicatore. NULL significa il simbolo corrente.[/TD]

[/TR]

timeframe[/TD] - [/TD]Timeframe. Può essere uno qualsiasi dei valori dell'enumerazione Timeframe 0 significa l'attuale timeframe del grafico.[/TD]

[/TR]

ma_period[/TD] -
/TD]periodo
media mobile.

[/TR]

[TR]

ma_shift -
TD="width: 100%"]MA shift.
valore dell'enumerazione del metodo della media mobile
qualsiasi dei valori
prezzo applicato

Esempio:

double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,0);

_________________________________________

Simile è per altri indicatori incorporati (questi :

Quindi puoi usare ognuno di questi come una chiamata di funzione da un altro indicatore, script o EA

Se intendi visualizzare alcuni dei valori degli indicatori incorporati sul grafico, allora devi usare un buffer di disegno (come nei normali indicatori) assegnare i valori di alcune delle funzioni di cui sopra al buffer di disegno e sarà visualizzato sul grafico. Gli EA non hanno buffer di disegno, quindi non puoi farlo usando i buffer di disegno di un EA (dovresti usare gli oggetti, ma questa è una storia completamente diversa)

kemal44:
Le mie finestre di trading sono esattamente le stesse della foto sopra. Ho capito che il mio borker è di tipo "ECN / STP".

Grazie

nel frattempo, possiamo ottenere i canali (StdDev ecc.) forniti da MT4 automaticamente nel nostro grafico tramite l'indicatore o il codice basato su ea, non ho idea di come codificarlo, ti dispiacerebbe aiutarmi a ottenere un codice di esempio per questo?

grazie in anticipo
 
mladen:
kemal44

Non sono sicuro di aver capito la domanda sui "canali", ma lasciatemi provare:

È possibile utilizzare qualsiasi indicatore costruito da Metatrader utilizzando le funzioni che hanno fornito. Per la deviazione standard, ad esempio, la sintassi è la seguente:

.. TD

[/TR]

[TR]

[TD="width: 100%"]MA shift.

[TR]

[TD]ma_method[TD] - [TD="width: 100%"]Metodo MA. Può essere qualsiasi.

[TR]

[TD]applied_price[TD] - [TD="width: 100%"]Prezzo applicato. Può essere uno di enumerazione del.

[TR]

[TD]shift[TD] - [TD="width: 100%"]Indice del valore preso dal buffer dell'indicatore (spostamento relativo alla barra corrente di un dato numero di periodi precedenti).
double iStdDev([/TD]string symbol, int timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift)[/TD]

[/TR]

[/TABLE]

Calcola l'indicatore deviazione standard e restituisce il suo valore

Parametri:

[TABLE="class: docparams"]

symbol[/TD] -[/TD]Simbolo i cui dati devono essere usati per calcolare l'indicatore. NULL significa il simbolo corrente.[/TD]

[/TR]

timeframe[/TD] -[/TD]Timeframe. Può essere uno qualsiasi dei valori dell'enumerazione Timeframe0 significa l'attuale timeframe del grafico.[/TD]

[/TR]

ma_period[/TD] -[/
]periodo MA.ma_shift -
valore dell'enumerazione del metodo della media mobile
qualsiasi dei valori
prezzo applicato

Esempio:

double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,0);

_________________________________________

Simile è per altri indicatori incorporati (questi :

Quindi puoi usare uno qualsiasi di questi come una chiamata di funzione da un altro indicatore, script o EA

Se intendete visualizzare alcuni dei valori degli indicatori incorporati sul grafico, allora dovete usare un buffer di disegno (come negli indicatori regolari) assegnare i valori di alcune delle funzioni di cui sopra al buffer di disegno e sarà visualizzato sul grafico. Gli EA non hanno buffer di disegno, quindi non puoi farlo usando buffer di disegno da un EA (dovresti usare oggetti, ma questa è una storia completamente diversa)

Quello che intendo per Sdv Channel è il canale come sotto,

a proposito, grazie per la risposta promp.

File:
xxx.gif  13 kb
 

EA con SAR parabolico

Avete un'idea di trading con SAR parabolico. Voglio fare EA con Parabolic SAR ma fino ad ora non ottengo buoni risultati. Quindi, se avete idea con SAR parabolico lo farò meglio. L'ultimo che faccio può fare che il profitto. ma l'equità non è mai lo stesso con l'equilibrio.

File: