专家: DDE - Server - 页 4

 

能否获得 DLL 和 EXE 的源代码?我正在为 MT5 编写第一个 DLL(32 位和 64 位),这将是一个完美的项目

 
我无法工作,我收到错误信息 "2019.02.26 11:23:40.882 dde_example (ES,H1) Alert: Cannot find MT4.DDE.2 window!"

 
程序运行正常。但我不明白在哪里需要创建 excelsheet,还是自动生成?如果是自动生成,在哪里可以找到?

请帮助

谢谢、
 
Tom Sasson:

这篇文章已经很旧了,但仍有现实意义。

该工具非常出色,甚至可以用来整合 MT4 多个实例或多个 EA 的数据。

如果之前的任何问题仍然相关,请重新发布,我会回答。

MQL4 问题也是如此,因为我也可以帮助解决 MQL4 问题。

你好,汤姆、


我想将实时买入和卖出的 tick 数据导出 到 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")) 返回;

}


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

{

if(!AddItem("C", "D")) 返回;

}

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

如果(!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()

{

//--- 用 iMA 的当前值填充数组 MA[]

//--- 复制 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("TIME", "Value");

如果(!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()

{

//--- 用 iMA 的当前值填充数组 MA[]

//--- 复制 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");

如果(!CheckItem("TIME", "Value"))AddItem("TIME", "Value");

如果(!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 所做的这些操作?

还有一个问题,是否必须打开资产窗口才能从资产中提取信息?

 
我希望它能自动生成市场观察中所有符号 的买入价/卖出价。有人能帮忙吗?