Come codificare? - pagina 78

 

Ora sono riuscito a farlo funzionare.

 
hedge4x:
Questa linea while(!IsAllClosed) {CloseAllTrades(); return;}

nell'avvio principale chiuderà tutte le posizioni aperte se MT va giù

e lo faccio ripartire. C'è un modo per mettere questa linea

nella funzione closealltrades in modo che non chiuda tutte le posizioni aperte

dopo il riavvio di MT4?

Grazie.

Sì, scusa, puoi definire il bool all'avvio in questo modo:

bool IsAllClosed = true ; //Global variable[/PHP]

Then it becomes even better to define a extern variable, so you can keep the control :[PHP]extern bool CloseAll = false ; //Global variable

void CloseAllTrades()

{

int cnt;

CloseAll = false;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

CloseAll = CloseAll || !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

}

}

void start()

{

while(CloseAll) {CloseAllTrades(); return;}

...

Il vantaggio principale di questo metodo è che l'EA prova a chiudere ogni posizione ad ogni tick fino a quando tutte sono chiuse.

 

aiuto necessario con il mio primo EA semi-professionale

Ciao a tutti...

Ho fatto un EA dal grande sito web expert advisor bulder e l'ho testato e l'ho trovato redditizio per l'ultimo anno ma penso che possa essere migliorato ...

quindi se qualcuno può aiutare a migliorare questo EA?

detaled circa EA ...

l'EA si basa su due indicatori uno dei quali è mio e l'altro si trova su bublic fourms "zero lag macd".

ora l'esperto sta lavorando tutto il tempo entra in acquisto poi chiude e inverte per vendere e così via ...

ho bisogno di farlo funzionare solo in tempi brevi, aggiungere un money managemint e l'ultima cosa che mi serve è ritardare l'esecuzione di acquisto o vendita con la prossima candela "1 minuto" ma l'EA lavora sulla candela 1H infatti ...

quindi spero di trovare come può aiutare in questo

Grazie a tutti

i migliori saluti

Tamer

File:
 

come fare riferimento al nome del file che sto eseguendo?

Ciao,

Voglio sapere come posso fare riferimento a un nome di file che sto eseguendo.

Per esempio se eseguo uno script chiamato supertrader.mq4 e voglio aprire un file di log chiamato supertrader_logfile dallo script supertrader.

C'è una variabile che contiene il nome del file che sto eseguendo?

Grazie.

 
star90:
Ciao,

Voglio sapere come posso fare riferimento a un nome di file che sto eseguendo.

Per esempio se eseguo uno script chiamato supertrader.mq4 e voglio aprire un file di log chiamato supertrader_logfile dallo script supertrader.

C'è una variabile che contiene il nome del file che sto eseguendo?

grazie.

Forse aggiungendo void Print( ...) allo script.

void Print( ...) Stampa un messaggio nel log degli esperti.

 

A adria

Hai visto il mio PM?

Grande essere

 

Onda del lupo. Ho bisogno del tuo aiuto

Caro Codersguru,

Non sono un programmatore e nel mio stile per tentativi ed errori, l'onda del lupo che ho cercato di migliorare sta dando il segnale "il secondo parametro, ObjectTextSetFunction deve essere una stringa.

Per favore aiutami a rettificare.

Grazie in anticipo.

File:
wolfwave.rar  3 kb
 

Ciao ragazzi ho bisogno di una funzione bool che restituisca true se sono passati 5 minuti, o 10 minuti o altro. So già come controllare la presenza di una nuova barra, ma non abbastanza spesso.

 
nittany1:
Ciao ragazzi ho bisogno di una funzione bool che restituisca true se sono passati 5 minuti, o 10 minuti o altro. So già come controllare la presenza di una nuova barra, ma non abbastanza spesso.

Forse

double LastRedraw = 0;

if(TimeLocal() - LastRedraw > 300)

{

Print();

ObjectsRedraw();

Print("ObjectsRedraw Done");

LastRedraw = TimeLocal();

}

 
Linuxser:
Forse

double LastRedraw = 0;

if(TimeLocal() - LastRedraw > 300)

{

Print();

ObjectsRedraw();

Print("ObjectsRedraw Done");

LastRedraw = TimeLocal();

}

[/code]

O questo:

[CODICE]

bool ElapsedTimeCheck(int MyMinutes)

{

datetime statico OldTime;

se (OldTime == 0)

OldTime = TimeCurrent() + MyMinutes * 60; // inizializzato una volta...

se (TimeCurrent() >= OldTime)

{

OldTime = TimeCurrent() + MyMinutes * 60;

bool cond = true;

}

altrimenti cond = false;

return(cond);

}