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

 
Alexey Viktorov:


Quello che state cercando di stampare non è corretto. Il modo corretto è questo.

Ecco la ripartizione:

42 è un identificatore numerico: ACCOUNT_MARGIN_FREE

cioè possiamo ottenere il margine libero dalla costante

AccountInfoDouble(ACCOUNT_MARGIN_FREE)

O dal suo identificatore numerico:

AccountInfoDouble(42)

Grazie!

 
killer67:

Ecco la ripartizione:

42 è un identificatore numerico: ACCOUNT_MARGIN_FREE

cioè possiamo ottenere il margine libero dalla costante

O dal suo identificatore numerico:

Grazie!

La prima versione di scrittura è più informativa.

 

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants

Questa è probabilmente una domanda stupida, ma queste funzioni possono essere usate in MQL4? È solo che gli strumenti MQL4 sono più limitati.

Come ottenere i dati in MQL4:

SIMBOLO_SESSIONE_DEALS

Numero di compravendite nella sessione corrente

SIMBOLO_SESSIONE_ACQUISTO_ORDINI

Numero totale di ordini di acquisto al momento

lungo

SIMBOLO_SESSIONE_VENDITA_ORDINI

Numero totale di ordini di vendita al momento

lungo

SIMBOLO_VOLUME

Volume - Volume dell'ultimo scambio

lungo

SIMBOLO_VOLUME-ALTO

Volume massimo per il giorno

lungo

SIMBOLO_VOLUMELOW

Volume minimo per il giorno

SIMBOLO_BID

Offerta - migliore offerta

doppio

SIMBOLO_BIDHIGH

Offerta massima per il giorno

doppio

SIMBOLO_BIDOLO

Offerta minima per il giorno

doppio

SYMBOL_ASK

Chiedi - migliore offerta

doppio

SYMBOL_ASKHIGH

Richiesta massima per il giorno

doppio

SYMBOL_ASKLOW

Richiesta minima per il giorno

SIMBOLO_SESSIONE_VOLUME

Volume totale degli scambi nella sessione corrente

doppio

SYMBOL_SESSION_TURNOVER

Fatturato totale nella sessione corrente

doppio

SIMBOLO_SESSIONE_INTERESSE

Volume totale delle posizioni aperte

doppio

SIMBOLO_SESSIONE_ACQUISTO_VOLUME

Volume totale di ordini di acquisto al momento

doppio

SIMBOLO_SESSIONE_VENDITA_ORDINI_VOLUME

Volume totale di ordini di vendita al momento

doppio

SIMBOLO_SESSIONE_APERTA

Prezzo di apertura della sessione

doppio

SIMBOLO_SESSIONE_CHIUSA

Chiudi prezzo

doppio


È un tesoro di dati utili in un solo colpo. L'unica domanda è come farlo in MQL4. Dato che MQL5 ha una funzionalità più ampia, qualcuno potrebbe chiedere perché non sto studiando MQL5. È semplice. Non tutti i broker lo supportano. Al momento MQL4 è ancora il più popolare e richiesto.

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...
 
Gilmor:

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants

Questa è probabilmente una domanda stupida, ma queste funzioni possono essere usate in MQL4? È solo che gli strumenti MQL4 sono più limitati.

Come ottenere dati in MQL4:


È un tesoro di dati utili in un solo clic. Ma come farlo in MQL4. Questo articolo conterrà anche alcuni consigli su come preparare MQL5 per studiare in MQL5. È semplice. Non tutti i broker lo supportano. Al momento MQL4 è ancora il più popolare e molto richiesto.

Nella documentazione di mql4 sono segnati tutti quelli che non funzionano.

SIMBOLO_BID

Offerta - migliore offerta

doppio

SIMBOLO_BIDHIGH

Non supportato

doppio

SIMBOLO_BIDOLO

Non supportato

doppio

SYMBOL_ASK

Chiedi - la migliore offerta di acquisto

doppio

SYMBOL_ASKHIGH

Non supportato

doppio

SYMBOL_ASKLOW

Non supportato

doppio

SIMBOLO_INDIETRO

Non supportato

doppio

SIMBOLO_ALTEZZA

Non supportato

doppio

SIMBOLO_LASTLOW

Non supportato

doppio

PUNTO SIMBOLO

Valore del singolo punto

doppio

Questa non è l'intera tabella. Ce n'è più di uno nella documentazione, basta premere F1 e leggerlo.

 
Alexey Viktorov:

Nella documentazione di mql4 sono segnati tutti quelli che non funzionano.

Grazie.
 
