Come codificare? - pagina 223

 

...

Penso (dato che non posso vedere il tuo EA che scrive i valori nel file csv) che ti manca una FileFlush(). Nei casi in cui si desidera rendere le modifiche nel file accessibile da "altri" immediatamente senza chiudere il file (che implicitamente utilizza flush ) si dovrebbe sempre eseguire il flush delle modifiche su disco

saluti

mladen

sunshineh:
Ciao,

Sto scrivendo un EA che lavora con i file CSV.

Per i test ho messo i miei file CSV nella seguente cartella:

/tester/files

Qui c'è solo una piccola parte del mio EA:

int handle = 0;

int Long = 0;

handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');

if (handle > 0)

{

Long= FileReadNumber(handle);

FileClose(handle);

}

Print("LongMarket = ", Long);

Print("Long handle = ", handle);

Nel mio EA leggo i file CSV e poi scrivo alcuni numeri interi.

Ora, quando faccio il mio test e leggo nel giornale i messaggi "Print", spesso ottengo vecchi numeri interi che non sono più scritti nei file CSV!

Per esempio:

Prima c'è scritto 3 e il mio EA funziona e scrive lo 0 nel file,

Posso vedere solo il 3 in quel file CSV!

Quando cancello quel file CSV e metto un nuovo file CSV con 3 in quella cartella "/tester/files", posso solo leggere lo 0 dal test prima di !!!! Ma non riesco a trovare dove l'EA legge lo 0!

Sto impazzendo!!!!!

Spero che possiate capire la mia domanda e darmi un consiglio!
 

Qualcuno può aiutarmi ad aggiungere una funzione di allarme?

Vorrei aggiungere una funzione di allarme di questo indicatore, allarme a colori. Ho provato per molto tempo, utilizzare il "se allarme", ma mai senza successo. Qualcuno può aiutarmi? Grazie mille! ~ Il mio inglese non è buono quindi scusate.

#proprietà indicator_chart_window

#proprietà indicator_buffers 4

#proprietà indicator_color1 ForestGreen

#Proprietà indicatore_colore2 Rosso

#Proprietà indicatore_colore3 Nero

#proprietà indicator_color4 Black

//---- parametri di input

extern int FastClosePeriod=13;

extern int FastCloseShift=0;

extern int FastOpenPeriod=34;

extern int FastOpenShift=0;

extern int SlowClosePeriod=34;

extern int SlowCloseShift=0;

extern int SlowOpenPeriod=62;

extern int SlowOpenShift=0;

//---- buffer degli indicatori

double ExtBlueBuffer[];

double ExtRedBuffer[]

double ExtDarkVioletBuffer[]

double ExtBlackBuffer[];

//+------------------------------------------------------------------+

//|Funzione di inizializzazione dell'indicatore personalizzata

//+------------------------------------------------------------------+

int init()

{

//---- spostamenti di linea durante il disegno

SetIndexShift(0,FastCloseShift);

SetIndexShift(1,FastOpenShift);

SetIndexShift(2,SlowCloseShift);

SetIndexShift(3,SlowOpenShift);

//---- prime posizioni saltate durante il disegno

SetIndexDrawBegin(0,FastCloseShift+FastClosePeriod);

SetIndexDrawBegin(1,FastOpenShift+FastOpenPeriod);

SetIndexDrawBegin(2,SlowCloseShift+SlowClosePeriod);

SetIndexDrawBegin(3,SlowOpenShift+SlowOpenPeriod);

//---- 3 buffer di indicatori mappati

SetIndexBuffer(0,ExtBlueBuffer);

SetIndexBuffer(1,ExtRedBuffer);

SetIndexBuffer(2,ExtDarkVioletBuffer);

SetIndexBuffer(3,ExtBlackBuffer);

//---- impostazioni di disegno

SetIndexStyle(0,DRAW_HISTOGRAM,0,2);

SetIndexStyle(1,DRAW_HISTOGRAM,0,2);

SetIndexStyle(2,DRAW_NONE,0,2);

SetIndexStyle(3,DRAW_NONE,0,2);

//---- etichette indice

SetIndexLabel(0, "FastClose");

SetIndexLabel(1, "FastOpen");

SetIndexLabel(2, "SlowClose");

SetIndexLabel(3, "SlowOpen");

//---- inizializzazione fatta

return(0);

}

//+------------------------------------------------------------------+

//| 9Squared Trader |

//+------------------------------------------------------------------+

int start()

{

int limite;

int counted_bars=IndicatorCounted();

//---- controllare eventuali errori

if(counted_bars<0) return(-1);

//---- l'ultima barra contata sarà ricontata

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- ciclo principale

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

{

//---- ma_shift impostato su 0 perché SetIndexShift chiamato in precedenza

ExtBlueBuffer=iMA(NULL,0,FastClosePeriod,0,MODE_EMA,PRICE_CLOSE,i);

ExtRedBuffer=iMA(NULL,0,FastOpenPeriod,0,0,MODE_EMA,PRICE_OPEN,i);

ExtDarkVioletBuffer=iMA(NULL,0,SlowClosePeriod,0,MODE_EMA,PRICE_OPEN,i);

ExtBlackBuffer=iMA(NULL,0,SlowOpenPeriod,0,MODE_EMA,PRICE_MEDIAN,i);

}

//---- fatto

return(0);

 
 
File:
example.gif  12 kb
example.mq4  3 kb
 
wolfe:
Ecco a voi. Ho fatto questo molto veloce, e sì, può essere fatto.

Dai un'occhiata all'allegato example.mq4 per un esempio di codifica.

È incluso anche uno screenshot con i commenti, così puoi vedere che i valori RSI vengono salvati tick per tick nell'array.

Ciao Wolfe,

Grazie mille per il tuo timer e i tuoi sforzi. Proverò questo

saluti,

MSV

 
 

Banda di Bollinger

Ciao,

Qualcuno può aiutarmi sulla fomula Bollinger Band (20periodo dev 2 sulla chiusura) in un foglio di calcolo Excel. Grazie in anticipo.

 

Ciao ragazzi !!!

Ho bisogno di aprire solo "un ordine di acquisto e vendita "al giorno" nel mio EA, per favore, come è il codice per fare questo?

 
Apolofx:
Ho bisogno di aprire solo "un ordine di acquisto e di vendita" al giorno nel mio EA, per favore, com'è il codice per fare questo?

Credo che tu abbia bisogno di fare un ciclo di tutti gli ordini chiusi e controllare ognuno per il suo simbolo e tempo di chiusura ... prendi quello che corrisponde a Symbol() e che ha l'ultimo tempo di chiusura. poi aggiungi 24 ore e usalo in una variabile per testare il tempo corrente e apri il trade quando raggiunge l'ultimo ordine + 24 ore

 

Oppure un modo più semplice per farlo sarebbe usare semplicemente la funzione TimeDayOfYear e controllare l'ultimo ordine chiuso con simbolo e numero magico corrispondenti. Assicurati solo che non sia lo stesso giorno dell'anno di oggi.

Dai un'occhiata al file di aiuto per la definizione e l'uso di TimeDayOfYear

Saluti

Lux

Motivazione: