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

 
Ma non so come cancellare l'ordine pendente se il pentamino era inferiore a 30 pips.
 
hoz:

Sì, e allora?

Ci sono alcune limitazioni quando si lavora in modalità di visualizzazione
 

Cosa ho fatto di male!!!!

Ho trovato questa soluzione al mio problema

int start()
  {
     double Price=Ask+300*Point;    
     double SL=Price-300*Point;    
     double TP=Price+150*Point;
     bool New_Bar;
                          
     if (Time[0])                                                                           //   если образовался новый бар               
         int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP ); //   выставить отложенный ордер
     return ;
     Fun_New_Bar();                                                                      
     if ( New_Bar==true)                                                // если образовался следующий бар
        OrderDelete(Ticket);                                          // удалить отложенный ордер
  
//+------------------------------------------------------------------+
     void  Fun_New_Bar();                            //НО ПО ОТНОШЕНИЮ К ЭТОЙ СТРОКЕ КОМПИЛЯТОР ПИШЕТ ОШИБКУ       '(' - function definition unexpected  
       {                                                                           
          static datetime New_Time=0;
          New_Bar=false;
                                
         if( New_Time!==Time[0])                       
            New_Time=Time[0];                         
         New_Bar=true;                             
      }

/* scusate, ho cambiato leggermente il post - in modo che il Vinin sia leggibile */

 
Grazie per la tua preoccupazione, quale pulsante devo premere per ottenere il codice in questo formato?
 
solnce600:

Cosa ho fatto di male!!!!

Ho trovato questa soluzione al mio problema

/* scusate, ho cambiato un po' il post - per rendere leggibile il Vinin */

Questa linea
 if (Time[0])

significa: "se il tempo dell'ultima barra non è zero". Quindi non è sempre uguale a zero.

Inoltre, la variabile

bool New_Bar;

è definito all'interno della funzione start(), quindi non sarà visibile in altre funzioni. Inoltre, la Fun_New_Bar() che avete provato a definire all'interno del corpo di start(), non potete farlo in MQL, tutte le funzioni devono essere dichiarate a livello di modulo globale. Anche la dichiarazione di New_Bar dovrebbe essere messa lì.

 

Inoltre, durante un'esecuzione della funzione start() (se non è in loop), non si può definire la formazione della barra e poi aspettare la formazione della barra successiva: start() per definizione viene chiamata e termina ad ogni tick (con delle sfumature, ma in generale è così).

Consiglio di rileggere l'aiuto e di eliminare le lacune nell'esecuzione del programma MQL, e di vedere un esempio di scrittura di un programma in loop, anche non in loop.

 
solnce600:
Grazie per la tua premura, quale pulsante devo premere per ottenere il codice in questo formato?

SRC----------------------------\|/

--------------------------------------- V

 
Ne ha il diritto.
 
alsu:
Questa linea
 if (Time[0])

significa: "se il tempo dell'ultima barra non è uguale a zero". Quindi non è sempre uguale a zero.


Grazie, ma non capisco dove sia il "NON" in questa frase. Non uguale è indicato dal simbolo !==.

Quello che volevo dire è che non appena appare il tempo di apertura di una nuova barra, cioè appare una nuova barra, l'ordine viene aperto.

E questo è effettivamente il codice che apre un ordine all'apertura di ogni cinque barre

 int start()

  {
 double Price=Open[0]+300*Point;	
 double SL=Price-300*Point;	
 double TP=Price+150*Point;
 if (Time[0])                         
 int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP );
  

 
 }


 

Ho deciso di prendere quello che pensavo fosse un percorso più semplice.

Non per cancellare l'ordine pendente - ma per piazzare un ordine pendente solo se una candela di cinque minuti non è finita

Cioè, l'ordine pendente dovrebbe essere piazzato solo quando sono soddisfatte due condizioni. Se la prima condizione è soddisfatta

 if (Time[0])

- Ho controllato, l'ordine è impostato.

Come dovrei impostare la seconda condizione, cioè impostare un ordine pendente solo se non sono ancora passati 5 minuti. if (---------- && ?????????)

int start()

  {
 double Price=Open[0]+300*Point;    
 double SL=Price-300*Point;     
 double TP=Price+150*Point;
 
  
 
 
                          
   if (Time[0]&& ?????????  )                         
 int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP );
 return(0);
 
  }