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

[Eliminato]  

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.
[Eliminato]  
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()
  }
[Eliminato]  
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.
[Eliminato]  
Roman.:

Provate la mia versione.

Ma non vedo la differenza da provare. Per favore, ditemi cosa ho fatto di sbagliato.
[Eliminato]  
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?