Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 103

 
trader781:
Per esempio, copiare l'intero file.
Alexey Viktorov:
1. Quando un ordine viene aperto, scrivere il biglietto nella variabile di livello globale o statico, e poi monitorare questo ordine fino a quando è di colore blu, oops, fino a quando viene chiuso dal confronto OrderCloseTime() > 0. Se il tempo di chiusura è maggiore di zero, l'ordine è chiuso.

2. La sostituzione dell'operatore GOTO è molto più efficiente. Leggete la documentazione sulle funzioni.

C'è modo di mostrarmi un esempio? Come faccio ad aspettare la chiusura del trade precedente?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

 
DenZell:

C'è modo di mostrarmi un esempio? Come faccio ad aspettare la chiusura del trade precedente?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

Ci sono diverse opzioni.

La più semplice è la sequenza di azioni. Prima si cerca di fare qualcosa con un ordine già aperto e poi, se non c'è un ordine aperto, si cerca di impostarlo.

Dividiamo la gestione delle posizioni e l'apertura di un nuovo ordine in due funzioni separate definite dall'utente. Poi nella funzione OnTick() controlla la presenza di ordini aperti e chiama una o l'altra funzione a seconda del risultato ottenuto.

A parole è così:

void OnTick()
{
if(OrdersTotal() > 0)
  открытие();
else
  сопровождение();
}

bool открытие()
{
// здесь код открытия
}

bool сопровождение()
{
// здесь код сопровождения
}
Ed è ancora più difficile controllare un ordine specifico se OrderCloseTime() > 0.

Questo è il caso se il conto prevede, ma più spesso è il caso di lavorare di altri Expert Advisors o di aprire ordini manualmente.
 
è possibile selezionare programmaticamente la data di inizio della storia del conto nel terminale?
 
Money_Maker:
Posso selezionare programmaticamente la data di inizio della storia del conto nel terminale?
È possibile. Questo sarà il primo ordine nella storia con il tipo 6 - operazione di equilibrio. Il tempo di apertura di questo ordine sarà l'inizio della storia del conto.
 
Artyom Trishkin:
È possibile. Questo sarà il primo ordine nella storia con il tipo 6 - operazione di equilibrio.
Non ho bisogno del primo ordine nella storia ... la storia si apre al massimo ... ho bisogno della storia da una certa data ... che imposterò programmaticamente (apparentemente, la domanda è stata semplificata a causa dei dettagli)
 
Money_Maker:
Non ho bisogno del primo ordine nella storia ... la storia è aperta al massimo ho bisogno della storia da una certa data ... che imposterò programmaticamente (apparentemente la domanda è stata semplificata a scapito dei dettagli)
La risposta è anche possibile.

Ma la domanda è ancora "snella", quindi dirò che dovremmo saltare gli ordini il cui orario di apertura è precedente a quella "data specifica".
 
Artyom Trishkin:
La risposta è anche che si può.

Ma la questione rimane ancora "snella", quindi direi che dovremmo saltare gli ordini il cui tempo di apertura è precedente a questa "data certa" ... naturalmente non mi è venuto in mente ... ma 7 anni è un numero molto grande di ordini ...
Non ho proprio pensato a filtrare per data... ma 7 anni sono tanti di ordini.
la domanda è sottolineata in rosso nello screenshot ... quindi la domanda non è semplificata?
 
Money_Maker:
Naturalmente non mi è venuto in mente di filtrare per data ... ma in 7 anni ci sono un sacco di ordini .
Nello screenshot, la domanda è sottolineata in rosso e bisogna mettere una certa data lì... quindi la domanda non è snellita?
Non capisco la tua domanda :(

Cosa vuoi fare esattamente in modo programmatico?
 
Artyom Trishkin:
Non capisco la tua domanda :(

Cosa vuoi fare esattamente in modo programmatico?
Dove è sottolineato in rosso, inserisci la data ed essenzialmente clicca ok... determina la profondità della storia nel rapporto
 
Money_Maker:
dove è sottolineato in rosso, inserisci la data ed essenzialmente clicca ok... determina la profondità della storia nel rapporto
Non puoi farlo programmaticamente in un mql puro. Dovete cercare questa finestra e la data attraverso WinAPI, credo.