Lunghezza massima del nome di un simbolo sul FOREX - pagina 8

 
fxsaber:

In effetti, è un martellamento. Dal momento che è possibile non aspettare che l'ordine sia tracciato. L'unica onTradeTransaction non alternativa è se l'ordine viene rifiutato. Per esempio, se non ci sono abbastanza soldi.


Si scopre che abbiamo fatto un centinaio di Async-transazioni riempiendo l'array (lista) con maghi e richiedenti appropriati. Non appena OnTradeTransaction ha ricevuto la risposta sulla ricerca, abbiamo rimosso l'elemento dalla lista. Non appena abbiamo visto l'evidenziazione di una majic dalla lista tra i vivi/morti, abbiamo rimosso la voce. È così che si ottiene più o meno il controllo. Hai capito bene?


Puoi ancora usare altri campi - SL/TP, Comment - invece della magia.

Sì, esattamente così. OnTradeTransaction non è mai disabilitato, solo la funzione di controllo è chiamata periodicamente (se OnTradeTransaction non è attivato). Non appena tutto ciò che riguarda l'ordine viene rilevato, le bandiere vengono azzerate.

Come si usa il commento come SL/TP?

 
fxsaber:

Perché aspettare quando puoi controllare ogni On-stream?

Perché nelle mie strategie è importante ciò che è venuto in OnTradeTransaction.

Non uso On-puke :)

Aggiunto

Se l'evento è arrivato inOnTradeTransaction allora tutto viene resettato, quindi non c'è nessun intoppo.

 
prostotrader:

Come usare il commento ronyatno, ma come SL/TP?

Sopra integrato...

Si imposta il falso SL, nel cui valore sono memorizzate le informazioni di cui si ha bisogno. Per esempio, questo è il modo in cui ho memorizzato il prezzo di apertura di una posizione in MT4, che è stato recuperato tramite il Limiter.

 
prostotrader:

Perché nelle mie strategie è importante esattamente ciò che è venuto in OnTradeTransaction.

Quindi assicuratevi di controllare le magagne direttamente in OnTradeTransaction. Io farei così.


In generale, l'idea dei megic come alternativa alle richieste è forte!

 
fxsaber:

Sopra integrato...

Si imposta un falso SL, nel cui valore sono memorizzate le informazioni di cui si ha bisogno. Per esempio, questo è il modo in cui ho memorizzato il prezzo di apertura di una posizione in MT4, che è stata riempita attraverso il Limitatore.

È possibile impostare SL quando non c'è posizione?

 
prostotrader:

È possibile esporre SL se non c'è posizione?

Potrebbe non essere possibile farlo per i ribassi. Da molto tempo ormai faccio trading solo con ordini limite.

 
fxsaber:

Potrebbe non essere possibile farlo per i mercati. Da molto tempo ormai faccio trading solo con ordini limite.

"È un po' strano immagazzinare informazioni in questo modo. Beh, sì, dovresti saperlo.

Dato che il mercato FOREX non mi interessa affatto, 6 simboli del nome del simbolo e 65365 tag su un grafico sono più che sufficienti per le mie esigenze,

Inoltre, posso eseguire solo 2000 transazioni per giorno di trading.

 
prostotrader:

Poiché il mercato FOREX non mi interessa affatto, i 6 caratteri del nome del simbolo e 65365 mogic su un grafico sono più che sufficienti per le mie esigenze,

Inoltre, posso effettuare solo 2000 transazioni in un giorno di trading.

Non si tratta di forex. E ci sono gli stessi problemi con OnTradeTransaction. Quindi una soluzione universale

#include <crc64.mqh> // https://www.mql5.com/en/blogs/post/683577

string GetMagicString()
{
  return(MQLInfoString(MQL_PROGRAM_PATH/*MQL_PROGRAM_NAME*/) + _Symbol + (string)ChartID()/* + (string)_Period*/);
}

// Формирует мэджик с изменяемой частью ReserveBits для прописывания туда Num-значения
ulong GetMagic( const int Num = 0, const int ReserveBits = 12 )
{
  uchar Bytes[];
  
  return((crc64(0, Bytes, (StringToCharArray(GetMagicString(), Bytes))) << ReserveBits) + (Num % (1 << ReserveBits)));
}

// Определяет, свой ли исходный мэджик с изменяемой частью ReserveBits
bool IsMyMagic( const ulong Magic, const int ReserveBits = 12 )
{
  return(GetMagic(0, ReserveBits) >> ReserveBits == Magic >> ReserveBits);
}

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  for (int i = 0; i < 10; i++)
  {
    PRINT(GetMagic(i));
    PRINT(IsMyMagic(GetMagic(i)));
  }
  
  PRINT(IsMyMagic(MathRand()));
}
 

Naturalmente, il modello degli eventi è scomodo in questo caso. Per esempio, se volete fare operazioni Async senza uscire dalla funzione On e ottenere il risultato.

Ora è possibile liberare questo comportamento attraverso una stampella.

  1. Scriviamo un indicatore (senza buffer e variabili di input) con OnTradeTransaction che scrive tutte le transazioni in un luogo pubblico (per esempio, in una risorsa).
  2. L'Expert Advisor crea questo indicatore attraverso iCustom.
  3. In qualsiasi luogo di esecuzione l'Expert Advisor può visualizzare tutte le transazioni in entrata scritte dall'indicatore.

Questo permette una grande flessibilità.

Per esempio, possiamo inviare un centinaio di ordini Async e aspettare la loro esecuzione senza uscire dal profondo, continuando ad eseguire il nostro codice.


Stiamo parlando, ovviamente, di Richieste. E il tema della magia non c'entra niente.


Anche se avrebbe senso per gli sviluppatori scrivere le transazioni su un array accessibile pubblicamente. Senza indicatore.

 
fxsaber:

Non si tratta di forex. E ci sono gli stessi problemi con OnTradeTransaction. Quindi una soluzione universale.

Anche se è possibile (e anche meglio) fare a meno delle operazioni bitwise - solo crc64 + Num.
2018.08.25 22:10:48.913 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091272
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091273

Ci sono coincidenze...

Motivazione: