文章 "使用MetaTrader 5作为MetaTrader 4的信号提供者"

 

新文章 使用MetaTrader 5作为MetaTrader 4的信号提供者已发布:

分析并通过技术实例说明怎样在MetaTrader 5平台上做交易分析而在MetaTrader 4上做交易。本文将展示如何在您的MetaTrader 5上创建简单的信号提供者,并且把它连接到多个客户端,甚至包括运行MetaTrader 4的客户端。而且您也可以发现怎样在您的真实MetaTrader 4账户中跟随自动交易锦标赛的选手。

有很多理由都让我选择写下这篇文章以及研究它是否可行。

首先, MetaTrader 5已经发布了很长时间,但是我们还是在等待我们喜爱的交易经纪公司允许我们在真实交易中使用它。有些人使用MQL5创建交易策略并且有很好的成果,现在想在他们的真实帐户下运行,其他一些人可能希望人工交易,但是更喜欢MetaTrader 5中的交易组织方式而不是MetaTrader 4。

第二个原因,在自动交易锦标赛中,每个人都想过在他们的真实帐户中跟随比赛的领先者,一些人已经使用了他们自己的方法来跟随交易,但是其他一些人还在寻找方法来获得和锦标赛中交易者尽可能接近的结果,以及怎样应用资金管理等。

第三,一些人有很好的交易策略,他们希望信号不光给自己用,也给他们的朋友或者其他人使用,他们需要能接收多个连接,但是在实时条件下发布信号又不会降低效率。

以上这些问题困扰了我很久,我将寻找一个解决方案来处理这些需求。

交易

作者:Karlis Balcers

 

DealClient 的小更新:

- 如果打开多个订单并请求平仓,客户端将首先平仓获利订单;

- 增加了更好的错误处理功能,以解决因连接不良而无法打开订单的问题。添加了新函数,以检查是否需要重新传输:

//+------------------------------------------------------------------+
//| 检查再次尝试是否能解决问题 | //| 检查再次尝试是否能解决问题 | //| 检查再次尝试是否能解决问题 | //| 检查再次尝试是否能解决问题
//+------------------------------------------------------------------+
bool bCanRetryFixTheProblem(int error)
{
   switch(error)
   {
      case ERR_NO_ERROR:
      case ERR_NO_RESULT:
      case ERR_COMMON_ERROR:
      case ERR_SERVER_BUSY:
      case ERR_NO_CONNECTION:
      case ERR_TRADE_TIMEOUT:
      case ERR_INVALID_PRICE:
      case ERR_PRICE_CHANGED:
      case ERR_OFF_QUOTES:
      case ERR_BROKER_BUSY:
      case ERR_REQUOTE:
      case ERR_TOO_MANY_REQUESTS:
      case ERR_TRADE_CONTEXT_BUSY:
         return(true);
      default:
         return(false);
   }
}

/tsaktuo

附加的文件:
 

更新 DealClient 代码:tsaktuodealclient.mq4(见注释)

 

我遇到了 socketserver.dll 不是 64 位版本的错误。 你能提供吗?

 
939211:

干得漂亮!!我遇到了 socketserver.dll 不是 64 位版本的错误。 你能提供吗?

应该是这个。
附加的文件:
 
非常感谢你提供的代码和 dll。我正在尝试编写 mql4 的服务器部分。转换引号的代码片段让我无法工作,但我不会轻易放弃:)
 

我尽量不发送信号,但至少要给出价格。客户端在协议中显示收到一个带问号的字符串:

2011.12.28 16:34:54 客户端EURUSD,M15: Received(20):????????????????8???

如何修复这个错误?我发送的字符串是<EURUSD;1.30675;1.30667>

 

你好、

我正在运行服务器 EA 和客户端脚本,它们正在相互通信,但我在 MT4 日志中发现以下类型的错误,需要帮助修复。

MT5 (Build 597) log:
2012.03.08 01:17:55 TsaktuoDealServer(EURUSD,H1) DEAL:<955492;EURUSD;SELL;IN;0.01;1.31080>


MT4 (Build 409) log:
2012.03.08 01:17:55 TsaktuoDealClient EURUSD,H1: Invalid order received: "4444EEEESSSSEEEEIIII....11110000"

有什么想法?

 

已将 MT4 更新至 416 版,但没有任何变化。

另外,我在 MT4 中编译脚本时得到的结果是这样的

编译 'TsaktuoDealClient.mq4'...
函数 "struct2int "未被引用,将从 exp-file 中删除
函数 "str2struct "未被引用,将从 exp-file 中删除
函数 "htonl "未被引用,将从 exp-file 中删除
函数 "ntohl" 未被引用,将从 exp-file 中移除
函数 "ntohs" 未被引用,将从 exp-file 中移除
0 个错误,5 个警告

有人知道发生了什么吗?

 
例如,mt5 是EURUSD,mt4 是 EURUSDm。
 

我用了一个星期,出现了两次错误,所以我放弃了。