C'è uno schema nel caos? Proviamo a trovarlo! Apprendimento automatico sull'esempio di un campione specifico. - pagina 5

 
elibrarius #:
Abbiamo bisogno di un risultato finanziario accurato e privo di errori. Senza di essi, la linea di bilancio è inaffidabile.
Fin. res. se scegliamo 0 (non è possibile includerlo, sarà sempre 0), se 1, se -1. Sempre, anche se si segna come 0 la classe non commerciare. Sempre, anche se segnate come classe 0 non fate trading. Il modello sarà sbagliato ed è necessario conoscere il prezzo dell'errore.

Non è il modello a determinare la direzione di entrata, quindi se c'è un errore nella direzione, non ci sarà entrata e quindi non ci sarà perdita.

 
Aleksey Vyazmikin #:

Non è il modello a determinare la direzione di ingresso, quindi se si sbaglia la direzione, non ci sarà alcun ingresso e quindi nessuna perdita.

Ho scritto della classe 0, che a volte viene prevista come 1 o -1. Lei ha scritto che il risultato finanziario è sconosciuto.

 
Aleksey Vyazmikin #:

Non è il modello a determinare la direzione d'ingresso

Se non è il modello a determinarla, non c'è bisogno di insegnarla.

 
elibrarius #:

Ho scritto della classe 0, che a volte sarà prevista come 1 o -1. Tu hai scritto che il risultato finanziario è sconosciuto.

Basta non rinunciare alla direzione.

Se la classe è zero e la direzione è +1 ed è stata classificata come 1, ci sarà una perdita - prendete qualsiasi colonna con il risultato finanziario modulo.

Se la classe è zero e la direzione è +1, ma è stata classificata come -1, non ci sarà nessuna entrata e nessuna perdita.

Se la classe è zero e la direzione è -1, ma è stata classificata come -1, ci sarà una perdita - prendere qualsiasi colonna con il risultato finanziario modulo.

Se la classe è zero e la direzione è -1 ed è stata classificata come 1, non ci sarà nessuna entrata, non ci sarà nessuna perdita.

elibrarius #:

Se non è il modello a determinarlo, non c'è motivo di insegnarlo.

La logica è semplice: un certo numero di predittori, o anche i loro valori, gravitano maggiormente verso una particolare direzione del movimento dei prezzi. Quando insegniamo tutto insieme per classe 1 e 0, stiamo essenzialmente selezionando i predittori che determinano un forte movimento in una qualsiasi delle direzioni - e di solito non ce ne sono molti, ma se diamo a ogni direzione la propria classe, alcune contraddizioni statistiche scompariranno e il modello può già includere indicatori di un predittatore a diversi estremi del suo valore, ad esempio RSI 70/30 può facilmente separarsi.

In teoria, la classe zero è piatta, quindi dovrebbe essere abbastanza simile per ogni direzione. Anche in questo caso, ho diviso il campione in due parti contemporaneamente - per direzione di entrata e questo ha migliorato i risultati dell'apprendimento - cioè una percentuale maggiore di modelli ha soddisfatto il criterio della soglia di profitto.

 
Aleksey Vyazmikin #:

Se la classe è zero e la direzione è +1 ed è stata classificata come -1, non ci sarà nessuna entrata, nessuna perdita.

L'insegnante non può entrare. Ma il modello commetterà un errore ed entrerà nel mercato. Il modello non conosce lo 0 e il +1 dell'insegnante, ha ricevuto una previsione di -1 ed entrerà nel mercato.

 
elibrarius #:

L'insegnante potrebbe non entrare. Ma il modello commetterà un errore ed entrerà nel mercato. Oppure avete un operatore condizionale che vieta al modello di operare come previsto? Temo di non avere un posto dove inserire un operatore di questo tipo per costruire un equilibrio.

Al momento non c'è nessun operatore, ma ci sono i dati per esso e sono scritti nella colonna "Target_P" - quindi tutto può funzionare abbastanza bene.

Ecco un esempio della logica del codice che ho abbozzato per costruire la bilancia

int Prognoz=0;//Сюда запишем прогноз
int Target_100[];//Фактическая целевая
int Target_P[];//Тип сделки - покупка/продажа
double Target_100_Buy[];//Финансовый результат от покупки
double Target_100_Sell[];//Финансовый результат от продажи
double Fin_Rez[];//Финансовый результат
int Strok_Total=0;//Всего строк
int Index_Fin_Rez=1;//Считаем число классифицированных 1 и -1 - это размер массива баланса и индекс массива Fin_Rez
ArrayResize(Target_100,Strok_Total);
ArrayResize(Target_P,Strok_Total);
ArrayResize(Target_100_Buy,Strok_Total);
ArrayResize(Target_100_Sell,Strok_Total);
ArrayResize(Fin_Rez,Strok_Total);
ArrayInitialize(Fin_Rez,0);
/*
Прочли данные файла в массивы - не знаю как реализовано у Вас
*/
for(int i=0; i<Strok_Total; i++)
{
/*
Сделали прогноз
*/
   if(Prognoz==-1 && Target_P[i]==-1)
   {
      Fin_Rez[Index_Fin_Rez]=Fin_Rez[Index_Fin_Rez-1]+Target_100_Sell[i];
      Index_Fin_Rez++;
   }
   if(Prognoz==1 && Target_P[i]==1)
   {
      Fin_Rez[Index_Fin_Rez]=Fin_Rez[Index_Fin_Rez-1]+Target_100_Buy[i];
      Index_Fin_Rez++;
   }
}
ArrayResize(Fin_Rez,Index_Fin_Rez);
 
Aleksey Vyazmikin #:

Al momento non c'è un operatore, ma ci sono i dati per esso e vengono scritti nella colonna "Target_P" - quindi tutto può funzionare abbastanza bene.

Ecco un esempio della logica del codice che ho abbozzato per costruire il bilancio

Il modello dovrebbe operare solo in base alle previsioni. Se si calcola il risultato utilizzando l'insegnante, si sbircia nel futuro. Il trading deve avvenire solo in base alle previsioni. Non si avrà un Target_100_Sell nel futuro reale.

Il modello non conosce lo 0 e il +1 dell'insegnante, ma ha una previsione di -1 e farà trading. È sufficiente conoscere il risultato finanziario di ogni variante di previsione.

 
elibrarius #:

Il modello dovrebbe operare solo in base alle previsioni. Se si calcola il risultato utilizzando l'insegnante, si sbircia nel futuro. Il trading deve avvenire solo in base alle previsioni.

Il modello non conosce lo 0 e il +1 dell'insegnante, ha ricevuto la previsione -1 e farà trading. È sufficiente conoscere il risultato finanziario di ogni variante di previsione.

Cosa c'entra il peeking? Cambiamo il target per migliorare l'apprendimento, non per cambiare la logica dell'EA. La logica è che conosciamo la direzione di entrata senza il modello, e il modello dovrebbe dirci se entrare o meno.

 
Aleksey Vyazmikin #:

e il modello dovrebbe dirvi se entrare o meno.

L'abbiamo già verificato.

 
elibrarius #:

L'abbiamo già verificato.

Abbiamo dei punti di entrata - linee di esempio - e un risultato finanziario definito dai punti di uscita, ossia i punti in cui viene impostato uno stop loss o un altro segnale. Se si vuole entrare nel mercato contrariamente alla strategia, cioè comprare dove si dovrebbe vendere, se il modello lo dice, è necessario definire nuovi punti di uscita. La domanda che sorge spontanea è: se il punto di uscita non è ancora apparso, ma è apparso il punto di entrata, che cosa si deve fare: chiudere e chiedere al modello la direzione di entrata, o cosa?

Motivazione: