Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 12

 
Leo59:
Grazie!
Da quanto ho capito, "ordine attivo" si riferisce a posizioni di ACQUISTO e/o VENDITA così come a ordini pendenti impostati (accettati dal broker).
Se ho: posizioni Long e Short aperte, e Buy Limit e Sell Stop impostati, allora OrdersTotal() restituirà il valore =4. Giusto?

Ci può essere una posizione BUY aperta e un ordine BUY attivo. Ho fornito un codice di esempio sopra, ma probabilmente è più facile usare le dita. Come si innesca il TP di una posizione aperta?

  • Il prezzo raggiunge il TP della posizione BUY.
  • Il server commerciale crea un corrispondente ordine SELL attivo.
  • Allora il terminale ha contemporaneamente una posizione BUY e un ordine SELL.
  • L'ordine SELL viene eseguito entrando nella storia e generando un'operazione lì.
  • La posizione BUY iniziale viene chiusa sulla base di questo trade, che non viene catturato da nessuna parte - è presente indirettamente nella storia del trade.

 
Leo59:
Tutto è stato accettato da tempo, e probabilmente non è irragionevole leggere il tutorial di Sergei Kovalev (è integrato in MQL4) prima di scrivere la documentazione:
Leggete il titolo del thread. Tutti pensavano che si trattasse di MQL5. C'è una sezione corrispondente per MQL4 e MT4 qui sul forum. Se avessi posto la tua domanda lì, la risposta sarebbe stata diversa.
 
Leo59:
Tutto è stato accettato da molto tempo, e prima di scrivere la documentazione, probabilmente varrebbe la pena di leggere il tutorial di Sergei Kovalev (è integrato in MQL4):


Ecco come si può costruire un blocco in cui si analizzano gli ordini a mercato e in sospeso:

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

Il valore iniziale i=1 è specificato nell'intestazione dell'istruzione del ciclo, e la condizione per la fine del ciclo è l'espressione i<=OrdersTotal(). La funzione OrdersTotal() restituisce l'importo totale degli ordini a mercato e in sospeso, cioè gli ordini che sono visualizzati nel terminale nella scheda Trade. Pertanto, il numero di iterazioni nel ciclo sarà uguale al numero di ordini presenti nella negoziazione.

Inserisci correttamente il codice:Inserisci correttamente il codice nel forum(ho già corretto quello che hai inserito - e guarda: hai inserito solo testo, e ora è CODICE, con evidenziazione della sintassi).
 
Vitaly Muzichenko:

Non c'è bisogno di sfornare)

Questo è un codice MT4 e non c'è alcuna divisione di ordini e posizioni - tutto è mescolato insieme

La funzione OrdersTotal() in MQL4 e MQL5 sono diverse? Il compilatore sembra essere lo stesso ....
 
Leo59:
Tutto è stato accettato da molto tempo, e prima di scrivere la documentazione, probabilmente varrebbe la pena di leggere il tutorial di Sergei Kovalev (è integrato in MQL4):


Ecco come si può costruire un blocco in cui si analizzano gli ordini a mercato e in sospeso:

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

Il valore iniziale i=1 è specificato nell'intestazione dell'istruzione del ciclo, e la condizione per la fine del ciclo è l'espressione i<=OrdersTotal(). La funzione OrdersTotal() restituisce l'importo totale degli ordini a mercato e in sospeso, cioè gli ordini che sono visualizzati nel terminale nella scheda Trade. Pertanto, il numero di iterazioni nel ciclo sarà uguale al numero di ordini presenti nella negoziazione.

Non solo stai parlando di mql4 e mostrando codice da mql4 (e questo thread è sulle caratteristiche e sottigliezze della programmazione in mql5), ma hai anche scritto il ciclo in modo errato - devi iniziare da zero, altrimenti perderai sempre un ordine.
 
Leo59:
OrdersTotal() sono funzioni diverse in MQL4 e MQL5? Il compilatore sembra essere lo stesso ....
Sì, lo sono.
 
Leo59:
OrdersTotal() sono funzioni diverse in MQL4 e MQL5? Il compilatore sembra essere lo stesso ....

Per quanto riguarda le funzioni di trading - ci sono delle differenze. MQL4 è già stato menzionato sopra:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Peculiarità del linguaggio mql5, consigli e trucchi

Vitaly Muzichenko, 2017.02.28 19:25

... MT4, e non ha divisione di ordini e posizioni - è tutto mescolato insieme

Mentre in MQL5, OrdersTotal() restituirà il numero di ordini in sospeso. Così, in MQL5, tutto è sistematizzato ad un livello superiore: le cotolette sono separate, le mosche sono separate.
 
Artyom Trishkin:
Sì, diverso.
E qual è la differenza?
 
Leo59:
Qual è la differenza?

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Peculiarità di mql5, consigli e trucchi

Vladimir Karputov, 2017.02.28 19:44

Per quanto riguarda le funzioni di trading - ci sono differenze. Avete già menzionato MQL4:

mentre in MQL5 OrdersTotal() restituirà il numero di ordini in sospeso. Così in MQL5 tutto è sistematizzato ad un livello superiore: cotolette separate, mosche separate.

 
Leo59:
Qual è la differenza?

Totale ordini()

Restituisce il numero di ordini attivi.

intOrdiniTotali();

Valore restituito

Valore di tipo int.

Nota

Gli ordini pendenti attivi non devono essere confusi con le posizioni, che sono anche visualizzate nella scheda "Trade" del pannello "Toolbox". Un ordine è un'istruzione per eseguire un'operazione, mentre una posizione è il risultato di una o più operazioni.

Con il "netting" delle posizioni (ACCOUNT_MARGIN_MODE_RETAIL_NETTING e ACCOUNT_MARGIN_MODE_EXCHANGE) solo una posizione può essere aperta per ogni simbolo in qualsiasi momento ed è il risultato di una o più operazioni. Le posizioni e gli ordini pendenti attivi, che sono anche visualizzati nella scheda "Trade" del pannello "Toolbox", non devono essere confusi tra loro.

In caso di rappresentazione indipendente delle posizioni (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) si possono aprire diverse posizioni per ogni simbolo simultaneamente.


PosizioniTotale()

Restituisce il numero di posizioni aperte.

intPositionsTotal();

Valore restituito

Valore di tipo int.

Nota

Con il "netting" delle posizioni (ACCOUNT_MARGIN_MODE_RETAIL_NETTING e ACCOUNT_MARGIN_MODE_EXCHANGE) solo una posizione può essere aperta per ogni simbolo in qualsiasi momento che risulti da uno o più scambi. Le posizioni e gli ordini pendenti attivi, che sono anche visualizzati nella scheda "Trade" del pannello "Toolbox", non devono essere confusi tra loro.

In caso di rappresentazione indipendente delle posizioni (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) si possono aprire diverse posizioni per ogni simbolo simultaneamente.


Motivazione: