Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 23

 
Artyom Trishkin:
No, non è vero. Hai solo bisogno di sapere come è stata chiusa l'ultima posizione (e non hai bisogno di andare molto più in profondità nella storia per questo - è sufficiente per filtrare i "tuoi" affari) - la conoscenza oltre l'ultima posizione in profondità nella storia è più statistica che operativa.
Bene, tutto questo viene fatto in OnTradeTransaction. Solo nel trigger pubblicato da fxsaber : aggiungerei un controllo sul simbolo, mago e trade su DEAL_ENTRY_OUT
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Alexey Viktorov:
Bene, tutto questo viene fatto in OnTradeTransaction. Solo nel trigger pubblicato da fxsaber : aggiungerei un controllo su simbolo, mago e trade su DEAL_ENTRY_OUT
E come faresti a controllare il tester?
 
Artyom Trishkin:
Come farete a controllare il tester?
Allo stesso modo. Qual è la differenza? Ho provato tutto in tester e debugger per capire come funziona.
 
Alexey Viktorov:

Non ho guardato attentamente questo trigger, ma non ho visto nessun controllo sullo scambio per DEAL_ENTRY_OUT. Dopo tutto, è questo commercio che indica la chiusura della posizione sui conti correnti.

Il controllo non è necessario. Il trigger non funziona nel tester, perché il tester non genera alcuni eventi commerciali.
 
fxsaber:
Il controllo non è necessario. Il trigger non funzionerà nel tester, perché il tester non genera alcuni eventi Trade.

Quali, per esempio, da questa lista?

AGGIUNGERE UN ORDINE DI TRANSAZIONE

Aggiunge un nuovo ordine aperto.

AGGIORNAMENTO DELL'ORDINE DI TRANSAZIONE

Modifica di un ordine aperto. Questi cambiamenti includono non solo i cambiamenti espliciti sul terminale del cliente o sul lato del server commerciale, ma anche i cambiamenti dello stato di immissione dell'ordine (ad esempio da ORDER_STATE_STARTED a ORDER_STATE_PLACED o da ORDER_STATE_PLACED a ORDER_STATE_PARTIAL ecc.)

ELIMINARE ORDINE DI TRANSAZIONE

Elimina l'ordine dalla lista degli ordini aperti. Un ordine può essere cancellato dalla lista degli ordini aperti come risultato di una richiesta di compravendita o come risultato dell'esecuzione (fill) e del trasferimento allo storico.

AGGIUNGI UNA TRANSAZIONE COMMERCIALE

Aggiungere uno scambio alla storia. Questo viene eseguito come risultato dell'esecuzione dell'ordine o come risultato delle operazioni di saldo del conto.

AGGIORNAMENTO TRANSAZIONE COMMERCIALE

Cambiamento di un mestiere nella storia. Sono possibili situazioni in cui un affare precedentemente eseguito viene cambiato sul server. Per esempio, la transazione è stata cambiata nel sistema di trading esterno (borsa), dove è stata rimossa dal broker.

TRADE_TRANSACTION_DEAL_DELETE

Cancellazione della transazione dalla cronologia. Ci possono essere situazioni in cui una compravendita precedentemente eseguita viene cancellata sul server. Per esempio, il trade è stato cancellato nel sistema di trading esterno (borsa) dove è stato rimosso dal broker.

AGGIUNGERE LA STORIA DELLA TRANSAZIONE

Aggiungere un ordine alla storia come risultato dell'esecuzione o della cancellazione.

AGGIORNAMENTO DELLA STORIA DELLE TRANSAZIONI COMMERCIALI

Modifica di un ordine inserito nella cronologia degli ordini. Questo tipo è destinato ad aumentare la funzionalità dal lato del server commerciale.

TRADE_TRANSACTION_HISTORY_DELETE

Cancellazione di un ordine dalla cronologia degli ordini. Questo tipo è destinato all'espansione delle funzionalità dal lato del server commerciale.

POSIZIONE_DI_TRANSAZIONE

Cambiamento di una posizione non legato all'esecuzione della negoziazione. Questo tipo di transazione indica che la posizione è stata cambiata dal lato del server commerciale. Il volume della posizione, il prezzo di apertura e i livelli di Stop Loss e Take Profit possono essere cambiati. Le informazioni sui cambiamenti sono passate alla struttura MqlTradeTransaction attraverso il gestore OnTradeTransaction. Un cambiamento di posizione (aggiunta, modifica o eliminazione) come risultato di una negoziazione non causa l'occorrenza della transazione TRADE_TRANSACTION_POSITION.

RICHIESTA DI TRANSAZIONE COMMERCIALE

Una notifica che una richiesta di compravendita è stata elaborata dal server e il suo risultato è stato ricevuto. Per le transazioni di questo tipo è necessario analizzare solo un campo - type (tipo di transazione) nella struttura MqlTradeTransaction. Il secondo e il terzo parametro della funzione OnTradeTransaction (richiesta e risultato) devono essere analizzati per ottenere ulteriori informazioni.


A meno che l'evento evidenziato non venga generato. Quindi, chi ne ha bisogno?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Quali sono, per esempio, in questa lista?

Evento commerciale è il mio termine.

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

Caratteristiche del linguaggio mql5, sottigliezze e trucchi

fxsaber, 2017.02.28 19:30

Ci può essere una posizione BUY aperta e un ordine BUY valido. Sopra ha dato un esempio di codice, ma probabilmente è più facile per 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.

L'evento Trade selezionato non si verifica nel tester.
 
fxsaber:

Evento commerciale è il mio termine.

Un evento Trade evidenziato non si verifica nel tester.

Non è un evento a mio avviso. Sono le sottigliezze della sequenza di esecuzione dell'ordine. Perché dovrei cogliere il momento in cui un ordine SELL per chiudere una posizione BUY è nel terminale contemporaneamente alla posizione stessa?

Può essere una sfortuna che la sequenza degli eventi non venga osservata, ma ... non è forse seguire il flusso degli eventi e misurarne la velocità? Se aprono una posizione per me domani al prezzo richiesto e la chiudono ieri, ma con un profitto, non mi opporrò.

 
Alexey Viktorov:

Secondo me, questo non è un evento. Sono le sottigliezze della sequenza dell'ordine. Perché dovrei cogliere il momento in cui un ordine SELL per chiudere una posizione BUY è nel terminale allo stesso tempo della posizione stessa?

Leggete il titolo di questo ramo.
 
fxsaber:
Leggete il titolo del thread.
Che differenza fa?
 
Alexey Viktorov:
Cosa cambierà?
Non cambierà nulla, ma le sottigliezze sono descritte - non c'è dubbio.
E la domanda rimane: come farà questa funzione a catturare la chiusura su punti/stop nel tester?
Motivazione: