No el Grial, sólo uno normal - ¡¡¡Bablokos!!! - página 236

 
sbmill:

Entender correctamente la construcción de 8 diferenciales de 4 pares

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

Y así, disponer de 35 combinaciones de 7 por 4

No, me refería al número teórico de variantes para una búsqueda de direcciones. En la práctica es un poco diferente,de 7 a 4 = 105 y si el métodomatemáticono depende deun orden de ajuste de FI de entrada- de tres: EGAN, EAGN, ENGA es posible tomar cualquiera. El resultado en todos 35!
Archivos adjuntos:
 
 

Hola a todos.

Joker, ¿puedo hacerte una pregunta general?

¿Seleccionas primero los instrumentos y los utilizas para construir y analizar el spread y su equidad (creo que utilizaste esta variante) o construyes muchos spreads y luego analizas su equidad, y los aptos entran a trabajar?

 
Talex:

¿Seleccionas primero un instrumento y lo utilizas para construir y analizar el spread y su equidad (creo que estás utilizando esta opción) o construyes muchos spreads y luego analizas su equidad, para luego utilizar los adecuados en tu trabajo?

¿Cuál es la diferencia entre estos métodos?
 
lob32371:
¿Cuál es la diferencia entre estos métodos?

En el primer caso, el diferencial se compone de instrumentos con condiciones "requeridas", mientras que en el segundo, esto no se comprueba, sino que sólo se comprueban las "características" del propio diferencial.

 
Talex:

Hola a todos.

Joker, ¿puedo hacerte una pregunta general?

¿Seleccionas primero un instrumento y lo utilizas para construir y analizar el spread y su equidad (creo que utilizaste esta variante) o construyes muchos spreads y luego analizas su equidad, y los adecuados los utilizas en tu trabajo?


Se construyen numerosos diferenciales y se analiza todo el conjunto. Se utilizan los mejores del sistema.


Un par de comentarios a la imagen:

Todos los diferenciales después del racionamiento se colocarán en un medio plano (positivo). Los que se normalizan en la zona negativa se invierten:

El punto en el que los diferenciales comienzan a moverse es el mismo para todos ( es decir, cero ). Por mucho que intente conseguir diferenciales neutros para el mercado, no lo conseguirá. El mercado siempre está en movimiento. Los spreads sólo permiten eliminar las fluctuaciones imprevisibles del mercado y disminuir la caída de las operaciones.

I - La altura del centro del canal de normalización con respecto a cero caracteriza la potencia del movimiento de la dispersión (las dispersiones más débiles se descartan). Queremos ganar, no fumar bambú durante meses, ¿no? ))

II - la anchura del canal de dispersión normalizado describe la fuerza de cointegración de los instrumentos (estrecha - fuertemente cointegrada, amplia - poco cointegrada). Los cointegrados débiles se rechazan naturalmente (los paseos aleatorios no son para nosotros).

III - zona de toma de decisiones (no voy a contarlo intencionadamente).


Te he dicho y mostrado todo lo posible.

(Por cierto, he promovido el sistema de Alejandro, pero no lo utilizaré en ningún caso. Trabaja dentro del canal y es una bomba... )

Quien tenga preguntas teóricas, por favor, estudie primero la enorme contribución a la teoría del Sr. hrenfx, concretamente sus logros en recycle2


Ve a por ello...

 

Joker, gracias por la respuesta.

P.D. Realmente hay mucho expuesto en el hilo, sólo queda pensar/verificar/comprenderlo por uno mismo, creo que sólo el perezoso no encontrará algo para sí mismo aquí.

 
kot287:
No, me refería a una cantidad teórica de variantes para la enumeración de direcciones. En la práctica es un poco diferente, en4 de 7 = 105 y si el métodomatemáticono depende deun orden de definición de FI de entrada- cualquiera de tres: EGAN, EAGN, ENGA se puede tomar de cualquier. El resultado en todos 35!

... Ustedes, señores, están en el principio de la teoría. Toma la libra:

GetSpreadsCount - devuelve el número de posibles spreads para el spread de una longitud especificada ( número de símbolos )

GetSpreadByIndex ( string Symbols, int SpreadLength, int SpreadIndex ) - devuelve el spread por su índice ( donde el índice se encuentra en el rango de 1 a GetSpreadsCount )

Pasando por el bucle GetSpreadByIndex, obtendrá todos los spreads posibles sin repeticiones.

Para que no te quedes con la boca abierta, la combinatoria de los diferenciales se calcula mediante un sistema numérico binario.

Buena suerte...

Archivos adjuntos:
 

Y yo hice uno de fuerza bruta, no tan bonito, pero funciona...

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, cuéntame mejor cómo eliges el borde correcto del canal, es decir, el momento a partir del cual controlar los diferenciales

Aquí está mi última operación: