Советники: DDE - Server - страница 4

 

Можно ли получить исходный код DLL и EXE? Я пишу свои первые DLL для MT5 (32bit и 64bit), и это был бы идеальный проект.

 
У меня не работает выдает ошибку "2019.02.26 11:23:40.882 dde_example (ES,H1) Alert: Cannot find MT4.DDE.2 window!"

 
Программа работает нормально... Но я не понимаю, где мне нужно создать excelsheet... или он генерируется автоматически? Если он генерируется автоматически, то где я могу найти его?

Пожалуйста, помогите

Спасибо,
 
Tom Sasson:

Это сообщение довольно старое, но по-прежнему актуальное.

Это потрясающий инструмент, который можно использовать для интеграции данных даже из нескольких экземпляров MT4 или нескольких советников.

Если какой-либо из предыдущих вопросов все еще актуален, пожалуйста, опубликуйте его повторно, и я отвечу.

То же самое касается вопросов по MQL4, так как я могу помочь и с MQL4.

Здравствуйте, Том,


Я хотел бы экспортировать данные о покупках и продажах в реальном времени в excell, возможно ли это с помощью этого инструмента?

Спасибо

 

Буэнас.


Я пытаюсь получить LAST, но он всегда остается пустым.


Есть ли у кого-нибудь идеи, что не так?




CopyBuffer(MA_handle,0,0,100,MA);

ArraySetAsSeries(MA,true);

double LAST = SymbolInfoDouble("USDBRL", SYMBOL_LAST);


// Проверка и добавление элементов DDE

if(!CheckItem("A", "B"))

{

if(!AddItem("A", "B")) return;

}


if(!CheckItem("C", "D"))

{

{ if(!AddItem("C", "D")) return;

}

if(!CheckItem("COMPANY", "Value")) AddItem("КОМПАНИЯ", "Значение");

if(!CheckItem("TIME", "Value")) AddItem("TIME", "Value");

if(!CheckItem("LAST", "EURUSD")) AddItem("LAST", "USDBRL");

// Установка значения элемента DDE

SetItem("COMPANY", "Value",(string)AccountInfoString(ACCOUNT_COMPANY));

SetItem("TIME", "Value",(string)TimeCurrent());


SetItem("A", "B", "EMA(21): "+DoubleToString(MA[0],6));


SetItem("C", "D", "LAST: "+DoubleToString(LAST,5));

}

 

Добрый вечер.


После долгих проволочек мне удалось решить эту проблему. Я зарегистрировался на сайте только для этого.

Измените всю функцию OnTimer():

void OnTimer()

{

//--- Заполнение массива MA[] текущими значениями iMA

//--- Копирование 100 элементов

// CopyBuffer(MA_handle,0,0,100,MA);

//- ArraySetAsSeries(MA,true);

double EURUSD_ASK = SymbolInfoDouble("EURUSD",SYMBOL_ASK); // для eurusd (пример)

double EURUSD_BID = SymbolInfoDouble("EURUSD",SYMBOL_BID);

double USDCHF_ASK = SymbolInfoDouble("USDCHF",SYMBOL_ASK);

double USDCHF_BID = SymbolInfoDouble("USDCHF",SYMBOL_BID);

// Проверка и добавление элемента DDE

// if(!CheckItem("EMA", "B"))

// {

// if(!AddItem("EMA", "B")) return;

// }


if(!CheckItem("COMPANY", "Value")) AddItem("COMPANY", "Value");

if(!CheckItem("TIME", "Value")) AddItem("ВРЕМЯ", "Значение");

if(!CheckItem("EURUSD", "ASK")) AddItem("EURUSD", "ASK");

if(!CheckItem("EURUSD", "BID")) AddItem("EURUSD", "BID");

if(!CheckItem("USDCHF", "ASK")) AddItem("USDCHF", "ASK");

if(!CheckItem("USDCHF", "BID")) AddItem("USDCHF", "BID");

// Установка значения элемента DDE

SetItem("COMPANY", "Value",(string)AccountInfoString(ACCOUNT_COMPANY));

SetItem("TIME", "Value",(string)TimeCurrent());


// SetItem("EMA", "B", "EMA(21): "+DoubleToString(MA[0],6));

SetItem("EURUSD", "ASK",DoubleToString(EURUSD_ASK,5));

SetItem("EURUSD", "BID",DoubleToString(EURUSD_BID,5));

SetItem("USDCHF", "ASK",DoubleToString(USDCHF_ASK,5));

SetItem("USDCHF", "BID",DoubleToString(USDCHF_BID,5));

}

