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

 
Valeriy Yastremskiy:

Non capisco, come posso tracciare il momento in cui una posizione è chiusa, se non interrogando lo stato della posizione ad ogni tick? Naturalmente, non tutte le posizioni sono interrogate, ma c'è comunque un'interrogazione per ogni tick.

Studiate attentamente la documentazione.

Документация по MQL5: Обработка событий / OnTradeTransaction
Документация по MQL5: Обработка событий / OnTradeTransaction
  • www.mql5.com
При обрабокте транзакций типа TRADE_TRANSACTION_REQUEST для получения дополнительной информации необходимо анализировать второй и третий параметры функции OnTradeTransaction() – Отправка торгового запроса на покупку приводит к цепи торговых транзакций, которые совершаются на торговом счете: 1) запрос  принимается на обработку, 2) далее для...
 
Yevhenii Levchenko:
Non viene controllato ad ogni spunta. Se c'è un segnale, inizia a controllare e apre un accordo. Questo è tutto :)

In mql4, in mancanza di un cuoco *** il bidello. La domanda riguardava mql5

 
Alexey Viktorov:

Studiate attentamente la documentazione.

Grazie. Se sostituiamo l'ordine con un ordine, è più facile da capire. Non ho visto che l'esecuzione dell'ordine è un affare. In generale, è difficile da scrivere e implementare.)))
Ma sì. Non c'èOnTradeTransaction() in mt4.
 
Valeriy Yastremskiy:
Grazie. Se l'ordine è sostituito da un ordine è più facile da capire. Non ho visto che l'esecuzione di un ordine-ordine è un affare. Tutto sommato, è scritto e implementato in modo complicato)).
Così com'è, sì. Non c'èOnTradeTransaction() in mt4.

È meglio cercare di accettare la terminologia che avete e non sostituirla con la vostra. Vi abituerete con il tempo, e lo capirete a seconda della lingua che state usando. Al contrario, in MT4, un ordine di mercato è meglio chiamarlo posizione. Questo è quello che molte persone capiscono.

 
Alexey Viktorov:

È meglio cercare di accettare la terminologia così com'è, piuttosto che sostituirla con la propria. Con il tempo vi abituerete e capirete a seconda della lingua di cui si parla. Anche viceversa, in MT4 un ordine di mercato è meglio indicato come una posizione. Questo è il modo in cui molte persone lo capiscono.

Comprensioni misteriose))) take profit e stop loss sono ordini. Gli ordini sarebbero più chiari. La confusione viene da mt4 dove un ordine è un ordine, un trade e una posizione. Ecco perché dico ordine in mt5 e intendo ordini)
 

come inizializzare una tale struttura?

struct Data
  {
   double            open[];
   double            high[];
   double            low[];
   double            close[];
  };

   Data rates[5]= {0.0,0.0,0.0,0.0}; //ошибка
 
Fast235:

come inizializzare una tale struttura?

Da 4 a 5. Non conosco la sintassi. Sembra che dovrebbe essere in un array bidimensionale per logica.
 
Fast235:

come inizializzare una tale struttura?

nessun modo (solo ogni campo della struttura uno per uno)

avete bisogno di impostare la dimensione degli array, potreste scrivere un costruttore per questo, ma ci sarà un problema - la sintassi non vi permetterà di creare un array di strutture con un costruttore

soluzione - usa una classe invece della struttura e usa i puntatori, puoi inizializzare le dimensioni degli array nel costruttore della classe, e i dati possono essere copiati in essi


Valeriy Yastremskiy:
da 4 a 5. Non conosco la sintassi. Dovrebbe essere nell'array bidimensionale per logica.
struct S
  {
   int a;
   double b;
  };

//+------------------------------------------------------------------+
void OnStart()
{
   S s[2] = {{1, 1.1},{9, 9.9}};
   ArrayPrint(s);
}
//+------------------------------------------------------------------+

2020.09.23 08:27:09.554 tst (EURUSD,H1) [a] [b]

2020.09.23 08:27:09.554 tst (EURUSD,H1) [0] 1 1,10000

2020.09.23 08:27:09.554 tst (EURUSD,H1) [1] 9 9.90000

 
Fast235:

come inizializzare una tale struttura?

   Data rates[5]= {0.0,0.0,0.0,0.0}; //ошибка

C'è una differenza tra inizializzare e azzerare. Se l'azzeramento, a giudicare dai tuoi tentativi, è così

  ZeroMemory(rates);
 
Igor Makanu:

nessun modo (solo ogni campo della struttura uno per uno)

avete bisogno di impostare la dimensione degli array, potete scrivere un costruttore per questo, ma ci sarà un problema - la sintassi non permetterà di creare un array di strutture con il costruttore

soluzione - usa la classe invece della struttura e usa i puntatori, poi puoi nel costruttore della classe inizializzare le dimensioni degli array, e i dati possono essere copiati in essi


2020.09.23 08:27:09.554 tst (EURUSD,H1) [a] [b]

2020.09.23 08:27:09.554 tst (EURUSD,H1) [0] 1 1,10000

2020.09.23 08:27:09.554 tst (EURUSD,H1) [1] 9 9.90000

Grazie. Parentesi)))) non sintassi di array)
Motivazione: