Мы используем данные из (trader work station TWS), поскольку существует множество инструментов недоступны в МТ4. Котировок записываются на 5секундных и 5 минутных интервалов в базе данных. Мы хотим, чтобы анализировать данные в МТ4 в реальном времени.
1. Как импортировать данные в MetaTrader 4?
2. Мы постарались представить данные в MT4 по графику офлаин HST (исторических) фаилов. Так график действительно зарежаються, но не обновляються текущо после добавления новых данных в них через скрипт или индикатор, закрепленным на этом графике, который постоянно дополняеть файла HST.
1. Если делать в Real Time, то ничего не получится, так как Вы хотите подменить собой сервер MT4, формат передачи данных от которого для клиентского места неизвестен, да и трудозатраты явно не окупятся
2. Через hst наверное единственный работающий вариант перенести данные в MT4, но в off-line.
У TWS есть API, а у IB FIX протокол, зачем Вам еще что-то ?
А связка TWS->API->MT4->API->TWS несет в себе больше потенциальных ошибок, чем пользы.
Мое решение через через hst script
//+------------------------------------------------------------------+
//| UpdateOfflineChart.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "https://www.metaquotes.net/"
#include <WinUser32.mqh>
extern string _Symbol = "GBPUSD";
extern int _Period = 1;
extern int _Digits = 4;
extern int _Sleep = 50;
int iFile, iWindow, iMessage;
datetime dtLast = D'2004.01.01 00:00';
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
int version=400;
string c_copyright;
string c_symbol=Symbol();
int i_period=_Period;
int i_digits=_Digits;
int i_unused[13];
//---- indicators
Print(Symbol() + Period() + ".hst" + " iFile " + iFile);
iFile = FileOpenHistory(Symbol() + Period() + ".hst", FILE_BIN/* | FILE_READ*/ | FILE_WRITE);
Print(Symbol() + Period() + ".hst" + " iFile " + iFile);
if (iFile < 0) return(-1);
c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
FileWriteInteger(iFile, version, LONG_VALUE);
FileWriteString(iFile, c_copyright, 64);
FileWriteString(iFile, c_symbol, 12);
FileWriteInteger(iFile, i_period, LONG_VALUE);
FileWriteInteger(iFile, i_digits, LONG_VALUE);
FileWriteInteger(iFile, 0, LONG_VALUE); //timesign
FileWriteInteger(iFile, 0, LONG_VALUE); //last_sync
FileWriteArray(iFile, i_unused, 0, 13);
FileSeek(iFile, 0, SEEK_END);
while(true)
{
//Print(TimeCurrent() + " " + TimeToStr(dtLast) + " " + TimeToStr(iTime(_Symbol, PERIOD_M1, 1)));
if(TimeCurrent() > dtLast + 60)//iTime(_Symbol, PERIOD_M1, 1)
{
Print("c " + TimeToStr(TimeCurrent()) + " |;l " + TimeToStr(dtLast) + " |;t " + TimeToStr(iTime(_Symbol, PERIOD_M1, 1)) + " | " + iOpen(_Symbol, PERIOD_M1, 1) + " " + iOpen(_Symbol, PERIOD_M1, 1) + " " + iLow(_Symbol, PERIOD_M1, 1) + " " + iHigh(_Symbol, PERIOD_M1, 1) + " " + iClose(_Symbol, PERIOD_M1, 1));
dtLast = TimeCurrent();
FileWriteInteger(iFile, (iTime(_Symbol, PERIOD_M1, 1) / (_Period * 60)) * (_Period * 60), LONG_VALUE);
FileWriteDouble(iFile, iOpen(_Symbol, PERIOD_M1, 1), DOUBLE_VALUE);
FileWriteDouble(iFile, iLow(_Symbol, PERIOD_M1, 1), DOUBLE_VALUE);
FileWriteDouble(iFile, iHigh(_Symbol, PERIOD_M1, 1), DOUBLE_VALUE);
FileWriteDouble(iFile, iClose(_Symbol, PERIOD_M1, 1), DOUBLE_VALUE);
FileWriteDouble(iFile, iVolume(_Symbol, PERIOD_M1, 1), DOUBLE_VALUE);
FileFlush(iFile);
UpdateChartWindow();
}
Sleep(_Sleep);
}
//----
return(0);
}
//+------------------------------------------------------------------+
int UpdateChartWindow() {
if (iWindow == 0) iWindow = WindowHandle(Symbol(), Period());
if (iWindow != 0) {
if (IsDllsAllowed() == FALSE) {
Alert("Please allow DLL calls!");
return (-1);
}
if (PostMessageA(iWindow, WM_COMMAND, 33324, 0) == 0) iWindow = 0;
return (0);
}
return (-1);
}
Попробуйте альтернативное решение. Там и MQL4-код работать будет.
Амиброкер с ТВС через родной плагин хорошо работает.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Мы используем данные из (trader work station TWS), поскольку существует множество инструментов недоступны в МТ4. Котировок записываются на 5секундных и 5 минутных интервалов в базе данных. Мы хотим, чтобы анализировать данные в МТ4 в реальном времени.
1. Как импортировать данные в MetaTrader 4?
2. Мы постарались представить данные в MT4 по графику офлаин HST (исторических) фаилов. Так график действительно зарежаються, но не обновляються текущо после добавления новых данных в них через скрипт или индикатор, закрепленным на этом графике, который постоянно дополняеть файла HST.