Servicios. ¿Ya están en marcha? - página 14

 
Maxim Dmitrievsky:

Muchas plataformas tienen esta opción, por ejemplo. Es una práctica habitual utilizar un feed y operar con un broker diferente

el arbitraje no tiene nada que ver.

Por ejemplo, el otro proveedor tiene la profundidad del mercado, otros símbolos informativos (índices, futuros) y otras cosas.

Sí, estoy aprendiendo a tomar volúmenes con Ninja Trader 8. Lo he hecho rápido y mal, a través de archivos. Intentaré hacerlo a través de los servicios.

 
fxsaber:

Sin la DLL, no se puede "ampliar la GUI" del Terminal.

La comunicación a través del mapeo de la memoria, al mismo tiempo será bidireccional.

 
fxsaber:

Lo entiendo, es el sueño de un árbitro tener una API así. La única forma de resolver este problema es poner varios terminales en paralelo.

Se toma un terminal maestro y se utiliza el servicio para recoger datos de otros terminales abiertos. En total en el Terminal Principal tienes

EURUSD_Alpari.

EURUSD_Dukascopy

EURUSD_LMAX

----


En caso de que el Terminal Maestro esté en un CC lento, se puede escribir un Asesor Experto elemental que no vaya más allá de MQL. Todo el trabajo sucio lo hace el Servicio.

¿Cómo funciona? Dos palabras, por favor.

 
Реter Konow:

Puede ejecutar un sinfín de cálculos relacionados con el entorno del mercado en hilos separados en los servicios y tomar los resultados actuales de los procesos en el momento adecuado.

Búferes de anillo.

Es una pena, que a diferencia de los servicios de winndows de MT5 sean locales dentro del terminal...

 
Alexey Volchanskiy:

Sí, estoy aprendiendo a tomar volúmenes con Ninja Trader 8. Hice uno rápido y cursi, a través de archivos. Lo intentaré a través de los servicios.

NT es un proyecto muerto, en mi opinión.

 
Maxim Dmitrievsky:

NT es un proyecto muerto, en mi opinión.

Está vivo y crece

 
Alexey Volchanskiy:

¿Hay algún ejemplo de transferencia de datos sobre la marcha mediante recursos?

Una búsqueda debería encontrarlo.

Alexey Volchanskiy:

¿Cómo hacerlo? En pocas palabras.

FILE_COMMON o DLL.

 
Maxim Dmitrievsky:

NT es un proyecto muerto, en mi opinión.

Cuando digo eso, escribo más porque en primer lugar..., en segundo lugar .... etc. Pero es un pedo más en el vacío).

Aún así, es una versión completa de C#, .NET más bien reciente, como 4.5 o 4.6. Puedes escribir y depurar programas directamente en VS2017, ¿dice algo? Además de toda la potencia de las bibliotecas .NET. Y lo más importante para mí, el acceso a los volúmenes de los futuros. Pero no la Bolsa de Moscú, donde todo va por detrás de las fluctuaciones mundiales en decenas de minutos. Por cierto, también hay Mercado, aunque no lo he estudiado, es demasiado pronto.

 
fxsaber:

FILE_COMMON o DLL.

Ahh, pensaba que se había inventado algo nuevo en materia de servicios.

 
Alexey Volchanskiy:

Sigue siendo un C# completo, con una versión bastante reciente de .NET, como la 4.5 o la 4.6. Puedes escribir y depurar programas en VS2017, ¿eso dice algo?

¡Aquí tampoco estamos al tanto!

Reescribí el indicador Momentum de la entrega de MT5 en 10 minutos... Lo he vuelto a escribir... lo he copiado en VS2017 )))

Código fuente MQL5:

#import "tst_momentum.dll"
#import
..... текст оригинала индикатора Momentum.mql5

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   int StartCalcPosition;
   double pr[];
   ArrayCopy(pr,price);
   momentum::oncalculate(ExtMomentumPeriod,rates_total,prev_calculated,begin,pr,StartCalcPosition,ExtMomentumBuffer);
   if(begin>0) PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,StartCalcPosition+(ExtMomentumPeriod-1));
   return(rates_total);
  }

Fuente C#

namespace tst_momentum
{
    public class momentum
    {
        public static void oncalculate(int ExtMomentumPeriod,
                                int rates_total,
                                int prev_calculated,
                                int begin,
                                double[] price,
                                ref int StartCalcPosition,
                                ref double[] OUTArray)
        {
            StartCalcPosition = (ExtMomentumPeriod - 1) + begin;
            if (rates_total < StartCalcPosition) return;
            int pos = prev_calculated - 1;
            if (pos < StartCalcPosition) pos = begin + ExtMomentumPeriod;
            for (int i = pos; i < rates_total;  i++)
            {
                OUTArray[i] = price[i] * 100 / price[i - ExtMomentumPeriod];
            }
        }
    }
}

MQL5 hace la asignación de memoria, C# hace los cálculos

ZS: No sé cómo pasar precio[] a C#sin copiar - ¿alguna variante?