MT4是否能够测试多个货币对? 是否有现成的插件? 如果要实现上面的方法: 1. 增加一个DLL提供给多个MT TESTER终端通讯。 2. 使用reportmanager.exe 组合测试报告。 请大家去讨论一下实现的可行性?
另一个的解决方法是采用MYSQL的方法 大家没有反应。只好自己回一下。 "1. 增加一个DLL提供给多个MT TESTER终端通讯。" 如果测试EURUSD和GBPUSD的资产组合,在EURUSD TESTER需要获得GBPUSD TESTER的数据(同理,在GBPUSD TESTER需要获得EURUSDTESTER的数据)。利用DLLSERVER来实现他们间的通讯有一定的困难。 -----另一个的解决方法是采用MYSQL的方法。这样可以预先把数据导入mysql,然后通过SQL查询访问数据。请参考http://www.forexforums.org/mt4-tools-utilities/249-metatrader-data-mysql.html
另一个的解决方法是采用SQLServer的方法 -----另一个的解决方法是采用SQLServer的方法。 Integrating MetaTrader 4 Client Terminal with MS SQL Server http://articles.mql4.com/640
实现流程 系统框图如上。下面的例子是在EURUSD和GBPUSD随机指标同时小于25,EURUSD做多,在EURUSD和GBPUSD随机指标同时大于75,EURUSD做空。用定义#define Portfolio true 来做模拟测试。当#define Portfolio false时可以用做实际交易。另外通过调用DLL 实现GBPUSD 的iStochastic (Portfolio_iStochastic)函数的实现(因为在MT4 Tester1 只做EURUSD的测试,没有GBPUSD的数据,所以在MT4 Tester1上是没有办法获得GBPUSD 的iStochastic的数值)。这时候可以同时启动安装在另外一个地方的MT4 Tester2,让其测试GBPUSD的数据。从程序代码可以看出,只有启动MultiSybolTester应用程序后,MT4 Tester1和MT4 Tester2 才会开始工作。MT4 Tester2从SQLServerDLL获得MT4 Tester1 通过Portfolio_iStochastic传给SQLSERVERDLL的参数,算出GBPUSD iStochastic函数数值. 有点复杂,不知道大家是否有更好的方法。至于为什么要用SQLSEVER, 先卖个关子。 各个应用程序大概流程如下: 1)MT4 Tester1(EURUSD): #define Portfolio true #import "PortfolioMSSQL.dll" string Stoc() { string myOrderType="No direction"; double EURUSDStocMainCurr=iStochastic(“EURUSD”,StocMTF,K,D,Slowing,Stoch_mode,Stoch_price,MODE_MAIN,0); if(Portfolio==false) double GBPUSDStocMainCurr=iStochastic(“GBPUSD”,StocMTF,K,D,Slowing,Stoch_mode,Stoch_price,MODE_MAIN,0); else double GBPUSDStocMainCurr=Portfolio_iStochastic(“GBPUSD”,StocMTF,K,D,Slowing,Stoch_mode,Stoch_price,MODE_MAIN,0); if(EURUSDStocMainCurr<25&&GBPUSDStocMainCurr<25) {myOrderType="Buy Only";} if(EURUSDStocMainCurr>75&&GBPUSDStocMainCurr>75) {myOrderType="Sell Only";} return(myOrderType); } int start() { if(Portfolio ==true) { if(StopSyn()==true)return(1); } string myOrderType=Stoc(); if(myOrderType=="Buy Only") OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp,"Sell",Magic,0,Red); if(myOrderType=="Sell Only") OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp,"Buy",Magic,0,Red); } 2) PortfolioMSSQL.dll: Portfolio_iStochastic() { SEND 参数和函数名--》SOLSERVER, 记录当前时间ct STOP MT4 Tester1 AND MT4 Tester2 FOR compute } GetPortfolio_iStochastic() { GET 参数和函数名<<---SOLSERVER } static bStopSyn=false; bool StopSyn() { return bStopSyn; } void SetStopSyn(bool ft) { bStopSyn=true; } 3)MT4 Tester2(GBPUSD): #import "PortfolioMSSQL.dll" int start() { if(StopSyn()==true)return (1); GetPortfolio_iStochastic(...); GBPUSDStocMainCurr=Portfolio_iStochastic(“GBPUSD”,StocMTF,K,D,Slowing,Stoch_mode,Stoch_price,MODE_MAIN,0); } 4)MultiSybolTester: void main() { SetStopSyn(false);// 等MT4 Tester1和MT4 Tester2先启动,处于等待状态,这时候set false才让他们开始工作。 while(true) { 这里可以设定事件,控制 等MT4 Tester1和MT4 Tester2保持同步状态,老让MT4 Tester1调用MT4 Tester2的数据。 } getchar();//(用GUI界面控制,跟MT4 Tester1和MT4 Tester2沟通更好。) }