Domanda sulla funzione OnTradeTransaction - pagina 3

 
Mikalas:

:)

1. ESEMPIO per i FORTI

2. Non si possono mettere i brackpoint?

3. Ho l'impressione che tu stia leggendo i messaggi attraverso una linea :)

No, ho l'impressione che tu stia scrivendo oltre la linea:

void OnTick()
{
  MqlTick a_tick; //Зачем этот зазор ниже?
                                           
  if ( SymbolInfoTick( _Symbol, a_tick ) )
  {
    PlaceOrder( _Symbol, a_tick.ask, 1, false );   //Устанавливаем ордер
  }     
}

:)) Ho messo dei punti di interruzione e non ho ancora capito. Scusa, ma il tuo codice è brutto. L'ordine viene inviato prima, e poi vengono fatti alcuni controlli senza senso inOnTradeTransaction e CheckOrder(). Il volume è anche calcolato nel checker.

Non torturiamoci a vicenda: Dai almeno una breve annotazione del tuo codice (cosa l'autore voleva dire per così dire, quali obiettivi cercava:) e cercherò di farne un'analisi non superficiale. Non voglio richiamarlo così com'è ora, anche sotto breakpoint.

 
Mikalas:

:)

Facciamo così.

Io ti faccio delle domande e tu rispondi, ok?

...

Forza!
Mikalas:

Domanda 1: come farete a sapere il biglietto dell'ordine (inviando il comando OrderSendAsync), se l'evento TradeTransaction non è arrivato (o non è usato)?

Riconoscerò il biglietto d'ordine attraverso la funzione TrackingHistoryOrders, perché prima o poi l'ordine sarà eseguito e andrà nella storia degli ordini che questa funzione analizzerà.

 
C-4:

Ho l'impressione che lei stia scrivendo attraverso una linea:

Ho messo dei punti di interruzione e ancora non ho capito. Scusa, ma il tuo codice è brutto. L'ordine viene inviato prima, e poi vengono fatti alcuni controlli senza senso in OnTradeTransaction e CheckOrder(). Il volume è anche calcolato nel checker.

Non torturiamoci a vicenda: Dai almeno una breve annotazione del tuo codice (cosa l'autore voleva dire per così dire, quali obiettivi cercava:) e cercherò di farne un'analisi non superficiale. Non voglio richiamarlo nella forma in cui è ora, anche sotto breakpoint.

:):):)

Non sono più giovane (la foto ha 9 anni), e sono più a mio agio a fare "buchi" nel codice per una migliore percezione.

E molte persone trovano anche più comodo leggere il codice quando righe e colonne di 100 caratteri non sono scritte insieme.

Tu pensi che sia "brutto" perché TU ti sei preso il tempo di inventare il tuo metodo di

OrderSendAsync, quindi pensi che codice diverso = brutto! :)

Il principio è molto semplice, e tu lo sai, perché hai partecipato alla discussione su questo argomento.

La soluzione a questo problema è stata suggerita da Yurich, ovvero che per ogni ordine del comando OrderSendAsync

ha la sua magia, allora questo ordine, se l'evento TradeTransaction non è arrivato, è molto facile da trovare (per magia).

Per ogni simbolo viene assegnato un intervallo di numeri magici, ad esempio, per AUDUSD da 1010000 a 1019999,

per EURUSD da 1020000 a 1029999

Questi numeri unici possono essere ripetuti nel tempo

if ( mem_magic >= ( magic_number + 9999 ) ) mem_magic = magic_number;  //Переполнение, начинаем сначала

Per evitare di "entrare" in un altro ordine, c'è una variabile (datetime mem_time;)

che memorizza la data e l'ora in cui l'ordine è stato effettuato.

Vogliamo continuare con questo?

 
C-4:
Forza!

Ottengo il ticket dell'ordine attraverso la funzione TrackingHistoryOrders, perché prima o poi l'ordine sarà eseguito e entrerà nella storia degli ordini, che sarà analizzata da questa funzione.

Va bene, ma ne ho bisogno il prima possibile (l'ordine può essere "appeso" per un giorno e non sarà nella cronologia).

Voglio modificarlo!

Voglio cancellare!

 

Tutto il trambusto e un sacco di codice ausiliario viene da questa frase: Inoltre, letransazioni possono perdersi nella consegna dal server al terminale.

Qualcuno può chiarire la situazione? Chi può perdere una transazione di persona (glitch della borsa, chiusura del broker, blocco del server MQ MT5)?

Perché MQ non vuole garantire la consegna delle transazioni, a chi giova?

 
Serj_Che:

Tutto il trambusto e un sacco di codice ausiliario viene da questa frase: Inoltre, letransazioni possono perdersi nella consegna dal server al terminale.

Qualcuno può chiarire la situazione? Chi può perdere una transazione in particolare nelle persone (glitch di scambio, chiusura del broker)?

Perché MQ non vuole garantire la consegna delle transazioni, a chi giova?

Nessuno lo fa, ma MQ "non può permettersi" di fare tutto in una volta, e ci sono molti progetti, e

i programmatori di talento scarseggiano, quindi ci vuole troppo tempo...

Lo faranno, naturalmente. (Hanno già tutto per questo, a parte il meccanismo di tracciamento stesso).

 
Basil, quindi come fai a modificare (cancellare) un OrderSendAsync emesso se non hai un biglietto?
 
Mikalas:

Nessuno ne sta beneficiando, MQ semplicemente non può mettere le mani su tutto in una volta, e ci sono un sacco di progetti, ma

i programmatori di talento scarseggiano, quindi ci vuole troppo tempo...

Lo faranno, naturalmente. (hanno già tutto per questo, tranne il meccanismo di tracciamento stesso).

Per quanto ho capito lo scambio dà tutto. Non ha nemmeno senso che un normale broker perda qualcosa.

Su MQ sembra così. MQ ha MetaTrader5 e l'integrazione con la borsa non è una priorità.

 
Serj_Che:

Per quanto mi riguarda, lo scambio dà tutto. Non ha nemmeno senso che un normale broker perda qualcosa.

Questo è simile a MQ. MQ ha MetaTrader5 e l'integrazione con la borsa non è una priorità.

Sì, questo perché non c'è cucina sullo scambio (solo commissioni), e ci sono milioni di seguaci di MMM sul FOREX,

Possono avere 100 dollari, ma tutti ne hanno! Soldi enormi, c'è qualcosa da contare! :)

 

Vasily, ci sarà una risposta?

Non credo.

Ho vinto?

Motivazione: