Cotizaciones del mercado de derivados en MT5 - página 10

 

¡¡¡Saludos Colegas, vamos a resumir el uso de COPY_TICKS_ALL o COPY_TICKS_TRADES!!!

Según tengo entendido por lo que he leído, para un cálculo más correcto de la delta es mejor utilizar los ticks por operaciones en lugar de todos ellos. ¿Verdad?

Cuál es la diferencia de utilizar uno u otro. ¿Cuál es el efecto sobre el resultado?

 
Mihail Marchukajtes #:

¡¡¡Saludos Colegas, resumamos el uso de COPY_TICKS_ALL o COPY_TICKS_TRADES!!!

Según tengo entendido por lo que he leído, para un cálculo más correcto de la delta es mejor utilizar los ticks por operaciones en lugar de todos ellos. ¿Verdad?

Cuál es la diferencia de utilizar uno u otro. ¿Cuál es el efecto sobre el resultado?

¿A qué delta se refiere?

 
Mihail Marchukajtes #:

¡¡¡Saludos Colegas, vamos a resumir el uso de COPY_TICKS_ALL o COPY_TICKS_TRADES!!!

Según tengo entendido por lo que he leído, para un cálculo más correcto de la delta es mejor utilizar los ticks por operaciones en lugar de todos ellos. ¿Verdad?

Cuál es la diferencia de utilizar uno u otro. ¿Cuál es el efecto sobre el resultado?

He visto un enlace a las capturas de pantalla de un miembro del foro en su perfil.

O bien ha tenido un error en sus cálculos o la fórmula de fijación de precios es incorrecta

No haga publicidad, solo mire las fotos como se ve

pero me parece que el precio debería llegar a Last con una precisión milimétrica, es decir, sin delta, si se calcula correctamente

los propios agentes de bolsa dicen que el precio se calcula cada segundo, al menos en MOEX

No creo en la utilidad de esos cálculos tan enormes, quise comprobarlo una vez, me pasaron por encima toda la copa, qué decir de Last...., me decepcioné y huí del intercambio
 
prostotrader #:

¿A qué delta se refiere?

Delta, la diferencia entre el número de compradores y vendedores de una barra determinada.

Aquí hay un trozo de código donde se realiza la petición de ticks y el cálculo de delta y volumen

   Linterest[0]=GlobalVariableGet("LLINTER");

   double delta=0;  
   double vola=0;
   int num= CopyTicksRange(Name_instrFS,tick_array,COPY_TICKS_TRADE,StartDate*1000,Start1Date*1000);
   //Print (num);
   if (num>0){
   long sumVolBuy=0;
   long sumVolSell=0;
       for (int q=0;q<num && !IsStopped();q++)
          { 
if(( tick_array[q].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY && (tick_array[q].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) // Если тик обоих направлений
      Print(__FUNCTION__,": ОШИБКА! Тик '""' неизвестного направления!");
   else if(( tick_array[q].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) // Если тик на покупку
   sumVolBuy+=(long)tick_array[q].volume;
   else if(( tick_array[q].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) // Если тик на продажу
   sumVolSell+=(long)tick_array[q].volume;
           
       if(( tick_array[q].flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME)   vola+=tick_array[q].volume_real; 
          }
    delta=double(sumVolBuy-sumVolSell); 
    if (Ldelta!=delta) Ldelta=delta; else delta=0;
  }
    for (int i=0;i<5 && !IsStopped();i++)
    { 
      h=FileOpen("OpenI\\"+Name_instr+"_OI.csv",FILE_WRITE|FILE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON|FILE_SHARE_READ,";");
       if(h!=INVALID_HANDLE)                                                         
       {  
         
         FileSeek(h,0,SEEK_END);
         FileWrite(h,RecDate,DoubleToString(Linterest[0],0),DoubleToString(delta,0),DoubleToString(vola,0)); 
         FileClose(h); 
         Sleep(100);
         FlagOFupdate[0]= true;
        break; 
       }
    } 

Originalmente era COPY_TICKS_ALL en CopyRang, pero lo cambié ayer a COPY_TICKS_TRADE. ¿Qué tan correcto sería esto en relación con el problema expresado anteriormente?

 
Mihail Marchukajtes #:

Delta, la diferencia entre el número de compradores y vendedores de una barra determinada.

Aquí hay un trozo de código en el que se solicitan los ticks y se calcula el delta y el volumen

Inicialmente era COPY_TICKS_ALL en CopyRang, pero ayer lo cambié a COPY_TICKS_TRADE. ¿Cuánto más correcto es esto en relación con el problema que expresé antes?

En su situación sólo debe tomar COPY_TICKS_TRADE porque sólo las operaciones tienen el parámetro de volumen de contrato.

Para utilizar los volúmenes de los contratos ASK y BID, hay que utilizar un vaso.

for (int i=0;i<5 && !IsStopped();i++)
    { 
      h=FileOpen("OpenI\\"+Name_instr+"_OI.csv",FILE_WRITE|FILE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON|FILE_SHARE_READ,";");
       if(h!=INVALID_HANDLE)                                                         
       {  
         
         FileSeek(h,0,SEEK_END);
         FileWrite(h,RecDate,DoubleToString(Linterest[0],0),DoubleToString(delta,0),DoubleToString(vola,0)); 
         FileClose(h); 
         Sleep(100);
         FlagOFupdate[0]= true;
        break; 
       }
    } 

Este es un código bastante triste.

En cada iteración se abre y se cierra el archivo.

 
prostotrader #:

En su situación sólo debe tomarse COPY_TICKS_TRADE, porque sólo las operaciones tienen el parámetro de volumen del contrato.

Para utilizar los volúmenes de los contratos ASK y BID, es necesario utilizar un vaso.

Este es un código bastante triste.

En cada iteración se abre y se cierra el archivo.

¡¡¡Si el primer intento tiene éxito, entonces no, pero los datos se escriben al principio del minuto para la barra anterior es bastante bueno para registrar OI, delta y volumen!!!
 
Mihail Marchukajtes #:
¡Si el primer intento tiene éxito, entonces no, pero los datos se escriben al principio del minuto para la barra anterior es bastante bueno para registrar OI, delta y volumen!

¿Puedes mostrarme una captura de pantalla?

 
Renat Akhtyamov #:

¿Puedo ver una captura de pantalla?

Sí, por favor....

Como ves, todo escribe bien, pero saber la diferencia de registrar todos los ticks o sólo el comercio no es posible. No quiero molestar. Al fin y al cabo, para el NS no son tan importantes las desviaciones y los errores insignificantes, lo principal es que después del entrenamiento no se hayan cambiado los datos porque durante la inicialización del EA con el NS debe calcular correctamente la historia hasta el momento actual para que el siguiente comience a calcular a partir de los parámetros actuales y correctos. Si la inicialización no se hizo correctamente, el valor actual de la última señal conocida será diferente y la nueva señal comenzará a calcularse desde otras posiciones, lo que llevará a resultados imprevisibles. Por lo tanto, no importa cómo se escriba, incluso con errores. ¡¡¡¡Lo principal es no cambiarlo después de la formación!!!!

 
Mihail Marchukajtes #:

Sí fácilmente....

Como ves, todo escribe bien, pero saber la diferencia de registrar todos los ticks o sólo el comercio no es posible. No quiero molestar. Al fin y al cabo, para los NS los desfases y errores insignificantes no son tan importantes, lo principal es que después del entrenamiento los datos no hayan sido cambiados porque durante la inicialización del EA con NS debe calcular la historia correctamente hasta el momento actual para que el siguiente comience el cálculo a partir de los parámetros actuales y correctos. Si la inicialización no se hizo correctamente, el valor actual de la última señal conocida será diferente y la nueva señal comenzará a calcularse desde otras posiciones, lo que llevará a resultados imprevisibles. Por lo tanto, no importa cómo se escriba, incluso con errores. ¡¡¡¡Lo principal es no cambiarlo después de la formación!!!!

Hay un límite en el número de líneas en Excel. Si la máquina tira, téngalo en cuenta. Es mejor usar sql. ¿Cuál es el resultado del cálculo de la captura de pantalla, cuál es el punto práctico?
 
Renat Akhtyamov #:
Hay un límite en el número de líneas en Excel. Si la máquina tira, tenlo en cuenta. Mejor sql. ¿Cuál es el resultado del cálculo de la captura de pantalla, cuál es el punto práctico?

Se escribe un archivo CWS ordinario.

Recopilación del historial de OI, delta y volumen respectivamente. Los datos que el 100% no se cambiarán en el historial, por no hablar de la ausencia de historial de OI como tal. El código para calcular los parámetros registrados que di anteriormente ....