Non il Graal, solo uno normale - Bablokos!!! - pagina 236

 
sbmill:

Comprensione corretta della costruzione di 8 spread su 4 coppie

1234
12-3-4-4
123-42
12-344
1-2346
1-2-3-4-8
1-23-4-2
1-2-340
123410

E così si dispongono 35 combinazioni di 7 per 4

No, intendevo il numero teorico di varianti per una ricerca di direzioni. In pratica è un po' diverso,da 7 a 4 = 105 e se il metodomatematiconon dipende daun ordine di impostazione degli input FI- da tre: EGAN, EAGN, ENGA è possibile prenderne uno qualsiasi. Il risultato su tutti 35!
 
 

Ciao a tutti!

Joker, posso farti una domanda generale?

Prima selezioni gli strumenti e li usi per costruire e analizzare lo spread e la sua equity (penso che tu abbia usato questa variante) o costruisci molti spread e poi analizzi la loro equity, e quelli adatti vanno in funzione?

 
Talex:

Prima selezioni uno strumento e lo usi per costruire e analizzare lo spread e la sua equity (penso che tu stia usando questa opzione) o costruisci molti spread e poi analizzi la loro equity, e poi usi quelli appropriati nel tuo lavoro?

Qual è la differenza tra questi metodi?
 
lob32371:
Qual è la differenza tra questi metodi?

Nel primo caso, lo spread consiste in strumenti con condizioni "richieste", mentre nel secondo, questo non viene controllato, ma vengono controllate solo le "caratteristiche" dello spread stesso.

 
Talex:

Ciao a tutti!

Joker, posso farti una domanda generale?

Prima selezioni uno strumento e lo usi per costruire e analizzare lo spread e la sua equity (penso che tu abbia usato questa variante) o costruisci molti spread e poi analizzi la loro equity, e quelli adatti sono usati nel tuo lavoro?


Vengono costruiti numerosi spread e viene analizzato l'intero set. Vengono utilizzati i migliori del sistema.


Un paio di commenti all'immagine:

Tutti gli spread dopo il razionamento saranno collocati in un semipiano (positivo). Quelli che sono normalizzati nella zona negativa sono invertiti:

Il punto in cui gli spread iniziano a muoversi è lo stesso per tutti (cioè zero). Non importa quanto cerchi di ottenere spread neutrali al mercato, non ci riuscirai. Il mercato è sempre in movimento. Gli spread permettono solo di eliminare le fluttuazioni imprevedibili del mercato e di diminuire il drawdown delle operazioni commerciali.

I - L'altezza del centro del canale di normalizzazione rispetto allo zero caratterizza la potenza del movimento dello spread (gli spread più deboli sono scartati). Vogliamo guadagnare, non fumare bambù per mesi, vero? ))

II - la larghezza del canale di spread normalizzato descrive la forza della cointegrazione degli strumenti (stretto - fortemente cointegrato, largo - scarsamente cointegrato). Quelli debolmente cointegrati sono naturalmente rifiutati (le passeggiate casuali non fanno per noi).

III - zona decisionale (non ve ne parlerò intenzionalmente).


Ti ho detto e mostrato tutto il possibile.

(A proposito, ho promosso il sistema di Alexander, ma non lo userò in nessun caso. Lavora all'interno del canale ed è una bomba ... )

Chiunque abbia domande teoriche, è pregato di studiare prima l'enorme contributo alla teoria del signor hrenfx, vale a dire i suoi risultati in recycle2


Vai per questo...

 

Joker, grazie per la risposta.

P.S. C'è davvero molto esposto nel thread, tutto ciò che resta da fare è pensare/verificare/capire da soli, penso che solo il pigro non troverà qualcosa per sé qui.

 
kot287:
No, intendevo una quantità teorica di varianti per l'enumerazione delle direzioni. In pratica è un po' diverso,da 7 a 4 = 105 e se il metodomatematiconon dipende daun ordine di impostazione degli input FI- da tre: EGAN, EAGN, ENGA è possibile prenderne uno qualsiasi. Il risultato su tutti 35!

... Voi signori siete all'inizio della teoria. Ecco il lib:

GetSpreadsCount - restituisce il numero di spread possibili per lo spread di una lunghezza specificata (numero di simboli)

GetSpreadByIndex ( string Symbols, int SpreadLength, int SpreadIndex ) - restituisce lo spread per il suo indice (dove l'indice si trova nell'intervallo da 1 a GetSpreadsCount)

Passando attraverso il ciclo GetSpreadByIndex otterrete tutti i possibili spreads senza ripetizioni.

Per non farvi saltare la testa, la combinatoria degli spread è calcolata attraverso un sistema di numeri binari.

Buona fortuna...

File:
 

E ne ho fatto uno a forza bruta, non così bello, ma funziona...

struct smassiv2 {
   string m[];           // обертка для 2-х мерного массива
};

//+----------------------------------------------------------------------------------+
//| GetAllCombinationsSpread                                                         |
//| Функция находит все сочетания спредов                                            |
//| (in) instr[] - массив инструментов из которых составляем спред                   |
//| (in) ns - число инструментов в спреде                                            |
//| (in/out) spread[] - массив спредов                                               |
//| (out) - количество найденных спредов                                             |
//+----------------------------------------------------------------------------------+
int GetAllCombinationsSpread(string &instr[],int ns,smassiv2 &spread[]) {
   int i,j,g,k,ncomb,count,n[];
//+------------------------------------
   count=ArraySize(instr);
   ncomb=Combination(count,ns);
   ArrayResize(spread,ncomb);
   for(i=0;i<ncomb;i++) {
      ArrayResize(spread[i].m,ns);
   }
   ns=ArraySize(spread[0].m);
   ArrayResize(n,ns);
   ArrayInitialize(n,(count-1));
   for(i=1;i<ns;i++) {
      n[i]=n[i-1]-1;
   }
   for(i=0;i<ncomb;i++) {
      if(n[ns-1]<0) {
         k=1;
         for(j=(ns-2);j>=0;j--) {
            n[j]--;
            if(n[j]>=k) {
               for(g=(j+1);g<ns;g++) {
                  n[g]=n[g-1]-1;
               }
               break;
            }
            k++;
         }
      } 
      for(j=0;j<ns;j++) {
         spread[i].m[j]=instr[n[j]];
      }
      n[ns-1]--;
   }
   return(ncomb);
}
//+----------------------------------------------------------------------------------+
//+----------------------------------------------------------------------------------+
//| Combination(int m,int n)                                                         |
//| Функция находит количество сочетаний, составленные из m элементов по n элементов |
//| (in) m - число элементов всего                                                   |
//| (in) n - число элементов в сочетании                                             |
//| (out) - число комбинаций                                                         |
//+----------------------------------------------------------------------------------+
int Combination(int m,int n) {
//Print(__FUNCTION__);
   if(m<n) return(0);
   if((n==0)||(n==m))
      return(1);
   else
      return(Combination(m-1,n-1)+Combination(m-1,n));
}
//+----------------------------------------------------------------------------------+
 

Joker, dimmi meglio come scegli il giusto confine del canale, cioè il momento da cui monitorare gli spread

Ecco il mio ultimo scambio: