Regole della struttura. Imparare a strutturare i programmi, esplorare le possibilità, gli errori, le soluzioni, ecc. - pagina 14

 
C-4:
In questo caso dovremo memorizzare la storia dei segnali, il che è molto costoso. Guardiamo di nuovo l'incrocio di 2 medie. Supponiamo di riavviare l'EA. Non c'è un nuovo incrocio per entrare e l'EA dovrà in qualche modo ripristinare la sua storia di trading e capire che c'è stato un incrocio e che ora dovrebbe essere nello stato Buy e che questo segnale è stato elaborato e non dovremmo aprire una nuova posizione, ma dobbiamo trovare la vecchia posizione, ma non sarà facile da trovare, perché la posizione attuale potrebbe non appartenere necessariamente a un solo EA ... Tutto sommato, è un incubo. Questo è il percorso spinoso suggerito da hrenfx: scrivere un history tester in ogni robot, che raccolga i segnali storici, calcoli se hanno funzionato o meno, e poi memorizzi i volumi delle strategie, ecc. Di conseguenza, la complessità dello sviluppo aumenta di un ordine di grandezza, mentre non esiste ancora una soluzione affidabile.

La cronologia dei segnali è un indicatore, gli indicatori sono progettati per questo scopo, per fare calcoli, generare segnali e caricarli nell'Expert Advisor.

E non dire che gli indicatori sono ridisegnati, scrivi indicatori che non sono ridisegnati e sarai felice.


Nessuno può portarci fuori strada, non ce ne frega niente di dove stiamo andando :)

 
C-4:

Come potrebbe non avere importanza? Qualsiasi strategia, a livello logico, conosce sempre il suo stato attuale!

Ecco il problema di base. Lo conosco bene, sono passato attraverso tutti gli angoli e le fessure qui, ed è sbagliato.

La strategia non ha bisogno di conoscere la sua storia. La strategia dovrebbe guardare avanti, non indietro. Quello che è successo è già nel passato e non si può tornare indietro.

Prendiamo una semplice strategia di crossover: ha solo due stati, o si compra o si vende. Senza memorizzare la sua posizione, aprirà una posizione lunga ogni volta che vedrà che la media veloce è superiore a quella lenta. Quindi cosa deve fare il sincronizzatore? Gli dici: "No, hai già una posizione lunga, non te ne darò un'altra".

:)

Beh, l'ho già scritto, state risolvendo un problema inesistente. Il problema sembra reale solo con il pensiero "d'ordine". Con il pensiero delle reti non esiste.

Non sto parlando del tuo o del mio pensiero, sto parlando del pensiero del programma (strategia).

In un sistema basato sugli ordini la strategia è un produttore di segnali discreti di acquisto/vendita/chiusura. In un sistema basato sulla rete la strategia produce un numero (doppio) - la posizione di mercato raccomandata.

Usiamo l'esempio di due carri per mostrare come un rollover netting TC produrrà il suo prodotto, diciamo, quando si negozia un lotto costante (pseudocodice):

 Pos = Sign(MA(ShortPeriod) - MA(LongPeriod));

Questo è tutto.

La strategia manterrà +1 sull'uscita finché l'oscillazione breve è superiore a quella lunga, e -1 quando è inferiore.

Le decisioni su quali ordini piazzare/chiudere per mantenere quelle posizioni nei momenti appropriati sono prese dal driver del mercato. La strategia non ha bisogno di preoccuparsene, il suo ruolo è più aristocratico e non si preoccupa di tutta quella roba mercantile. Il driver prende la posizione raccomandata del simbolo, sottrae la posizione attuale da essa e visualizza la differenza. Se la differenza è uguale a zero, non fa nulla.

La mia soluzione è universale, la strategia decide da sola quanti ordini e in quale direzione può tenere aperti.

La strategia deve preoccuparsi degli ordini? Il driver del mercato decide su queste domande.


Se volete una posizione di acquisto e due di vendita, nessun problema.

È possibile ridere qui? Questo è esattamente il problema - si chiama "blocco".

Ho tutte le potenziali serrature sbloccate PRIMA che la posizione aggregata di diverse strategie di ingresso sia sottoposta al driver del mercato:

  Pos=0;
  for (i=0; i<StrategyCount; i++)  Pos+= Strategy[i].GetPos();
  MarketDriver.Synhronize(Pos, Err);

La classe base ha tutte le informazioni necessarie per prendere decisioni. A livello di terminale, non c'è una posizione netta, mentre la strategia stessa lavora nella comoda modalità multi-posizione.

L'Expert Advisor creato dal mio modello proposto avrà automaticamente le proprietà di un multi-expert. Non dovrò aggiungere o modificare nulla. Le posizioni di diversi EAs su un simbolo non collasseranno in rete, è facile programmare una griglia o un armadietto in questo schema come in qualsiasi altra strategia. In altre parole, si ottiene la piena unificazione dell'implementazione del programma, indipendentemente dalla logica dell'Expert Advisor!

Uh... La mia soluzione è ancora più versatile se si considera che i lucchetti non vi sorgono nemmeno. Gli amanti dei lucchetti non vanno con me, io vado con loro.
 
MetaDriver:

...

La strategia manterrà +1 in uscita finché lo short è superiore al long, e -1 quando è inferiore.

Il guidatore del mercato decide quali ordini piazzare/chiudere per mantenere quelle posizioni al momento opportuno. La strategia non ha bisogno di preoccuparsene, il suo ruolo è più aristocratico, non le interessa tutto questo trambusto mercantile.

La strategia ha bisogno di preoccuparsi di qualche tipo di ordine? Il driver del mercato decide questi piccoli dettagli per me.

...

Tutto questo va benissimo, naturalmente, ma che dire delle strategie la cui "raccomandazione" attuale dipende da una posizione aperta in precedenza. Supponiamo che una strategia sia attivamente piramidale e abbia una tale condizione (pseudocodice):

if(LastPosition.NetProfit > 400 && LastPosition.PositionType == Long)
{
   double volume = LastPosition.Volume + 1;
   BuyAtMarket(volume, "Entry long by strengthening");
}

Un altro esempio di come il sistema di raccomandazione gestirebbe una condizione così semplice (pseudo-codice):

if(LastPosition.NetProfit < -400)
{
    CloseAtMarket(LastPosition, "Exit position by stop-loss");
    if(LastPosition.PositionType == Long)
       ShortAtMarket(volume, "Entry long by revers")
    else
       BuyAtMarket(volume, "Entry short by revers")
}
In realtà, ci possono essere molte di queste condizioni.
 
MetaDriver:
Questa è la cosa fondamentale e confusa. Lo conosco molto bene, ho perlustrato ogni angolo qui dentro, ed è sbagliato.

La strategia non ha bisogno di conoscere la sua storia. La strategia dovrebbe guardare avanti, non indietro. Quello che è successo è già successo nel passato e non si può tornare indietro.

Perché stai gridando :) non è quello che ha detto.


Qualsiasi strategia, a livello della sua logica, conosce sempre il suo stato attuale!

Si tratta dello stato attuale, non della storia.
 
C-4:

Tutto questo va benissimo, naturalmente, ma che dire delle strategie la cui "raccomandazione" attuale dipende da una posizione aperta in precedenza. Supponiamo che la strategia sia attivamente piramidale e che abbia questa condizione (pseudo-codice):

Queste strategie hanno sicuramente bisogno di essere guarite, a livello di filosofia di trading. In particolare, questo particolare buco nella testa dovrebbe essere guarito: "la raccomandazione attuale dipende da una posizione aperta in precedenza".

L'attuale posizione raccomandata non dovrebbe mai dipendere da azioni intraprese in precedenza sul mercato.

 
sergeev:

Perché stai gridando :) non è quello che ha detto.

c'è scritto stato attuale, non storia.

Non sto comunicando con quello che ha detto, ma con quello che voleva dire. Si riferiva allo stato attuale precedente.

:)

 

:)

Infatti, per il mio schema, non ci sono ostacoli principali per creare strategie che tengano conto dei trade passati.

In termini più accademici: un sistema senza memoria può facilmente simulare un sistema con memoria. Per fare questo, la memoria è semplicemente spostata fuori dal sistema - diventa un altro indicatore di input. Questo è abbastanza. La strategia stessa rimane un "sistema senza memoria" e questo è buono e giusto.

 
MetaDriver:

L'attuale posizione raccomandata non dovrebbe mai dipendere da azioni eseguite in precedenza sul mercato.

E i robot che "emettono le proprie raccomandazioni" i cui segnali sono di una sola frase? Il robot ha visto una grande candela al rialzo - un segnale di acquisto. La barra successiva è una barra normale, non c'è nessun segnale. Se il robot non ricorda il suo stato, la sua raccomandazione su questa barra è già nulla, mentre il robot che lo ricorda non è nullo ma ha una posizione lunga. Ma quelli sono due robot identici.

MetaDriver:

Non sto comunicando con quello che ha detto, ma con quello che voleva dire. Si riferiva allo stato attuale precedente.

Ah, allora è questo che intendevo veramente! Lo saprò:)
 
C-4: ... Tutto questo va benissimo, naturalmente, ma che dire delle strategie la cui "raccomandazione" attuale dipende da una posizione aperta in precedenza. Supponiamo che una strategia sia attivamente piramidale ...

Il punto è che il top-starter probabilmente non è una strategia, ma una previsione dei prezzi.

MetaDriver: ... Il compito di una strategia è quello di prevedere se il mercato salirà o scenderà nel prossimo momento, e con quale probabilità. La posizione di mercato raccomandata dipende da questo. Quello che c'era in passato, se ci sono posizioni aperte (in entrambe le direzioni) o no - non ha assolutamente importanza. ...
E quello di cui tu(C-4) stai parlando è il lavoro del modulo di gestione del denaro che prende sia le letture del predittore che i risultati del commercio passato come input(una specie di funzione). Se non c'è MM, allora l'algoritmo di trading finale, di fatto, trasforma una posizione virtuale predicatrice (che non si preoccupa dei risultati passati del trading) in una reale, dove la direzione futura del mercato è il segno della posizione raccomandata, e la fiducia/la probabilità è proporzionale al volume della stessa posizione.

Il modulo MM è un livello tra Forecaster e Driver, e i risultati possono essere qualsiasi cosa, dalla capitalizzazione e limite di rischio (drawdown relativo in X ... ore/trades/movimento di pip) all'inversione radicale della posizione raccomandata dal forecaster.

 
C-4:

E i robot che "emettono le proprie raccomandazioni" i cui segnali sono di una sola frase? Il robot ha visto una grande candela al rialzo - un segnale di acquisto. La barra successiva è una barra normale e non c'è alcun segnale. Se il robot non ricorda il suo stato, la sua raccomandazione su questa barra è già nulla, mentre il robot che lo ricorda non è nullo ma ha una posizione lunga. E quelli sono due robot identici.

Questi robot devono assolutamente essere trattati. Il trattamento può essere molto semplice, basta la motivazione. Questa è la cosa principale.

E per essere motivati, hanno bisogno di vedere e apprezzare l'enorme superiorità del pensiero di rete sul pensiero d'ordine. Finché sono malati, non li lascerò avvicinare alla popolazione sana - li lascerò stare in quarantena...

:)

Ah, allora è questo che intendevo veramente! Buono a sapersi:)
Perché no? Devo scusarmi? O ho indovinato? ;-))