Сервисы. Уже работают? - страница 14

 
Maxim Dmitrievsky:

во многих платформах есть такая возможность, например. Частая практика когда используется один информационный фид, а торговля ведется у другого брокера

арбитраж тут никаким боком

например, у другого поставщика есть глубина рынка, другие нужные информационные символы (индексы, фьючи) и другие плюшки

Угу, я с Ninja Trader 8 объемы учусь брать. Делал по быстрому и убого, через файлы. Попробую через сервисы.

 
fxsaber:

Без DLL "расширить GUI" Терминала нельзя.

Связь через Memory Mapping, заодно будет двусторонняя.

 
fxsaber:

Понимаю, мечта арбитражника - подобный API. Тут только параллельным запуском нескольких Терминалов вопрос решается.

Берете Мастер-Терминал и через Сервис в нем собираете данные с остальных открытых Терминалов. Итого в Мастер Терминале имеете

EURUSD_Alpari.

EURUSD_Dukascopy

EURUSD_LMAX

----


И если Мастер-Терминал на тормозном ДЦ, то пишется элементарный советник, не выходящий за рамки MQL. Всю грязную работу делает Сервис.

Каким образом? В двух словах плз.

 
Реter Konow:

Пользовательский процесс в Терминале, к которому каждый советник может получить доступ.  Можно запустить бесконечные вычисления связанные с рыночным окружением в отдельные потоки в сервисах и в нужное время брать из процессов текущие результаты.

Кольцевые буферы.

Жаль, что в отличии от виндовых, сервисы МТ5 локальны в пределах терминала...

 
Alexey Volchanskiy:

Угу, я с Ninja Trader 8 объемы учусь брать. Делал по быстрому и убого, через файлы. Попробую через сервисы.

NT мертвый проект, имхо

 
Maxim Dmitrievsky:

NT мертвый проект, имхо

Живее всех живых и развивается 

 
Alexey Volchanskiy:

А есть примерчик передачи данных на лету через ресурсы?

Поиском должен найтись.

Alexey Volchanskiy:

Каким образом? В двух словах плз.

FILE_COMMON или DLL.

 
Maxim Dmitrievsky:

NT мертвый проект, имхо

Я когда такое заявляю, то пишу дальше, потому что во первых ..., во вротых ... и т.д. А так это очередной пук в вакуум )

Там все же полноценный C#, .NET довольно свежей версии, вроде 4.5 или 4.6. Проги можно прямо в VS2017 писать и отлаживать, это хоть что-то говорит? Плюс вся мощь библиотек .NET. И главное для меня, доступ к объемам на фьючах. Но не Московской биржи, где все отстает от мировых колебаний на десятки минут. Кстати, и Маркет есть, правда, не изучал, рано еще.

 
fxsaber:

FILE_COMMON или DLL.

А-а, я думал что-то новое изобрели в плане сервисов.

 
Alexey Volchanskiy:

Там все же полноценный C#, .NET довольно свежей версии, вроде 4.5 или 4.6. Проги можно прямо в VS2017 писать и отлаживать, это хоть что-то говорит?

мы тут тоже не лыком шиты!

вот переписал в течении 10 минут индикатор Momentum из поставки MT5... ну как переписал...скопипастил в VS2017 )))

исходник 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);
  }

исходник 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, расчетами занимается C#

ЗЫ: не знаю пока как передать в C# цены price[] без копирования - есть варианты?