Come codificare? - pagina 7

 

Da quanto ho capito, il modo migliore / più facile per farlo sarà guardare la barra precedente, come hai detto tu. Si può essere in ritardo e si può non esserlo. Ecco cosa intendo:

La funzione Start() elabora ogni tick. MT4, per progettazione, elabora solo il tempo dopo un tick. Ciò significa che una nuova barra non appare sul tuo grafico fino al primo tick di quella nuova barra. Quindi, quando ti avvicini alla fine di una barra, se il tuo allarme scatta dopo ogni tick (il modo fastidioso), riceverai un allarme sull'ultimo tick della barra. Se guardi alla barra precedente per il tuo allarme (il modo non fastidioso), avrai un allarme sul primo tick della nuova barra.

Così, durante le ore con molta attività di mercato, il primo tick della nuova barra può avvenire immediatamente dopo la chiusura della barra precedente (in base al tempo). Durante le ore di mercato lento, potrebbero passare 20-30 secondi prima che arrivi un nuovo tick, e MT 4 non vi mostrerà la nuova barra fino a quando non avrete il primo tick.

Spero che questo sia chiaro.

Keris

 

Ho bisogno di aiuto per codificare "La tecnica di entrata Volatility Stop".

Il Volatility Stop calcola la volatilità utilizzando il range medio della barra del prezzo. Si calcola moltiplicando il range medio per una costante. Il valore viene aggiunto alla chiusura più bassa quando si è corti, e sottratto dal massimo più alto quando si è lunghi:

Range = (Range x (N - 1) + High - Low / N)

Short = Chiusura più bassa + Intervallo x C

Lungo = Chiusura più alta - Intervallo x C

È meglio usare il Volatility Stop in mercati con forte tendenza. È un'eccellente tecnica di entrata e nella maggior parte dei casi sarà superiore alle rotture di linee di tendenza valide o ai breakout di canali. Lo stop inverso agisce anche per quantificare il rischio in relazione alla volatilità. Le costanti dovrebbero essere mantenute tra 2.5 e 4.0.

Non ho esperienza personale con questo indicatore, ma l'ho letto nel libro "Fibonacci Ratios with Pattern Recognition".

Sarei molto felice se qualcuno potesse codificare questo indicatore.

File:
v.s..bmp  962 kb
 

Igorad, grazie mille, il Volty Channel Stop era esattamente quello che stavo cercando

 

Per favore aiutatemi con questo codice...

Sto cercando di conoscere il meccanismo dell'indicatore LSMA_in_color, che ho trovato altrove su questo forum. Il seguente codice imposta il colore dei segmenti di linea dell'indicatore in base ai valori in wt[]:

//========== COLOR CODING ===========================================

ExtMapBuffer3[shift] = wt[shift]; //yellow

ExtMapBuffer2[shift] = wt[shift]; //blue

ExtMapBuffer1[shift] = wt[shift]; //red

if (wt[shift+1] > wt[shift])

{

ExtMapBuffer2[shift] = EMPTY_VALUE; //turn blue off

Print ("red ",wt[shift+1]," ",wt[shift]);

}

else if (wt[shift+1] < wt[shift])

{

ExtMapBuffer1[shift] = EMPTY_VALUE; //turn red off

Print ("blue ",wt[shift+1]," ",wt[shift]);

}

else

{

ExtMapBuffer1[shift]=EMPTY_VALUE; //turn red off;

ExtMapBuffer2[shift]=EMPTY_VALUE; //turn blue off;

Print ("yellow ",wt[shift+1]," ",wt[shift]);

}

Ho aggiunto le funzioni Print() in modo da poter vedere quali sono i valori reali nelle tre condizioni di colore - rosso, giallo e blu. Sembra che la condizione gialla si verifichi solo quando wt[shift] == wt[shift+1], ma per qualche motivo quando lo eseguo il log mostra che non entra mai nella condizione gialla. Ogni voce di registro scritta è rossa o blu. Sul grafico, ci sono chiaramente condizioni gialle che si verificano - ogni volta che cambia da rosso a blu o da blu a rosso va in giallo nel mezzo... Perché non stampa le condizioni gialle nel log?

Inoltre, guardando il log vedo casi in cui wt[shift] è identico a wt[shift+1], ma viene stampato come condizione rossa. Come può accadere questo quando la condizione rossa richiede che wt[shift+1] > wt[shift]?

Qualsiasi aiuto sarebbe apprezzato

 

Sì, qualsiasi aiuto.....

 

im a real noob at code but looks like yellow is always on and either red or blue gets put on top of it or jsut replaces it unless its even in which case nothing gets drawn on top of yellow. as far as it still being red when they are even dunno

 

codice per controllare se l'ultimo trade [chiuso] è stato un guadagno o una perdita.

C'è un metodo in mql4 per controllare se l'ultimo trade ha prodotto un profitto o una perdita, dopo che è stato chiuso?

Sto provando OrderSelect() e OrderProfit() con HistoryTotal() usando un array... ma OrderProfit sembra riferirsi all'ordine aperto, quindi non mi dà i risultati che voglio.

In media, il mio sistema ha 5 vittorie consecutive e 1 perdita. Quello che voglio fare è, dopo un trade perdente, aumentare il numero di lotti utilizzati perché è probabile che il trade successivo sia vincente.

Ho quindi bisogno di controllare il risultato dell'ultimo trade chiuso, prima di modificare il numero di lotti.

Qualsiasi aiuto sarebbe apprezzato...

 
fxdk:
C'è un metodo in mql4 per controllare se l'ultima operazione ha prodotto un profitto o una perdita, dopo che è stata chiusa?

Sto provando OrderSelect() e OrderProfit() con HistoryTotal() usando un array... ma OrderProfit sembra riferirsi all'ordine aperto, quindi non mi dà i risultati che voglio.

In media, il mio sistema ha 5 vittorie consecutive e 1 perdita. Quello che voglio fare è, dopo un trade perdente, aumentare il numero di lotti utilizzati perché è probabile che il trade successivo sia vincente.

Ho quindi bisogno di controllare il risultato dell'ultimo trade chiuso, prima di modificare il numero di lotti.

Qualsiasi aiuto sarebbe apprezzato...

fxdk,

per controllare il profitto dell'ultimo ordine chiuso usate questo codice:

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); /Questo è il profitto o la perdita dell'ultimo ordine chiuso

 
codersguru:
fxdk,

per controllare il profitto dell'ultimo ordine chiuso usa questo codice:

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); //Si tratta dell'ultimo profitto o perdita dell'ordine chiuso

Penso che questo possa non essere sempre vero. Ho avuto una discussione con Slawa, e sembra che la STORIA, come il TRADE, non sono sempre ordinati per data, e dipende dal colonnino di ordinamento che state usando sulla scheda del terminale. Quindi è più sicuro scansionare tutta (!) la Storia e confrontare le date di chiusura; poi ricordarsi l'ultima così la prossima volta non è necessario scansionare l'intero array.