Aiuta a capire, non può impostare correttamente lo stop loss.
Linee di log:
2019.11.16 12:38:40.660 2019.01.02:35:00 Per calcolare gli stop, prendere il valore dal broker = 30
2019.11.16 13:20:18.791 2019.01.02:03:00 Aprire un ordine: Prezzo = 1,14595, Stop Loss = 1,14565, Take Profit = 1,14625
2019.11.16 13:20:18.791 2019.01.02 02:03:00 fallito acquisto istantaneo 0,01 EURUSD a 1,14595 sl: 1.14565 tp: 1,14625 [stop non valido]
2019.11.16 13:20:18.792 2019.01.02:03:00 CTrade::OrderSend: instant buy 0,01 EURUSD at 1,14595 sl: 1,14565 tp: 1.14625 [stop non valido]


E ora un po' di chiarezza per questo caso:
Nel codice prima di aprire un ordine calcolo:
prezzo = miglior prezzo di mercato per comprare, a seconda dell'ordine, in questo caso un acquisto.
SL = calcola uno stop giusto (il broker permette uno stop di almeno 30 unità dal prezzo) cioè
prezzo (1.14595) - 0.0003 = SL (1.14565)
TP = calcola uno stop giusto (il broker permette uno stop di almeno 30 unità dal prezzo) cioè
prezzo (1.14595) + 0.0003 = TP (1.14625)
Bene tutto sembra corretto, tengo 30 punti, ma ottengo un errore di impostazione.

Se impostiamo SL = 0, allora tutto va bene, ordine e TP sono impostati.
Ricevo un errore nel calcolo di SL, dov'è l'errore?
 
killer67:
Aiutami a capire, non riesco a impostare correttamente lo stop loss.
Linee di registro:
2019.11.16 12:38:40.660 2019.01.02 02:35:00 Per calcolare gli stop, prendere il valore dal broker = 30
2019.11.16 13:20:18.791 2019.01.02 02:03:00 Apri un ordine: Prezzo = 1,14595, Stop Loss = 1,14565, Take Profit = 1,14625
2019.11.16 13:20:18.791 2019.01.02 02:03:00 fallito acquisto istantaneo 0,01 EURUSD a 1,14595 sl: 1,14565 tp: 1,14625 [stop non valido]
2019.11.16 13:20:18.792 2019.01.02 02:03:00 CTrade::OrderSend: instant buy 0,01 EURUSD a 1,14595 sl: 1,14565 tp: 1,14625 [stop non valido]


E ora un po' di chiarezza per questo caso:
Nel codice che calcolo prima di aprire un ordine:
prezzo = miglior prezzo di mercato per comprare, a seconda dell'ordine, in questo caso un acquisto.
SL = calcolare uno stop giusto (il broker permette stop ad almeno 30 unità di distanza dal prezzo), cioè
prezzo (1,14595) - 0,0003 = SL (1,14565)
TP = Calcolare lo stop corretto (il broker permette stop ad almeno 30 unità di distanza dal prezzo) cioè
prezzo (1,14595) + 0,0003 = TP (1,14625)
Bene, tutto sembra essere giusto, tengo 30 pips, ma ottengo un errore di impostazione.

Impostiamo SL = 0, poi tutto va bene, ordine e TP sono impostati.
Risulta essere un errore nel calcolo di SL, dov'è l'errore?

Che tipo di prezzo?

 
Iurii Tokman:

Che tipo di prezzo?

Quando si acquista Prezzo = SYMBOL_ASK

In vendita Prezzo = SYMBOL_BID

 
killer67:

Quando si acquista Prezzo = SYMBOL_ASK

Quando prezzo di vendita = SYMBOL_BID

Avete provato ad aggiungere uno spread?

 
Iurii Tokman:

Avete provato ad aggiungere uno spread?

Fissato in questo modo:

double CheckSetSL(ENUM_ORDER_TYPE OrderT, double price)
  {
   if(InpSL != 0)
     {
      double CalcSL = 0.0;
      double SL = 0.0;
      if(InpSL < 0.0003)
        {
         CalcSL = 0.0003; // Если SL в настройках указано меньше 30 (установки брокером) то ставим минимально допустимую.
        }
      else
        {
         CalcSL = InpSL;
        }

      // Формируем стоп-лимит.
      if(OrderT == ORDER_TYPE_BUY)
        {

         SL = SymbolInfoDouble(_Symbol,SYMBOL_BID) - CalcSL;

        }
      else
        {

         SL = SymbolInfoDouble(_Symbol,SYMBOL_ASK) + CalcSL;

        }

      return SL;
     }

   return 0.0;
  }