在虚拟机中使用MT4? - 页 5 12345 新评论 zzuegg 2012.03.05 19:18 #41 DayTrader:是的,这本身就很好,但直到至少我的经纪人(最好是更多的经纪人)提供MT5,我甚至不会考虑重写我所有的代码。同时,我将通过W7/64的+4倍速度来完成工作,再加上跳过刻度的10倍,....,我们的速度增加 了约40 倍。 你的代码确实跳过了刻度线,但它跳过的方式可能会使重要的 信息丢失。 使用这样的代码。 bool SkipTick(){ static datetime curr=0; static double askHi=0; static double askLo=0; static double bidHi=0; static double bidLo=0; if(curr!=Time[0]){ curr=Time[0]; askHi=Ask; askLo=Ask; bidHi=Bid; bidLo=Bid; return (false); }else{ if(Ask>askHi || Ask<askLo){ askHi=MathMax(Ask,askHi); askLo=MathMin(Ask,askLo); return(false); } if(Bid>bidHi || Bid<bidLo){ bidHi=MathMax(Bid,bidHi); bidLo=MathMin(Bid,bidLo); return(false); } } return(true); } 在不丢失重要信息的情况下跳过刻度线。 所有条形图的打开,以及新的高点和新的低点都不会被跳过。 Pilot65 2012.03.05 20:32 #42 好主意! Ubzen 2012.03.05 21:01 #43 zzuegg:你的代码确实跳过了刻度,但它跳过的方式可能会使重要信息丢失。使用这样的代码。在不丢失重要信息的情况下跳过点位。所有条形图的开口以及新高和新低都不会被跳过。 我不知道这是否是一个等价物。默认情况下,它将使用最小的O-H-L-C或4-Ticks,这有助于加快回测的速度。 沿着这个思路,有没有人试过在M1数据导入过程中输入比如100的成交量?我的猜测是,如果它有效的话,这应该是Tick-Data的一个可行的替代品。我打算测试一下,但一直没有动手 :) William Roeder 2012.03.06 13:49 #44 zzuegg: 所有条形图的打开,以及新的高点和新的低点都不会被跳过。 另外,请参阅提高策略测试器的速度 - MQL4论坛 dabbler 2012.04.05 20:27 #45 我的经纪人现在已经在真实账户上启用了MT5,这使得它变得不那么学术。我昨晚写了我的第一个MQL5指标(显示点差),今天晚上我尝试着转换了本主题第一页中的速度测试EA。这里是... // MQL5 code const int SECONDSPERHOUR=3600; input int stops = 250; double lots= 0.0; //+-------------------------------------------------------------------------------------------+ int OnInit(){ lots = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); return(0); } //+-------------------------------------------------------------------------------------------+ void OnDeinit(const int reason){ } //+-------------------------------------------------------------------------------------------+ void OnTick(){ static long lastHour=0; datetime now= TimeCurrent(); long hourNow = SECONDSPERHOUR *(((long)now) / SECONDSPERHOUR); if( lastHour== hourNow ) return; lastHour= hourNow; MqlTick lastTick; SymbolInfoTick(_Symbol,lastTick); MqlTradeResult result={0}; MqlTradeRequest requestA={0}; requestA.action=TRADE_ACTION_DEAL; requestA.symbol= Symbol(); requestA.type = ORDER_TYPE_BUY; requestA.volume= lots; requestA.sl= NormalizeDouble( lastTick.ask - stops*_Point, _Digits ); requestA.tp= NormalizeDouble( lastTick.ask + stops*_Point, _Digits ); OrderSend(requestA,result); if( result.retcode != TRADE_RETCODE_DONE ) Print("BUY order failed: " + IntegerToString(result.retcode)); SymbolInfoTick(_Symbol,lastTick); MqlTradeRequest requestB={0}; requestB.action=TRADE_ACTION_DEAL; requestB.symbol= Symbol(); requestB.type = ORDER_TYPE_SELL; requestB.volume= lots; requestB.sl= NormalizeDouble( lastTick.bid + stops*_Point, _Digits ); requestB.tp= NormalizeDouble( lastTick.bid - stops*_Point, _Digits ); OrderSend(requestB,result); if( result.retcode != TRADE_RETCODE_DONE ) Print("SELL order failed: " + IntegerToString(result.retcode)); return; } 现在的想法是在策略测试器中 比较速度,做类似的交易。当然,我忘记了MQL5中最根本的变化。你不能进行对冲。事实上,从表面上看,你只能在每个符号上开一个头寸。这意味着用MAGIC_NUMBERS分隔的多策略,似乎是不可能的。 我的测试EA惨遭失败,因为它只是每小时进行一次交易,看看需要多长时间。这样做一个类似的比较是不可能的 :-( 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的,这本身就很好,但直到至少我的经纪人(最好是更多的经纪人)提供MT5,我甚至不会考虑重写我所有的代码。
同时,我将通过W7/64的+4倍速度来完成工作,再加上跳过刻度的10倍,....,我们的速度增加 了约40 倍。
你的代码确实跳过了刻度线,但它跳过的方式可能会使重要的 信息丢失。
使用这样的代码。
在不丢失重要信息的情况下跳过刻度线。
所有条形图的打开,以及新的高点和新的低点都不会被跳过。
你的代码确实跳过了刻度,但它跳过的方式可能会使重要信息丢失。
使用这样的代码。
在不丢失重要信息的情况下跳过点位。
所有条形图的开口以及新高和新低都不会被跳过。
我不知道这是否是一个等价物。默认情况下,它将使用最小的O-H-L-C或4-Ticks,这有助于加快回测的速度。
沿着这个思路,有没有人试过在M1数据导入过程中输入比如100的成交量?我的猜测是,如果它有效的话,这应该是Tick-Data的一个可行的替代品。我打算测试一下,但一直没有动手 :)
所有条形图的打开,以及新的高点和新的低点都不会被跳过。
我的经纪人现在已经在真实账户上启用了MT5,这使得它变得不那么学术。我昨晚写了我的第一个MQL5指标(显示点差),今天晚上我尝试着转换了本主题第一页中的速度测试EA。这里是...
现在的想法是在策略测试器中 比较速度,做类似的交易。当然,我忘记了MQL5中最根本的变化。你不能进行对冲。事实上,从表面上看,你只能在每个符号上开一个头寸。这意味着用MAGIC_NUMBERS分隔的多策略,似乎是不可能的。
我的测试EA惨遭失败,因为它只是每小时进行一次交易,看看需要多长时间。这样做一个类似的比较是不可能的 :-(