[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 789

 
Hedin:

Cari programmatori,
Per favore, consigliate perché gli operatori non vengono eseguiti quando la condizione è vera, o piuttosto vengono eseguiti, ma in modo casuale (per esempio, ripetutamente). Non ci sono errori nei log.


Per favore, correggete il vostro codice:

if ( MathAbs( ord_sl - (ord_open+First_sell_limit_SL*Point) ) < Point / 2.0 && ...

E non confrontare mai le variabili di tipo double per l'uguaglianza.

 
PapaYozh:


Correggete il vostro codice:

E non confrontare mai le variabili di tipo double per l'uguaglianza.


Perché non potete confrontare le variabili di tipo double per l'uguaglianza?
 
Hedin:

Perché le variabili come double non possono essere confrontate per l'uguaglianza?
E la ricerca non funziona più?
 
Hedin:

Perché le variabili di tipo double non possono essere confrontate per l'uguaglianza?
Dateun'occhiata qui.
 
Necron:
In deinit, scrivi in una variabile globale e in init, leggi il valore di quella variabile, qual è il problema?

La mia comprensione è che una variabile globale è una variabile dichiarata al di fuori di tutte le funzioni. Le variabili globali sono inizializzate una volta prima di avviare le funzioni speciali.

Cioè, le variabili globali sono dichiarate all'inizio del programma prima della funzione di avvio, compresa quella che voglio passare al programma al prossimo avvio. Poi, secondo il tuo suggerimento, in deinit fisso il valore di questa variabile. Capisco che all'inizio del programma, prima che la funzione init sia eseguita, tutte le variabili globali, che sono descritte all'inizio del programma, inclusa la variabile che mi interessa, saranno reinizializzate. E quando si arriva alla funzione init, la mia variabile, registrata in precedenza, sarà persa! O mi sbaglio?

 
No, intendeva la GlobalVariable, che è memorizzata in un file.
 
ikatsko:

La mia comprensione è che una variabile globale è una variabile dichiarata al di fuori di tutte le funzioni. Le variabili globali sono inizializzate una volta prima di avviare le funzioni speciali.

Cioè, le variabili globali sono dichiarate all'inizio del programma prima della funzione di avvio, compresa quella che voglio passare al programma al prossimo avvio. Poi, secondo il tuo suggerimento, fisso il valore di questa variabile in deinit. Capisco che all'inizio del programma, prima che la funzione init sia eseguita, tutte le variabili globali, che sono descritte all'inizio del programma, inclusa la variabile che mi interessa, saranno reinizializzate. E quando si arriva alla funzione init, la mia variabile, registrata in precedenza, sarà persa! O mi sbaglio?

Ci sono due tipi di variabili globali: le variabili globali del tuo programma, di cui scrivi, e le variabili globali del tuo terminale,
che sono conservate separatamente dal tuo programma per una quindicina di giorni se non vi si accede, se la memoria non mi inganna...
sono utilizzati, per esempio, per trasferire dati tra diversi EA che lavorano simultaneamente sullo stesso terminale, ecc...
Sono le variabili globali del terminale che vi servono.
 
Roger:
No, intendeva la GlobalVariable, che è memorizzata nel file.
Sì, intendevo le variabili globali del terminale. C'era già questa domanda in un messaggio privato, ho risposto.
 
Necron:
Sì, intendevo le variabili globali del terminale. C'è già stata questa domanda nel messaggio privato, ho risposto.
L'ho già capito. Succede... non ha capito bene... Scusa :)
 
вот, собственно код моментума стандартного из МТ4 - ии??? я не вижу тут 
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
//+------------------------------------------------------------------+
//|                                                     Momentum.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int MomPeriod=14;
 
//---- buffers
double MomBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MomBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Mom("+MomPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,MomPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Momentum                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
   
//----
   if(Bars<=MomPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=MomPeriod;i++) MomBuffer[Bars-i]=0.0;
      
//----
   
   i=Bars-MomPeriod-1;
   if(counted_bars>=MomPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
      MomBuffer[i]=Close[i]*100/Close[i+MomPeriod];
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
Roger:

Avete cercato stranamente

doppio iMA(

simbolo stringa, int timeframe, int periodo, int ma_shift, int ma_method, int applied_price, int shift)

Il primo elemento.

Motivazione: