Services. Sont-ils déjà opérationnels ? - page 14

 
Maxim Dmitrievsky:

de nombreuses plateformes disposent de cette option, par exemple. Il est courant d'utiliser un flux et de négocier avec un autre courtier.

L'arbitrage n'a rien à voir avec cela.

Par exemple, l'autre fournisseur dispose de la profondeur du marché, d'autres symboles d'information (indices, contrats à terme) et d'autres éléments intéressants.

Oui, j'apprends à prendre des volumes avec Ninja Trader 8. Je l'ai fait rapidement et mal, par le biais de fichiers. Je vais essayer de le faire par le biais des services.

 
fxsaber:

Sans la DLL, vous ne pouvez pas "étendre l'interface graphique" du terminal.

La communication via la cartographie de la mémoire sera en même temps bidirectionnelle.

 
fxsaber:

Je comprends, le rêve d'un arbitre est une API similaire. La seule façon de résoudre ce problème est de mettre plusieurs bornes en parallèle.

Vous prenez un terminal maître et utilisez le service pour collecter les données d'autres terminaux ouverts. Au total, sur le terminal maître, vous avez

EURUSD_Alpari.

EURUSD_Dukascopy

EURUSD_LMAX

----


Dans le cas où le terminal maître est sur un DC lent, un Expert Advisor élémentaire peut être écrit qui ne va pas au-delà de MQL. Tout le sale boulot est fait par le Service.

Comment cela fonctionne-t-il ? Deux mots, s'il vous plaît.

 
Реter Konow:

Un processus défini par l'utilisateur dans le terminal auquel chaque EA peut accéder. Vous pouvez exécuter des calculs sans fin liés à l'environnement du marché dans des threads séparés dans les services et prendre les résultats actuels des processus au bon moment.

Tampons d'anneau.

Il est dommage que, contrairement à winndows, les services de MT5 soient locaux dans le terminal...

 
Alexey Volchanskiy:

Oui, j'apprends à prendre des volumes avec Ninja Trader 8. J'en ai fait une rapide et ringarde, à travers des fichiers. Je vais essayer par les services.

NT est un projet mort, à mon avis.

 
Maxim Dmitrievsky:

NT est un projet mort, à mon avis.

Il est vivant et se développe

 
Alexey Volchanskiy:

Existe-t-il un exemple de transfert de données à la volée via des ressources ?

Une recherche devrait permettre de le trouver.

Alexey Volchanskiy:

Comment faire ? En un mot.

FILE_COMMON ou DLL.

 
Maxim Dmitrievsky:

NT est un projet mort, à mon avis.

Quand je dis cela, j'écris plus loin parce que premièrement..., deuxièmement ..... etc. Mais c'est juste un autre pet dans le vide).

Il s'agit tout de même d'un C# à part entière, d'une version plutôt récente de .NET, comme 4.5 ou 4.6. Vous pouvez écrire et déboguer des programmes directement dans VS2017, est-ce que ça dit quelque chose ? Et toute la puissance des bibliothèques .NET. Et le plus important pour moi, l'accès aux volumes sur les contrats à terme. Mais pas la Bourse de Moscou, où tout est en retard de plusieurs dizaines de minutes sur les fluctuations mondiales. Au fait, il y a aussi le marché, mais je ne l'ai pas étudié, il est trop tôt.

 
fxsaber:

FILE_COMMON ou DLL.

Ahh, je pensais que quelque chose de nouveau avait été inventé en termes de services.

 
Alexey Volchanskiy:

Il s'agit toujours de C# à part entière, avec une version assez récente de .NET, comme 4.5 ou 4.6. Vous pouvez écrire et déboguer des programmes dans VS2017, cela dit-il quelque chose ?

Nous ne sommes pas dans le coup ici non plus !

J'ai réécrit l'indicateur Momentum à partir de la livraison de MT5 en 10 minutes... Je l'ai réécrit... et copié sur VS2017 ;))

Code source 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);
  }

Source 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 s'occupe de l'allocation de la mémoire, C# des calculs.

ZS : Je ne sais pas comment passer price[] à C#sans copier - des variantes ?