Come codificare? - pagina 270

 

IndicatorCounted e mantenimento del buffer degli indicatori in sincronia.

Salve,

La mia domanda riguarda lo scorrimento del buffer nell'indicatore personalizzato. Ho chiesto in un altro forum ma senza risultato.

Per esempio

Codice:

#define MAX_LOOK_BACK 5

#property indicator_minimum 0

#property indicator_maximum 100

#property indicator_color1 DodgerBlue

#property indicator_separate_window

double rsiBuf[];

int start()

{

int limit;

int counted_bars = IndicatorCounted();

//---- check for possible errors

if(counted_bars < 0)

return(-1);

//---- the last counted bar will be recounted

if(counted_bars > 0)

counted_bars--;

limit=Bars-counted_bars;

//---- main loop

Print("indicator limit: ", limit);

if(MAX_LOOK_BACK < limit)

limit = MAX_LOOK_BACK;

//Calculate from right to left

for(int i = 0; i < limit; i++)

{

rsiBuf = iRSI(Symbol(), NULL, 14, PRICE_CLOSE, i);

}

}

Durante l'esecuzione dell'indicatore calcola gli ultimi valori RSI delle ultime 5 barre. (Ho messo un valore massimo MAXLOOK_BACK per facilitare i test) Se per esempio in una situazione in cui limite==2 (e limite==2 succede spesso nei miei test quando chiamo tramite iCustom in un EA) allora calcolerà i valori di barra 0 e barra 1 e scriverà rispettivamente su RSI[0] e RSI[1] e non toccherà il resto del buffer. Ogni indicatore personalizzato che ho visto è scritto in questo modo. Non dovremmo far scorrere il buffer se il limite < MAX_LOOK_BACK ? dato che sovrascrive le RSI[0] e RSI[1] ma i valori precedenti di questi elementi dovrebbero essere in RSI[2] e RSI[3], ho ragione ?

Per visualizzare:

Tick=0 AND limit = 5 ==> RSI[0] = 33,33 RSI[1] =44,44 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77,77

Ora supponiamo che gli ultimi 2 valori di RSI siano 88,88 e 99,99 e l'array sarà come segue:

Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99,99 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77,77

MA non dovrebbe essere questo:

Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99,99 RSI[2]=33,33 RSI[3]=44,44 RSI[4] = 55,55

Quando arrivano 2 nuove barre non dovremmo far scorrere i valori delle barre precedenti di 2? precedentePerché tutti gli indicatori sono scritti in questo modo e non c'è scorrimento dei valori. E perché disegnano correttamente le linee di tendenza.

 

Sto lavorando su un EA che usa la banda di Keltner per uscire da una posizione (sia per i profitti che per le perdite), tuttavia ogni volta che faccio la media con 2 lotti l'EA ignora la prima entrata. C'è qualche soluzione per questo a parte entrare con un nuovo grafico? Grazie

File:
 
mezarashii:
Sto lavorando su un EA che usa la banda di Keltner per uscire da una posizione (sia per i profitti che per le perdite), tuttavia ogni volta che faccio la media con 2 lotti l'EA ignora la prima entrata. C'è qualche soluzione per questo a parte entrare con un nuovo grafico? Grazie

Posta qui l'ea.

 

Il codificatore non mi ha ancora dato il codice sorgente, spero che questo sia utile di per sé. Qualsiasi feedback è molto apprezzato.

File:
 

Eliminazione condizionale in sospeso

Sto cercando uno script o un codice di cancellazione condizionale in sospeso.

Fondamentalmente voglio essere in grado di eseguire:

SE l'Ask è 200MA H1

Mantenendo qualsiasi ordine pendente aperto/vivente sotto la 200MA

Qualche idea?

 
 
 

Ottenere prezzi aperti settimanali per 10 coppie contemporaneamente

Ciao, sono nuovo con MT4. Sto cercando di automatizzare la mia tecnica scrivendo uno script per accedere ai prezzi aperti settimanali di 10 coppie contemporaneamente. Non posso usare un singolo EA o script per accedere a un grafico settimanale uno per uno. Qualcuno può consigliarmi qual è il modo migliore per farlo? Molte grazie .....

 
novalight:
Ciao, sono nuovo con MT4. Sto cercando di automatizzare la mia tecnica scrivendo uno script per accedere ai prezzi aperti settimanali di 10 coppie contemporaneamente. Non posso usare un singolo EA o script per accedere a un grafico settimanale uno per uno. Qualcuno può consigliarmi qual è il modo migliore per farlo? Molte grazie .....

Ciao,

devi combinare la funzione iOpen.

Per esempio diciamo che vuoi mostrare in commento i prezzi aperti di gbpusd, eurusd e usdjpy

allora lo snippet di codice sarebbe come questo:

double openPair1 = iOpen("EURUSD",PERIOD_W1,0);

double openPair2 = iOpen("GBPUSD",PERIOD_W1,0);

double openPair3 = iOpen("USDJPY",PERIOD_W1,0);

Comment("Apertura settimanale EURUSD: "+openPair1+nGBPUSD settimanale aperto: "+openPair1+"\nUSDJPY settimanale aperto: "+openPair1);

 

Preferisco avere le coppie come input insieme a 2 input aggiuntivi.

Gli input prefix e suffix evitano il problema quando i broker aggiungono qualcosa al nome della coppia di base.

extern string pair_preffix = "";

extern string pair_suffix = ""; // inserire m per i conti IBFX mini

extern string pair1 = "EURUSD;

extern string pair2 = "GBPUSD

extern string pair3 = "USDJPY";

stringa myPair1, myPair2, myPair3;

int init()

{

myPair1 = pair_prefix + pair1 + pair_suffix;

myPair2 = pair_prefix + pair2 + pair_suffix

myPair3 = pair_prefix + pair3 + pair_suffix;

return(0);

}

int start()

{

double openPair1 = iOpen(myPair1, PERIOD_W1,0);

double openPair2 = iOpen(myPair2, PERIOD_W1,0);

double openPair3 = iOpen(myPair3, PERIOD_W1,0);

Comment(pair1 + "apertura settimanale: "+openPair1+"\n" + pair2 + " apertura settimanale: "+openPair2+"\n" + pair3 " " settimanale aperto: " +openPair3);

}

Naturalmente userei gli array per questo quando si usano 10 coppie.

Robert Hill aka MrPip