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

 
YarTrade: VolC - è così che ho chiamato il file. Non hai bisogno di un nome di file?

Allora va così:

   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);       // V5 - это что?
   FileClose(file_handle);
 
STARIJ:

Allora va così:


V5 è una specie di risultato di calcolo. Ho rimosso V5, ho messo un array al suo posto e voglio che sia scritto nel file. Il file viene creato, ma solo un valore viene scritto in esso, non l'array di dati dell'indicatore. Cosa manca? Ho un indicatore che viene tracciato correttamente sul grafico. Voglio scrivere i suoi valori in un file per poterli leggere in seguito. Ma solo un numero è scritto. Potete aiutarmi a capire cosa c'è che non va?

 
STARIJ:

Allora va così:


L'ho fatto con FileWriteArray, ma ora il file è vuoto. non scriverà un array lì :(. Sai come aiutare? Certo che sì. Per favore, ditemi cosa c'è che non va.

 
YarTrade: L'ho fatto con FileWriteArray, ma ora il file è vuoto e non scrive l'array :(. Sai come aiutare? Certo che sì. Per favore, ditemi cosa c'è che non va.

Funziona così

   int V5=555;
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,V5);
   FileClose(file_handle);

Che tipo di matrice? Inserisci il codice, smettila di essere avido! Ed ecco un array che scrive apparentemente solo un array di caratteri.

   string V5[5]={"Жили","были","дед","и","баба"};
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWriteArray(file_handle,V5);
   FileClose(file_handle);

E l'array doppio nel ciclo scrive

   double V5[5]={3.333,7.7777777,1.1,2.22,9.999999999};
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   for(int n=0; n<5; n++)FileWrite(file_handle,V5[n]);
   FileClose(file_handle);
 
STARIJ:

Funziona così

Che tipo di matrice? Inserisci il codice, smettila di essere avido! E questo array scrive probabilmente solo un array di caratteri

Ed ecco l'array doppio nel ciclo di scrittura


Quanto è avido questo? :)

#property copyright "ZyZy"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
// #property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#property indicator_separate_window
//--- input parameters
input int      Aver=15;
datetime Время=0;   // Время прошлого бара
double Bid1;
long V1; // объем для текущего тика вверх
long V2; // накопленный объем для всех тиков вверх текущего бара
long V3; // накопленный объем для всех тиков вниз для текущего бара
long V4; // объем текущего тика вниз
long V5;

//--- indicator buffers
double         Buf_1[];   // буфер для значений идикатора
double         Counter[];     // буфер для расчетов   
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(2);
   SetIndexBuffer(0,Buf_1,INDICATOR_DATA); // создаю буфер для значений индикатора
   SetIndexBuffer(1,Counter,INDICATOR_CALCULATIONS);
   SetIndexEmptyValue(0,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
//int limit = prev_calculated > 0 ? rates_total-prev_calculated : rates_total-1;
//for(int i =  limit; i >= 0; i--)
// {
//  Counter[i] = close[i];
//  Indicator[i] = iMAOnArray(Counter, 0, 5, 0, 0, i);
// }
   if(prev_calculated==0)
     {
      ArrayInitialize(Counter,0.0);
      ArrayInitialize(Buf_1,0.0);
     }
   datetime Вр=Time[0];   // Время текущего бара
   if(Вр>Время)           // Если новый бар
     {
      Время=Вр;           // Запомнить
      Counter[0]=0;         // и обнулить последний элемент буфера
      V2 = 0;
      V4 = 0;
     }

   if(Bid>=Bid1)
     {
      if(Bid>Bid1)
        {
         V1 = iVolume(NULL, 0, 0);
         V2 = V1 + V2;
        }
      else
        {
         V1 = 0;
         V2 = V1 + V2;
        }
     }
   else
     {
      V3 = iVolume(NULL, 0, 0);
      V4 = V3 + V4;
     }

   V5=V2-V4;
   Bid1=Bid;
   Counter[0]=(double)V5;
   Buf_1[0]=iMAOnArray(Counter,0,Aver,0,MODE_SMA,0);
   Comment("Counter ",Counter[0],"\n"
           ,"Buf_1 ",Buf_1[0]);
   
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWriteArray(file_handle,Counter, 0, WHOLE_ARRAY);     
   FileClose(file_handle);

   return(rates_total);
  }
//+------------------------------------------------------------------+
 
YarTrade: Di quale avidità si tratta? :)

Perché dovresti stampare qualcosa da un indicatore? Tutto è sullo schermo - ecco cos'è un indicatore. Quando ho bisogno di una tabella, eseguo uno script con iCustom()

 

Ciao, sto lottando con il codice che dovrebbe controllare il prezzo dell'ordine nel terminale. Ho deciso di provare a controllare i biglietti. Ha messo i biglietti in un array e ha iniziato a controllare.

Tutto è buono, ritorna VERO. Penso che, eliminandone uno, restituirà FALSO. Ma no(((( ho cancellato tutto, e lo script restituisce ancora 1 invece di 0. Cosa faccio di sbagliato?


int start()
{
   while(!IsStopped())
   {
      int ordsel = 0;
      double ticord[3] = {8895969,8901032,8901033};
         for(ordsel=0; ordsel<=2;ordsel++) 
         {
            Sleep(5000); 
            Alert(OrderSelect(ticord[ordsel],SELECT_BY_TICKET,MODE_TRADES)); 
         }
      if(!IsExpertEnabled()) break;
   }
   return;
}
 

Salve, colleghi esperti! Per favore, aiutate un principiante. Sto cercando di mettere un indicatore nel mio Expert Advisor(mi sono scervellato...)! Dà un errore: 'limit' - dichiarazione senza tipo.

In questa linea: limite = MathMax(limite,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period());


 
Dimitry-1983:

Ciao, sto lottando con il codice che dovrebbe controllare il prezzo dell'ordine nel terminale. Ho deciso di provare a controllare i biglietti. Ha messo i biglietti in un array e ha iniziato a controllare.

Tutto è buono, ritorna VERO. Penso che, eliminandone uno, restituirà FALSO. Ma no(((( ho cancellato tutto, e lo script restituisce ancora 1 invece di 0. Cosa faccio di sbagliato?



Il fatto è che se si seleziona (OrderSelect(...)) per ticket, il parametro 3 viene ignoratoMODE_TRADES

quindi, per sapere da quale lista (chiusa, aperta) avete scelto l'ordine, dovete controllare il suo tempo di chiusura

0- aperto e in attesa, >0 chiuso

 
Ptichka12:

Salve, colleghi esperti! Per favore, aiutate un principiante. Sto cercando di mettere un indicatore in un Expert Advisor (mi sono scervellato...)! Dà un errore: 'limit' - dichiarazione senza tipo.

In questa linea: limite = MathMax(limite,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period());



Questo è un modo molto interessante di farlo.

Provare il seguente sull'errore

int limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));