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

 

Ciao a tutti.

Ho uno script che chiude tutti gli ordini disponibili.

Non capisco tre righe in esso:

Se non è difficile, per favore traducilo in russo per un principiante.

Ho studiato il tutorial, ma non mi sono imbattuto in espressioni logiche così lunghe.

Lo script che allego. Grazie.

File:
 

Lasciatemi provare a "tradurre" la prima voce per voi:

if(((OrderSymbol() == Symbol() && OnlyThisSymbol) || !OnlyThisSymbol))

"Se almeno una delle espressioni 1. o 2. è vera, allora ... "
1.lo strumento dell'ordine è lo stesso dello strumento del grafico e la variabile esterna OnlyThisSymbol ha il valore true
2.la variabile esterna OnlyThisSymbol ha un valore uguale a false.

Ora, il significato di questa voce:
C'è un'enumerazione di ordini da chiudere per posizioni con diversi filtri. Questo disco è un filtro per strumento. Se si imposta il valore della variabile esterna onlyThisSymbol, si può scegliere se si vogliono chiudere gli ordini solo per un simbolo del grafico o gli ordini per qualsiasi simbolo.

[Deleted]  
alsu:

Non esattamente. Il punto è che la variabile Experts ha già il tipo int, quindi la conversione di tipo dovrebbe avvenire PRIMA di assegnarle un valore, cioè il compilatore

* ha preso fuori dalla scatola un valore di tipo double (non ha nome nel vostro programma, ed è scritto semplicemente a qualche indirizzo noto al compilatore nella memoria principale o nel registro della CPU)

* ha fatto tutte le modifiche necessarie al valore della variabile di cui sopra e ha scritto un nuovo valore (di tipo int!) nella variabile Experts,

* ha assegnato questo valore (di tipo int!) alla variabile New_Experts. Hanno lo stesso tipo, quindi si tratta solo di copiare un valore da una posizione di memoria all'altra.


P.S. Sono molto contento di vedere che ci sono persone che comprendono le loro imprese in modo così dettagliato. Infatti, non scherziamo. Tenetevi in contatto.


Buona giornata... Per quanto riguarda il tuo ultimo e penultimo messaggio, sono perplesso. In particolare (il tuo messaggio della risposta precedente): "Allora quando prendiamo un valore dalla scatola, è di tipo doppio, ma se diamo il comando di scrivere il risultato in una variabile di tipo int, il compilatore esegue automaticamente tutte le azioni necessarie per mettere il valore in una nuova scatola." E il tuo messaggio dell'ultima risposta: "Il punto è che la variabile Experts ha già il tipo int... Non l'abbiamo convertito al tipo doppio nel momento in cui l'abbiamo "messo" in una casella GV-variabile?

Grazie in anticipo per la risposta

 

Potete consigliarmi, amici? MQL4 permette di impostare il valore del saldo del conto in modo programmatico, e non solo nelle condizioni iniziali del tester?

Spiegherò perché ne ho bisogno, solo per rendere chiara la domanda. Voglio che l'Expert Advisor cambi la dimensione del saldo del conto come variabile durante l'ottimizzazione.

 

Buon pomeriggio.

Sto cercando di creare un indicatore per visualizzare Sl e Tp sul grafico basato su (H-L)/2, non funziona - disegna solo la chiusura della barra, qual è il problema?

Come base è stato preso da un indicatore ATR.

//+------------------------------------------------------------------+
//|                                                          Tp/Sl.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 Green
//---- input parameters
extern int PeriodMM=25;
//---- buffers
double SlBuffer[];
double TpBuffer[];
double SlBuffer2[];
double TpBuffer2[];
double TempBuffer[];
double TempBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 1 additional buffer used for counting.
   IndicatorBuffers(4);
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,SlBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,TpBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,SlBuffer2);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,TpBuffer2);
   SetIndexBuffer(4,TempBuffer);
   SetIndexBuffer(5,TempBuffer2);
//----
   SetIndexDrawBegin(0,PeriodMM);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=PeriodMM) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=PeriodMM;i++)
      SlBuffer[Bars-i]=0.0;
      TpBuffer[Bars-i]=0.0;
      SlBuffer2[Bars-i]=0.0;
      TpBuffer2[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      double close = Close[i];
      TempBuffer[i]=(high-low)/2;
      TempBuffer2[i]=(high-low)/2*2.5;
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      SlBuffer[i]=Close[i]+iMAOnArray(TempBuffer,Bars,PeriodMM,0,MODE_SMA,i);
      TpBuffer[i]=Close[i]+iMAOnArray(TempBuffer2,Bars,PeriodMM,0,MODE_SMA,i);
      SlBuffer2[i]=Close[i]-iMAOnArray(TempBuffer,Bars,PeriodMM,0,MODE_SMA,i);
      TpBuffer2[i]=Close[i]-iMAOnArray(TempBuffer2,Bars,PeriodMM,0,MODE_SMA,i);
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Compagni non riesco a capire perché i file CSV non vengono creati, prima funzionava tutto.
//+------------------------------------------------------------------+
//|                                                          TP1.mq4 |
//|                                                      S.I.Shlikov |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "S.I.Shlikov"
#property link      ""
int init()  
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,"Date","EURUSD","GBPUSD","NZDUSD","USDJPY","EURJPY","GBPJPY","USDCHF","EURCHF","GBPCHF");
   FileClose(h);        
  }
int start()
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   string Wtime=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES);
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,Wtime,DoubleToStr(iClose("EURUSD",Period(),0),MarketInfo("EURUSD",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPUSD",Period(),0),MarketInfo("GBPUSD",MODE_DIGITS)),
                     DoubleToStr(iClose("NZDUSD",Period(),0),MarketInfo("NZDUSD",MODE_DIGITS)),
                     
                     DoubleToStr(iClose("USDJPY",Period(),0),MarketInfo("USDJPY",MODE_DIGITS)),
                     DoubleToStr(iClose("EURJPY",Period(),0),MarketInfo("EURJPY",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPJPY",Period(),0),MarketInfo("GBPJPY",MODE_DIGITS)),
                     
                     DoubleToStr(iClose("USDCHF",Period(),0),MarketInfo("USDCHF",MODE_DIGITS)),
                     DoubleToStr(iClose("EURCHF",Period(),0),MarketInfo("EURCHF",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPCHF",Period(),0),MarketInfo("GBPCHF",MODE_DIGITS))
                     );
   FileClose(h);   
   return(0);
  }
 
orb:
Compagni non riesco a capire perché i file CSV non vengono creati, prima funzionava tutto.

Qual è il numero di errore?
 
sergeev:

qual è il numero di errore?
nessun numero di errore... solo nessun file creato, cercando ALPARI\tester\files\
 
orb:
nessun numero di errore... solo non crea i file, cerca ALPARI\tester\files\

Beh, guarda nell'altro.
 
sergeev:

Beh, cercate altrove.
L'ho già fatto.