Domande da un "manichino" - pagina 85

 
AUser:

Sto cercando di capire come salvare i dati in un file. Ho scritto il seguente codice:

Solo l'ultimo valore di prezzo viene salvato in un file. Voglio il valore dei prezzi in una colonna. Dove ho sbagliato?

Guardate "Peculiarità del funzionamento quando si specificano i flag di lettura e scrittura" in MQL5 Reference / Costanti, enumerazioni e strutture standard / Costanti di ingresso/uscita / Flag di apertura file
 

Sono davvero stupido)) Ho ascoltato il consiglio di prima e ho riscritto il codice, anche se non capisco perché fosse così... comunque, non è cambiato nulla. In idea è il programma più elementare per scrivere qualcosa in un file, e io sono così stupido...))

void OnInit()
{
double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileIsEnding(FILE);
FileWrite(FILE,BID);
}
void OnDeinit(const int reason)
{
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileClose(FILE);
}

Solo un promemoria, sto cercando di scrivere un programma per salvare i tick in un file. Salva solo l'ultimo tick per qualche motivo.

 
AUser:

Sono davvero stupido)) Ho ascoltato il consiglio di prima e ho riscritto il codice, anche se non capisco perché fosse così... comunque non è cambiato nulla. In idea è il programma più elementare per scrivere qualcosa in un file, e io sono così stupido...))

Solo un promemoria, sto cercando di scrivere un programma per salvare i tick in un file. Per qualche ragione, salva solo l'ultimo tick.

Funzione
FileIsEnding(FILE);

Non imposta affatto il cursore del file alla fine del file, come probabilmente volevi.

Risolvetelo e sarete felici. :)

 
AUser:

Sono davvero stupido)) Ho ascoltato il consiglio di prima e ho riscritto il codice, anche se non capisco perché fosse così... comunque non è cambiato nulla. In idea è il programma più elementare per scrivere qualcosa in un file, e io sono così stupido...))

Solo un promemoria, sto cercando di scrivere un programma per salvare i tick in un file. Salva solo l'ultimo tick per qualche motivo.

Questo è il modo giusto per farlo.

int FILE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   FileClose(FILE);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
   FileWrite(FILE,BID);
  }
//+------------------------------------------------------------------+
 
sergey1294:

su questo è come dovrebbe essere

Esattamente, grazie))
 
ZahvatkiN:

Ho notato che in MT4 prima di aprire una transazione è possibile impostare il livello di stop-loss e take-profit, ma non in MT5, o è possibile, ma in un modo diverso?

 
sergeev:

ZahvatkiN:

Ho notato che in MT4 prima di aprire un'operazione, si poteva impostare il livello di stoploss e takeprofit, ma MT5 non ce l'ha o è possibile, ma in un modo diverso?


Qui è dove è stato discusso https://www.mql5.com/ru/forum/1111/page561
 

Ciao.Codice.Lavoro TF M15.La transizione al blocco Open-Close avviene su una nuova barra.

Se a causa di un requote (per esempio), la posizione non si apre, allora si riapre sulla barra successiva.

E se il criterio di entrata (guardando l'OHLC della barra precedente) è sparito, la posizione non si aprirà.

Ho capito bene?

ZS.Probabilmente ha senso entrare almeno in un nuovo minuto.

void OnTick()
  {CopyTime (_Symbol,PERIOD_M15,0,1,time);
   if (lastbar==time[0]) return;
   lastbar=time[0];
   
  SearchForExit();
  SearchForEnter();
 
   return;
  }
 

Colleghi, potete dire a colpo d'occhio, senza benchmarking, cosa è più veloce: eseguire CopyTime() di tutta la storia una volta sola o chiamarlo ogni volta solo per alcune barre (che possono essere meno di Bars() di tutta la storia) e copiare il tempo di una sola - la barra corrente - in Arr?

Se non si guarda al benchmark, ma si ragiona logicamente, sulla base della conoscenza, come si può giustificare la risposta? ...Anche se capisco che questo è già nella direzione del C/C++...

 
L'approccio corretto è quello di richiedere una profondità ragionevolmente appropriata per ogni sfida. E non c'è bisogno di fare ricerche in profondità. Il punto importante è che la storia può essere scaricata in modo asincrono in qualsiasi momento.