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

 
fxsaber:

Temo che questa sia una logica sbagliata. Ma potrei sbagliarmi, naturalmente. Sarebbe interessante sentire la logica.

Arbitraggio di 3+ piedi

 
Комбинатор:

Arbitraggio di 3+ piedi

Si possono usare diverse logiche per questo TS. Tipicamente è l'invio asincrono di tre ordini. Ma, in effetti, ci sono varianti in cui un OrderSend sincrono viene inviato per primo al simbolo più probabile che sia forte. E se l'OrderSend termina con una posizione aperta - il meno probabile è l'invio di due ordini OrderSendAsync.

In questa situazione, può sembrare che la prima "posizione" - l'ordine di mercato - abbia bisogno di un meccanismo per determinare se la prima "posizione" è incompleta. Ma il primo OrderSend fa passare un ordine limite al prezzo corrente o leggermente peggiore. Pertanto non è considerato una "posizione". Gli altri due sono ordini di mercato, il più delle volte. E contarli come "posizioni" permette di evitare situazioni di riapertura delle posizioni. In questo caso questa contabilità non ha effetti negativi.

 

Tutto sommato, per come la vedo io - non ci sarà nessuna soluzione. Non è nemmeno una soluzione, ma un principio di funzionamento logicamente corretto con il numero di ordini e posizioni.

Sto parlando della funzione usata per qualsiasi strategia, altri dicono - per ogni strategia - una stampella diversa.

 
fxsaber:

Questo esempio si è rivelato essere molto più fresco. Il TP, che è stato piazzato dal broker stesso, è stato reindirizzato! E quasi immediatamente (stavo aspettando per 115 ms - apparentemente era un bug in MT5) dopo la ri-registrazione, il broker ha piazzato il prossimo TP, che è stato eseguito. I commenti agli ordini non appaiono nello screenshot. Il colore verde èORDER_REASON_TP. Di conseguenza, l'ordine di rifiuto ha anche ORDER_POSITION_ID.

Questo non è un ordine di rifiuto, ma un ordine normalmente riempito che è stato eseguito. Quando viene eseguito, si ottiene l'ID di posizione.

Inoltre, abbiamo due ordini, uno dei quali non viene eseguito. Ora la domanda è: quante posizioni (se questi ordini non fossero ordini di stop ma di posizione), quindi - quante posizioni vi restituirebbe il vostro approccio? La risposta è: un altro, che è falso. Perché l'hai fatto allora?

 
Artyom Trishkin:

Questo non è più un ordine di rifiuto, ma un ordine normalmente eseguito. Quando viene eseguito, è quando viene ricevuto l'ID di posizione.

Avete un'idea sbagliata.


Un'altra cosa: ci sono due ordini, uno dei quali non è stato eseguito. Ora la domanda è: quante posizioni (se questi ordini non fossero ordini di stop ma di posizione), quindi quante posizioni ti restituirebbe il tuo approccio? La risposta è: un altro, che è falso. Perché l'hai fatto allora?

Facciamolo di nuovo. Supponiamo che ci siano due posizioni aperte. E impostiamo il futuro ordine di mercato di questo tipo. La funzione restituisce 2+1=3. TS considera che ci sono tre posizioni e tutto va bene. In 16 ms arriva il ri-rivestimento. TS controlla quante posizioni - 2+0=2. E gliene servono tre! - invia un altro ordine di mercato. Poi di nuovo 2+1=3. E l'ordine viene eseguito, ottenendo 3+0=3.

 
Artyom Trishkin:

In generale, per come la vedo io - non ci sarà una soluzione. Non è nemmeno una soluzione, ma un principio di funzionamento logicamente corretto con il numero di ordini e posizioni.

Sto parlando della funzione usata per qualsiasi strategia, altri dicono - per ogni strategia - una stampella diversa.

Non ho cambiato idea. La funzione rimane universale per il 99,9% degli EA e delle piattaforme di trading.

 
fxsaber:

Avete un'idea sbagliata.


Ripetiamo ancora una volta. Supponiamo che ci siano due posizioni aperte. E mettiamo questo tipo di ordine di mercato futuro. La funzione restituisce 2+1=3. TS guarda tre posizioni e tutto è a posto. In 16 ms arriva il ri-rivestimento. TS controlla quante posizioni - 2+0=2. E gliene servono tre! - invia un altro ordine di mercato. Poi di nuovo 2+1=3. E l'ordine viene eseguito, ottenendo 3+0=3.

#896615 - rifiuta, e NON ha un ID-posizione.

