Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1219

 

Levariabili statiche dichiarate in una funzione di classe sono pass-through per tutte le istanze di quella classe?

Per qualche ragione, mi aspettavo che fosse diverso per ogni caso.

L'alternativa è solo le variabili a livello di classe o ci sono altri modi complicati?

 

Ho bisogno di specificare il percorso per salvare il file. più precisamente la cronologia dei tick. Aiuta a risolvere questo problema )

//------------------------------------------------------------------
#property copyright "www.forex-tsd.com"
#property link      "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window

//
//
//
//
//

extern string FileName   = "Ticks.csv";
extern bool   SaveVolume = true; 
int fileHandle;

MqlBookInfo book[];

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int  OnInit()                   
{ 
   MarketBookAdd(_Symbol); 
      fileHandle = FileOpen(Symbol()+" - "+FileName,FILE_WRITE|FILE_SHARE_READ|FILE_ANSI|FILE_CSV); 
      return(0); 
}
void OnDeinit(const int reason) 
{
   MarketBookRelease(_Symbol);
   FileClose(fileHandle);
}

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[],
                const double &Open[], const double &High[], const double &Low[], const double &Close[],
                const long &TickVolume[], const long &Volume[], const int &Spread[])
{                
   if (fileHandle <0)
   {
      static bool alerted = false;
         if (!alerted)
         {
            Alert("File : "+Symbol()+" - "+FileName+" could not be opened"); alerted = true;
         }
         return(0);
   }         

   //
   //
   //
   //
   //
   
   bool bget = MarketBookGet(_Symbol,book);
   int bidVolume = 0;
   int askVolume = 0;

      if (bget)
      {
         int    size = ArraySize(book);
         string info = "\n";
            for (int i=0; i<size; i++)
               {
                  if (book[i].type==BOOK_TYPE_SELL) askVolume += (int)book[i].volume;
                  if (book[i].type==BOOK_TYPE_BUY)  bidVolume += (int)book[i].volume;
               }                  
      }            
      
   if (FileSize(fileHandle) == 0)
         FileWriteString(fileHandle,"date and time,bid,ask,bid volume,ask volume\n");
         if (SaveVolume)
               FileWriteString(fileHandle,TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)+","+DoubleToString(bidVolume,0)+","+DoubleToString(askVolume,0)+"\n");
         else  FileWriteString(fileHandle,TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)+"\n");
         FileFlush(fileHandle);
   return(0);
}
 

@NeuralNetwork

FileOpen

Il file viene aperto nella cartella del terminale client nella sottocartella MQL5\Files (o agent_folder\MQL5\Files in caso di test).

Se FILE_COMMON è specificato tra i flag, il file viene aperto nella cartella comune di tutti i terminali client \Terminal\Common\Files.

--

in un'altra posizione solo tramite "link simbolico".

      fileHandle = FileOpen(Symbol()+" - "+FileName,FILE_WRITE|FILE_SHARE_READ|FILE_ANSI|FILE_CSV);    // FILE_COMMON 



 
NeuralNetwork:
Grazie mille! Ma voglio impostare il percorso per salvare il file specificando un'altra unità o cartella. Non posso farlo ...

https://www.mql5.com/ru/docs/files

3 linea

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы". общая папка всех установленных на компьютере терминалов  – обычно расположена в каталоге C:\Documents and Settings\All Users\Application...
 
Fast235:

@NeuralNetwork

FileOpen

Il file viene aperto nella cartella del terminale client nella sottocartella MQL5\Files (o agent_folder\MQL5\Files in caso di test).

Se FILE_COMMON è specificato tra i flag, il file viene aperto nella cartella comune di tutti i terminali client \Terminal\Common\Files.

--

in un'altra posizione solo tramite "link simbolico".



Grazie mille!
 
Roman Shiredchenko:


come faranno gli amministratori e i moderatori a risolvere il problema di un robot scritto male?

 

Per favore consigliatemi se è possibile ottenere valori RSI per timeframe settimanali nel codice di Expert Advisor, ma per calcolare i valori per la settimana, partendo non da lunedì, ma per esempio da mercoledì (cioè per la settimana da mercoledì a mercoledì prossimo). Capisco che non funzionerà con iRSI, perché prende barre settimanali, e queste iniziano il lunedì.

Finora vedo solo un modo per calcolarlo. C'è una soluzione più semplice o una soluzione pronta?

 
Roman Shiredchenko:

Gridare, urlare, imprecare, non voler far funzionare il proprio codice, incolpare i moderatori e gli amministratori, insultare i moderatori e gli amministratori...

In generale - l'intero pacchetto. Ti darò una settimana per calmarti e capire i tuoi errori. Pensieroso!

 
Valeriy Yastremskiy:

Per rendere conto di un biglietto.

Quando si apre un ordine, il biglietto deve essere memorizzato.

Grazie
 
Valeriy Yastremskiy:

I flag controllano il numero di tipi di ordine o se c'è un ticket controllano il tempo di chiusura dell'ordine a mercato, se non è uguale a zero allora l'ordine è chiuso e il flag di apertura dell'ordine è falso.

Grazie, l'ho già preso, la gente l'ha suggerito )))))))😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃
Motivazione: