Errori tipici e come affrontarli quando si ha a che fare con l'ambiente del trading - pagina 4

 
Artyom Trishkin:

E se l'ordine viene cancellato dal server?

Poi al prossimo tick l'EA vedrà che non ci sono posizioni, e tutto andrà bene. Ma non ci sarà nessun raddoppio.


Artyom Trishkin:

Penso che quando si contabilizzano gli ordini di mercato, dovremmo restituire WRONG_VALUE, per esempio - le posizioni non possono essere meno di zero. Questo sarà un segnale che c'è un ordine di mercato non registrato. Ma non aggiungere il numero di posizioni.

Questo dipende dalla logica del TS specifico.

Nel caso più elementare in cui è permesso un solo scambio nel mercato, dovrebbe essere restituito qualsiasi valore diverso da 0. Anche 1 va bene.

 
Andrey Khatimlianskii:

Poi al prossimo tick il consulente vedrà che non ci sono posizioni e tutto andrà bene. Ma non ci saranno doppioni.


Dipende dalla logica del particolare TS.

Nel caso più elementare, quando è permesso un solo scambio nel mercato, è sufficiente restituire qualsiasi valore diverso da 0, 1 andrà bene.

Esso (l'Expert Advisor) riceverà già, in questo tick, un valore superiore alla quantità di ordini a mercato. Cioè, in realtà ce ne sono due, ma la funzione darà come risultato 3.

Penso che questo non sia un comportamento normale. Dovremmo sempre riposare un numero valido, senza posizioni virtuali, che potrebbero non esserci.

Dopo tutto, ci sono strategie che richiedono calcoli precisi per un numero preciso e definito di posizioni, volumi, livelli aggregati di stop/stop, ecc...

 
Andrey Khatimlianskii:

Dipende dalla logica del particolare TS.

Nel caso più primitivo, quando è permesso un solo scambio nel mercato, è sufficiente restituire qualsiasi valore diverso da 0, anche 1 andrà bene.

Andrew, una funzione a cui si chiede una quantità o un volume o qualsiasi altro dato quantitativo è obbligata a dare il loro valore esatto.

Non è che stiamo giocando con i giocattoli :)

 
Artyom Trishkin:

Andrew, una funzione a cui si chiede una quantità o un volume o qualsiasi altro dato quantitativo è obbligata a dare il suo valore esatto.

Stai guardando un esempio specifico di un EA con un solo trade sul mercato, ed è scritto in modo errato il 99% delle volte. Devi ancora arrivare a quelli complessi.

Se proprio volete, rinominate la funzione in IsPosition e rendetela booleana: return(Res>0);

 
Andrey Khatimlianskii:

Viene preso in considerazione un esempio specifico di un EA con un solo trade sul mercato, che è scritto male il 99% delle volte. Devi ancora arrivare a quelli complessi.

Se proprio volete, rinominate la funzione in IsPosition e rendetela un booleano: return(Res>0);

Beh, no... è un esempio di qualche funzione di libreria comune "per tutte le occasioni"...

A proposito, interessante proposta di renderla una funzione booleana - seguendo l'esempio di molte funzioni standard mql5 - con ritorno del risultato dell'esecuzione come valore bool, e numero di posizioni passando il valore a una variabile per riferimento.

 
Artyom Trishkin:

Beh, no..., un esempio di funzione di libreria generica "per tutte le occasioni" è stato preso in considerazione...

Sì, universale.

 
fxsaber:

Sì, universale.

La soluzione che hai proposto contiene un'imprecisione nella cancellazione dell'ordine da parte del server. Vorrei discutere le opzioni per gestire questa imprecisione. Senza di loro, la proposta è grezza.
 
Artyom Trishkin:
La soluzione suggerita da voi contiene un'imprecisione di cancellazione dell'ordine da parte del server. Vorrei discutere su come affrontare questa imprecisione. Senza di loro l'offerta è grezza.

Allontaniamoci dalla MT5 verso la MT4. Un EA sta facendo trading. Improvvisamente, il broker fa un errore tecnico (non tu) e piazza una posizione sul tuo conto, che passa con successo il filtro dell'Expert Advisor amico o nemico - Magic, Symbol, ecc. Pochi secondi dopo, il broker corregge il suo errore - cancella (non chiude nemmeno) la sua posizione dal tuo conto.

Il tuo TS si romperà?


Ricordo una situazione in cui un grande broker che ama gli Expert Advisors ha fatto un ottimo lavoro. Per "errore" ha depositato una somma molto grande sul conto. Di conseguenza, l'Expert Advisor ha aperto una posizione con un lotto molto grande. Poi il broker ha corretto l'"errore" - ha ritirato il denaro erroneamente accreditato. Il conto è stato chiuso utilizzando uno stop loss.

 
fxsaber:

Allontaniamoci dalla MT5 verso la MT4. Un EA sta facendo trading. Improvvisamente, il broker fa un errore tecnico (non tu) e piazza una posizione sul tuo conto, che passa con successo il filtro dell'Expert Advisor amico o nemico - Magic, Symbol, ecc. Pochi secondi dopo, il broker corregge il suo errore - cancella (non chiude nemmeno) la sua posizione dal tuo conto.

Il tuo TS si romperà?


Ricordo una situazione in cui un grande broker che ama gli Expert Advisors ha fatto un ottimo lavoro. Per "errore" ha depositato una somma molto grande sul conto. Di conseguenza, l'Expert Advisor ha aperto una posizione con un lotto molto grande. Poi il broker ha corretto l'"errore" - ha ritirato il denaro erroneamente accreditato. Il conto è stato chiuso utilizzando uno stopout.

Non stiamo parlando della TS.
Una funzione che DEVE restituire ciò che è fisicamente nel conto.
Tutto il resto "immagina" - deve essere sull'equilibrio dello sviluppatore di TS. Ma dovrebbe avere nel suo arsenale una funzione semplice che non mente, e tuttavia dà la possibilità di conoscere lo stato incerto dell'ambiente.
 

Artyom Trishkin:
Мы говорим не о ТС.

Nell'esempio stiamo parlando della situazione specifica di TC descritta. E lì la domanda rimane senza risposta.

Una funzione che DEVE restituire ciò che è fisicamente nel conto.
Tutte le altre "immagini" dovrebbero essere sull'equilibrio dello sviluppatore del TC. Ma dovrebbe avere una funzione semplice nel suo arsenale, che non mente, e allo stesso tempo dà la possibilità di conoscere lo stato indefinito dell'ambiente.

La funzione restituisce ciò che è fisicamente nel conto. E mente esattamente come mentirebbe in MT4. Cioè tutto è normale.

Motivazione: