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

 
first_may:
C'è una funzione di esempio per lavorare con le date, cioè per determinare la differenza tra due date, è maggiore di zero o no?

e cos'è una data nella tua comprensione e nella comprensione di MQL?
 

Gente, aiutatemi a capire il codice. Il compito principale è quello di cancellare un ordine in sospeso quando viene raggiunto un certo livello.

if (OrdersTotal()!=0 && Bid == Delete_Level)
   {
   for (int i=1; i<=OrdersTotal(); i++) //Cycle for all orders..
      { 
         if(OrderSelect(i-1,SELECT_BY_POS)==true)//If there is the next one
            { 
               if(OrderType()>1) 
                  {
                  if(OrderDelete(OrderTicket())==true)
                  {
                  Alert ("Ордера удалены");
                  }
                  }
            } 
      }
   }

Il Delete_Level è determinato dalla posizione di MA 30 su 3 barre fino al momento attuale.

double MA3 = iMA(NULL, 0, MA_Period_2, 0, MODE_SMA, PRICE_CLOSE, 2); //определение уровня MA

double Delete_Level = MA3;// Определение значения переменной

Ma l'ordine non viene cancellato a questo Delete_Level. Aiutatemi a capire qual è il mio errore.

 
dove arriva l'algoritmo? Stampare il codice e controllarlo.
 
Cosa intendi per "dove va l'algoritmo"?
 
vovan-gogan:
Cosa intendi per "dove va l'algoritmo"?

Dite che non viene cancellato, il che significa che non va in OrderDelete.

Quindi la domanda è: dove va, quale condizione lo blocca?

 
sergeev:

Voi dite che non viene cancellato, il che significa che non raggiunge OrderDelete.

La domanda è: dove arriva? Quale condizione lo blocca?


Capisco la logica. Ora cercherò di sistemarlo.
 

Qualcosa si è chiarito. Ma non riesco ancora a capire come risolvere il problema. Usando Alert, trovo che la condizione

if (OrdersTotal()!=0 && Bid == Delete_Level)

non è soddisfatto. Solo "if(OrdersTotal()!=0" separatamente sì, ma non insieme a "Bid == Delete_Level". Qual è la ragione di questo? Perché quando si raggiunge il Delete_Level, l'ordine pendente non viene cancellato. Per favore, suggerisci qualcosa o proponi una soluzione alternativa per cancellare un ordine in sospeso quando raggiunge il Delete_Level.

 
vovan-gogan:

Qualcosa si è chiarito. Ma non riesco ancora a capire come risolvere il problema. Usando Alert, trovo che la condizione

non è soddisfatto. Solo "if(OrdersTotal()!=0" separatamente sì, ma non insieme a "Bid == Delete_Level". Qual è la ragione di questo? Perché quando si raggiunge il Delete_Level, l'ordine pendente non viene cancellato. Per favore, suggerisci qualcosa o proponi una soluzione alternativa per cancellare un ordine in sospeso quando raggiunge il Delete_Level.


Normalizzare queste variabili, "ridurle a un denominatore comune" - per esempio, usare qualche tolleranza (+/-) del valore della variabile Delete_Level, perché non c'è un'uguaglianza esatta come l'avete ora - Bid == Delete_Level.
 
vovan-gogan:

Qualcosa si è chiarito. Ma non riesco ancora a capire come risolvere il problema. Usando Alert, trovo che la condizione

non è soddisfatto. Solo "if(OrdersTotal()!=0" separatamente sì, ma non insieme a "Bid == Delete_Level". Qual è la ragione di questo? Perché quando si raggiunge il Delete_Level, l'ordine pendente non viene cancellato. Per favore, suggerisci qualcosa o proponi una soluzione alternativa per cancellare un ordine in sospeso quando raggiunge il Delete_Level.


Per esempio,
if(Bid-MarketInfo(Symbol(),MODE_SPREAD)*Point< Delete_Level && Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point > Delete_Level) - считать за 
if( Bid == Delete_Level )  
 

Mi aiuti a capire l'errore in

Bid == Delete_Level