Остальные действия аналогичны описанным выше.


Надеюсь, это кому-нибудь поможет.

 
Mikhail Shikin:
У меня не работает выдает ошибку "2019.02.26 11:23:40.882 dde_example (ES,H1) Alert: Cannot find MT4.DDE.2 window!"

Ты забыл запустить DDE Server.exe

 
MARFE:

Привет, Том,


Я хотел бы экспортировать данные о покупках и продажах в реальном времени в excell, возможно ли это с помощью этого инструмента?

Спасибо

Извините за поздний ответ, это, конечно, возможно.

Я сказал "было", потому что я не использовал этот инструмент уже 3 года и не пробовал на Windows 10, так что вы можете поэкспериментировать и сообщить о результатах.

 
maurorechi:

Добрый вечер.


После долгих проволочек мне удалось решить эту проблему. Я зарегистрировался на сайте только для этого.

Измените всю функцию OnTimer():

void OnTimer()

{

//--- заполнение массива MA[] текущими значениями iMA

//--- Копирование 100 элементов

// CopyBuffer(MA_handle,0,0,100,MA);

// ArraySetAsSeries(MA,true);

double EURUSD_ASK = SymbolInfoDouble("EURUSD",SYMBOL_ASK); // для eurusd (пример)

double EURUSD_BID = SymbolInfoDouble("EURUSD",SYMBOL_BID);

double USDCHF_ASK = SymbolInfoDouble("USDCHF",SYMBOL_ASK);

double USDCHF_BID = SymbolInfoDouble("USDCHF",SYMBOL_BID);

// Проверка и добавление элемента DDE

// if(!CheckItem("EMA", "B"))

// {

// if(!AddItem("EMA", "B")) return;

// }


if(!CheckItem("COMPANY", "Value")) AddItem("КОМПАНИЯ", "Значение");

if(!CheckItem("TIME", "Value")) AddItem("TIME", "Value");

if(!CheckItem("EURUSD", "ASK")) AddItem("EURUSD", "ASK");

if(!CheckItem("EURUSD", "BID")) AddItem("EURUSD", "BID");

if(!CheckItem("USDCHF", "ASK")) AddItem("USDCHF", "ASK");

if(!CheckItem("USDCHF", "BID")) AddItem("USDCHF", "BID");

// Установка значения элемента DDE

SetItem("COMPANY", "Value",(string)AccountInfoString(ACCOUNT_COMPANY));

SetItem("TIME", "Value",(string)TimeCurrent());


// SetItem("EMA", "B", "EMA(21): "+DoubleToString(MA[0],6));

SetItem("EURUSD", "ASK",DoubleToString(EURUSD_ASK,5));

SetItem("EURUSD", "BID",DoubleToString(EURUSD_BID,5));

SetItem("USDCHF", "ASK",DoubleToString(USDCHF_ASK,5));

SetItem("USDCHF", "BID",DoubleToString(USDCHF_BID,5));

}

Остальные действия аналогичны описанным выше.


Надеюсь, это кому-нибудь поможет.

Спасибо Maurorechi,


но нужно ли делать эти строки, которые вы сделали для EURUSD, для каждого актива?

И еще один вопрос, должно ли быть открыто окно актива, чтобы извлекать информацию из актива?

 
Я хотел бы, чтобы он мог автоматически генерировать значения спроса/предложения для всех символов в market watch. Кто-нибудь может помочь?