Mettiamola in un altro modo. Supponiamo che ci siano due posizioni aperte. Riceviamo un segnale per aprire una terza posizione, ci invia una richiesta di trading e ottiene questo ordine di mercato inverso. Se ci sono tre posizioni, il nostro EA passerà a inviare altre richieste di trade usando un simbolo diverso. La funzione restituisce 2+1=3. TS guarda tre posizioni e inizia a calcolare i volumi, prende/stoppa altre tre posizioni - da un altro simbolo, invia ordini di trading per aprire da un altro simbolo. Dopo 16 ms arriva la dichiarazione di uno da un altro simbolo. TS guarda quante posizioni - 2(attuali)+3(2 posizioni e un mercato di un altro simbolo)=5. E dovrebbero essere sei! - invia un altro ordine di mercato per il simbolo corrente a un prezzo completamente diverso e calcola il volume e i takeoff/stop delle nuove posizioni per il terzo simbolo. Poi succede di nuovo lo stesso casino.

E poi ci grattiamo la testa - perché è diventato pazzo?

O pensate di dover creare funzioni per una sola - la vostra - strategia e logica di costruzione del TS? Vi sbagliate.

 
fxsaber:

Non ho cambiato idea. La funzione rimane universale per il 99,9% degli EA e delle piattaforme di trading.

No. Solo per una logica comportamentale.

E ce ne sono migliaia.

 
fxsaber:

Non ho cambiato idea. La funzione rimane universale per il 99,9% degli EA e delle piattaforme di trading.

La funzione dovrebbe restituire ciò che le viene chiesto. In modo chiaro e incondizionato, e non perché l'utente decida in seguito di cosa ha bisogno.

La logica che suggerisco dovrebbe essere così

  • Domanda: Quante posizioni ci sono?
  • Risposta: due

... O dovrebbe essere così:

  • Domanda: quante posizioni ci sono
  • Risposta: Aspetta un attimo - non è ancora chiaro
  • In attesa, poi la domanda: quante posizioni ci sono?
  • Risposta: tre

E lei suggerisce:

  • Domanda: Quante posizioni ci sono?
  • La risposta è tre.
  • Ok, questo è il numero che ho aspettato, continuare a contare e aprire su un altro simbolo ... Dopo un po' di tempo: Che mucchio di stronzate... Domanda: quante posizioni?
  • Risposta: due.
  • Domanda: perché hai detto tre?
  • Risposta: Ho pensato che potresti averne bisogno più tardi
  • Domanda: quante posizioni per l'altro simbolo
  • Risposta: tre
  • Sì? Sei sicuro? E così hai fatto saltare i soldi sull'altro simbolo con l'ultima risposta...
 
Artyom Trishkin:

#896615 è respinto e NON ha una posizione ID.

Leggi il numero nella terza casella rossa a sinistra nello screenshot qui sopra.

Mettiamola in un altro modo. Supponiamo che ci siano due posizioni aperte. Otteniamo un segnale per aprire una terza posizione, inviamo una richiesta di trading e otteniamo questo ordine di mercato reindirizzato. Se abbiamo tre posizioni, il nostro EA passerà a inviare altre richieste di trade usando un simbolo diverso. La funzione restituisce 2+1=3. TS guarda tre posizioni e inizia a calcolare i volumi, prende/stoppa altre tre posizioni - da un altro simbolo, invia ordini di trading per aprire da un altro simbolo. Dopo 16 ms arriva la dichiarazione di uno da un altro simbolo. TS guarda quante posizioni - 2(attuali)+3(2 posizioni e un mercato di un altro simbolo)=5. E dovrebbero essere sei! - Invia un altro ordine di mercato per il simbolo corrente a un prezzo completamente diverso e calcola il volume e i takeoff/stop delle nuove posizioni per il terzo simbolo. Poi succede di nuovo lo stesso casino.

E poi ci grattiamo la testa chiedendoci perché è diventato pazzo.

Se non si scrive e non si compone la logica di trading piegata, non solo si graffia la propria reputazione. Capisco che tra i TK disonesti, che probabilmente hanno inondato i freelance, questo non è raro. E siccome i soldi non puzzano, qualcuno li prende per il principio: se ti chiedono un cazzo, fallo e dimenticalo. Niente che si avvicini a questo è mai stato scritto in un incubo. Ma sono sicuro che i freelance conoscono molto meglio di me i gradi delle feci tra i TK. Quindi sì, per i TC inadeguati può essere molto utile l'opzione proposta da @Combinator- per fare piedi dal TC, non appena trovato un ordine di mercato con zero ID.

O pensi che dobbiamo creare funzioni per una sola - la tua - strategia e logica di costruzione del TS? Ti sbagli.

Credo che dobbiamo pensare, come minimo. E non creare un ambiente adatto alla riproduzione di abominevoli TC. Purtroppo, non sono in grado di formulare un criterio per definire un fondo tra i TC. Per non ferire nessuno, invertirò la visione del mondo - io sul fondo, e il noto TK galleggerà sulle leggi della fisica.


La ricetta, come si dice, è universale:

  1. Incontrare un ordine a mercato con zero ID - uscire immediatamente.
  2. MT5-OrderSend è stato riscritto per restituire sempre un Result.deal non nullo - il codice sorgente è stato pubblicato nella KB.
  3. Dopo ogni OrdineInvia o Dormiente, vai al punto 1.
Con questo approccio qualsiasi TC (assoluto al 100%) funzionerà.