[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 53

 

Sembra che qualcosa si stia schiarendo .... Ecco la situazione: viene dichiarata la variabile globale double Delete_Level. Nel corpo dell'istruzione if, viene assegnato un nuovo valore:

Delete_Level = MA3

E quando si lascia il corpo, il valore globale di Delete_Level non cambia. Domanda: come posso cambiare il valore della variabile globale Delete_Level quando esco dal corpo dell'istruzione if?

 
vovan-gogan:

Mi aiuti a capire l'errore in


Il fatto che non ci sarà MAI un'uguaglianza perfetta - questo è il mondo reale, il mondo reale, in cui ci sono alcune incertezze e tolleranze per questo o quel processo, operazione ecc. Imparare le 'basi'... :-P Non potrebbe essere più semplice. Fate come vi ho raccomandato e ditemi se la condizione funziona, funzionerà? Anch'io sono interessato a questo. Grazie.


 
vovan-gogan:

Sembra che qualcosa si stia schiarendo .... Ecco la situazione: viene dichiarata la variabile globale double Delete_Level. Nel corpo dell'istruzione if, viene assegnato un nuovo valore:

E quando si lascia il corpo, il valore globale di Delete_Level non cambia. Domanda: come posso cambiare il valore della variabile globale Delete_Level quando esco dal corpo dell'istruzione if?


Come fa a non cambiare? Certo che cambia. Stampate il codice e guardate la scheda Log, con F12 - test passo dopo passo in modalità visualizzazione.
 
sergeev:

qual è la data come la intendete voi e MQL?
Vorrei fare un controllo prima di effettuare un ordine. Supponiamo che una sessione inizi a 10-30, poi a 10-35 tutte le condizioni per aprire un ordine di acquisto sono soddisfatte, ma non dovrebbe essere piazzato fino a quando il tempo corrente è maggiore o uguale a 10-45.
 
Roman.:

Come mai non cambia? Naturalmente, cambia.


Funziona così. Per esempio, in un EA, dichiaro prima una variabile globale int Orders, e poi se viene piazzato un ordine pendente, il valore di int Orders dovrebbe cambiare come mostrato qui sotto:

int Orders;
if (MA2_2<MA1_2 && MA2_1>MA1_1)//пересечение МА
{
   if (OrdersTotal()>= 1)
   {
   return;
   }
         SL = 30;
         TP = 12;
         S_Price = Low[1] - 1* Point;
         if (OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic)>0)
            {
               Orders++;
               Alert ("Ордер выставлен. Orders=",Orders );
            }
}           

Ma questo non cambierà negli ordini. Ogni volta che riceviamo un messaggio che "L'ordine è impostato. Ordini=1"

 
vovan-gogan:


Funziona così. Per esempio, in un EA, dichiaro prima una variabile globale int orders e poi nel caso in cui un ordine pendente venga piazzato, il valore di int orders dovrebbe cambiare come mostrato di seguito:

Ma non c'è nessun cambiamento negli ordini. Ogni volta che ricevo un messaggio che "L'ordine è stato effettuato. Ordini=1"


Non avete bisogno di una variabile globale, ma di una variabile locale della funzione di avvio. Quindi, per favore provate

int start()                            // Спец. функция start
  {
    int Orders=0;
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //пересечение МА
        {
          if (OrdersTotal()>= 1) return(0);   
          SL = 30;
          TP = 12;
          S_Price = Low[1] - 1* Point;
          if (OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic)>0)
            {
               Orders++;
               Alert ("Ордер выставлен.Orders = ",Orders );
            }
        }   
       Alert ("Ордеров нет. Orders = ",Orders );    
//----------------------------------------------------------------  
   return;                             // Выход из start()
  }
 
Roman.:


Non hai bisogno di una variabile globale lì, ma di una variabile locale per la funzione di avvio. Quindi prova


Non è lo stesso nel mio esempio? In cosa è diverso? Tranne che non ho aggiunto una funzione di avvio.
 
vovan-gogan:

Non è lo stesso nel mio esempio? In cosa è diverso? Tranne che non ho aggiunto una funzione di avvio.

Dovresti provare il mio esempio.
 
Roman.:

Provate la mia versione.

Ma non vedo la differenza da provare. Per favore, ditemi cosa ho fatto di sbagliato.
 
Ditemi perché quando apro un grafico (in tempo reale) con Periodo M30 e applicare l'indicatore con parametro int shift=iBarShift(NULL,PERIOD_M5,some_time); lo shift sarà come dovrebbe essere, ma quando faccio passare lo stesso indicatore attraverso il tester con periodo M30 lo shift non viene calcolato?