Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 249

 
Sepulca:

Forse è meglio così.

Basta scambiare i posti. Hour()>OpenHH più spesso dell'ora e dei minuti.
 
artmedia70:
Solo scambiare i posti. Ancora, Hour()>OpenHH più spesso di ora e minuti.


Pensi che questo aumenterà la velocità dell'EA? Mi chiedo, forse... Francamente, non ho mai pensato all'ordine delle condizioni in IF...)
 
Sepulca:

Pensi che questo aumenterà la velocità dell'EA? Interessante, forse... Onestamente, non ho mai pensato all'ordine di impostazione delle condizioni in IF...)
Bene... Non sto parlando di un aumento enorme, ma comunque... fino al rilascio del terminale aggiornato con il nuovo MQL4, tutte le condizioni logiche sono lette fino alla fine, anche se la prima è falsa
 
Sepulca:


Tutto sembra essere corretto, dovrebbe funzionare. Ho provato il tuo codice nel mio - funziona a minuti. Ma solo dalle 14:25 alle 14:59, dalle 15:25 alle 15:59 ecc.


Grazie per la pronta risposta, ma - ahimè, qualcosa non funziona... Il codice funziona solo in questo modo, sia nel corpo dello script che nel corpo dell'EA. Per tempo e funzionalità - tutto va bene. Gli ordini si fanno solo con l'orologio!
int start()
{
int OpenHH=14,OpenMM=25;
bool Trade=true;
//----
if (Trade) // Разрешение на торговлю.
if (TimeHour(TimeCurrent()) >= OpenHH ) // В назначенный час
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера.
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}

Ma appena aggiungo i minuti ( TimeMinute(TimeCurrent()) >= OpenMM ) - nessun risultato.

L'EA si rifiuta anche di piazzare ordini per minuti quando si usa la funzione StrToTime().

Grazie ancora... Continuerò a scavare...

 
Sepulca:

Forse è meglio così.

No... Anche questo non funziona...

Anche quando uso un'altra funzione StrToTime() - se specifico il tempo in ore intere - tutto va bene, ma appena aggiungo minuti - nessun risultato. Anche se, come ho scritto nel 1° post, gli ordini chiudono alle 23:45 del venerdì senza problemi...

bool Trade=true;

string OpenTime = "14:00"; // Вот так работает!!!

string OpenTime = "14:25"; // А вот так - не работает!!!

if ( StrToTime(OpenTime) == TimeCurrent() && Trade )

{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}

 
Crosswert:

No... Anche questo non funziona...

Anche quando uso un'altra funzione StrToTime() - se specifico il tempo in ore intere - tutto va bene, ma appena si aggiungono i minuti - nessun risultato. Anche se, come ho scritto nel 1° post, gli ordini si chiudono alle 23:45 del venerdì senza problemi...

bool Trade=true;

string OpenTime = "14:00"; // Вот так работает!!!

string OpenTime = "14:25"; // А вот так - не работает!!!

if ( StrToTime(OpenTime) == TimeCurrent() && Trade )

{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}


Non so... Questo codice funziona anche per me....

 
Come si fa a testarlo? Se, per esempio, su H1 e a prezzi di apertura, probabilmente non funzionerà.
 
Sepulca:
Come si fa a testarlo? Se, per esempio, su H1 e a prezzi di apertura, probabilmente non funzionerà.
Consiglia di testare ai prezzi di apertura sul verbale.
 
Sepulca:
Come si fa il test? Se, per esempio, su H1 e a prezzi di apertura, probabilmente non funzionerà.

Vedete, è così semplice... I minuti devono essere un multiplo di TF ...

Ora / se ( TimeCurrent() == StrToTime(OpenTime) && Trade ), se OpenTime = 14:25 / funzionerà, ma solo su TF=M1 e M5 ... La funzione di apertura degli ordini ha bisogno delle quotazioni attuali, ma la funzione di chiusura degli ordini non ne ha bisogno...

Ho perso questo punto in qualche modo (a causa della mia inesperienza)...

Grazie mille, ho risolto il problema...

 

Sepulca:

Come si fa il test? Se, per esempio, su H1 e a prezzi di apertura, probabilmente non funzionerà.


Ha ha... Ed ecco una bugia...

Il problema si è rivelato essere nella funzione OpenOrders(). Ho completamente dimenticato di rimuovere il controllo dell'apertura dell'ordine su una rottura di una candela (barra):

if (Volume[0] > 1) return;

Quindi, su quale TF l'Expert Advisor stava testando, stava aprendo ordini su quei minuti...

Stupido in generale, su un duro...

Grazie...