现成专家与编程/自由职业者的优势。
Push.Mail. 在 MetaTrader 中使用电子邮件和通知

描述
剥头皮交易 是赚取资金时最具挑战性、风险性同时又迅速的方法之一。然而,进行交易后并不保证您能获得利润。
基于tick数据率的策略 可能是讨论最多的盈利系统之一。然而,有一些细微差别需要考虑。
进入终端的报价包含不同数量的数据。
即使您安装了来自同一公司的两个相同的终端并同时启动它们(这不现实),您也无法获得100%准确的结果。
此外,同时启动您的剥头皮交易系统也不会产生完全同步的结果。
两个终端上的交易可能会有所不同。
这种差异仅取决于服务器到您的终端的数据传输流。
在其他论坛中,关于我的系统 TickSniper for MT4 和 TickSniper for MT5 的讨论中经常有一个问题:为什么MT4和MT5上的持仓和利润不同?
答案很简单:报价的差异。MT4终端的报价流较慢,可能是由于流量拥堵。
在MetaTrader 5终端中,报价流快了十倍,导致持仓之间存在显著差异。
为本文特别开发了两个专家顾问:TEST TICK for MT5 和 TEST TICK for MT4。它们的代码完全相同(当然,编程语言不同,因此函数名称有所不同)。
MT4的代码:
#property copyright "Copyright 2024, expforex" #property link "" int timestart = 0; int ticknumber = 0; // Tick number double PriceBID = 0; // BID tick price double PriceASK = 0; // ASK tick price int TimemsTick = 0; // Tick time in ms int init() { timestart = Time[0]; // Start counting from a new bar so that all EAs on all terminals start the same way. return(0); } // The advisor starts with each tick int start() { if(timestart != Time[0]) { if(TimemsTick == 0) TimemsTick = GetTickCount(); ticknumber++; PriceBID = Bid; PriceASK = Ask; Comment("\n\n\n\n Tick Number = " + ticknumber + "\nPriceBID = " + PriceBID + "\nPriceASK = " + PriceASK + "\nTimeTickinms = " + (GetTickCount() - TimemsTick)); Print("Tick Number = " + ticknumber + " PriceBID = " + PriceBID + " PriceASK = " + PriceASK + " TimeTickinms = " + (GetTickCount() - TimemsTick)); } return(0); }
MT5的代码:
#property copyright "Copyright 2024, expforex." #property link "" #property version "1.00" int timestart = 0; int ticknumber = 0; // Tick number double PriceBID = 0; // BID tick price double PriceASK = 0; // ASK tick price int TimemsTick = 0; // Tick time in ms int OnInit() { datetime Time[]; ArraySetAsSeries(Time, true); CopyTime(_Symbol, _Period, 0, 1, Time); timestart = (int)Time[0]; // Start counting from a new bar so that all EAs on all terminals start the same way. return(INIT_SUCCEEDED); } // The advisor starts with each tick void OnTick() { datetime Time[]; ArraySetAsSeries(Time, true); CopyTime(_Symbol, _Period, 0, 1, Time); if(timestart != (int)Time[0]) { if(TimemsTick == 0) TimemsTick = (int)GetTickCount(); ticknumber++; MqlTick last_tick; SymbolInfoTick(_Symbol, last_tick); double Bid = last_tick.bid; SymbolInfoTick(_Symbol, last_tick); double Ask = last_tick.ask; PriceBID = Bid; PriceASK = Ask; Comment("\n\n\n\n Tick Number = " + ticknumber + "\nPriceBID = " + PriceBID + "\nPriceASK = " + PriceASK + "\nTimeTickinms = " + (GetTickCount() - TimemsTick)); Print("Tick Number = " + ticknumber + " PriceBID = " + PriceBID + " PriceASK = " + PriceASK + " TimeTickinms = " + (GetTickCount() - TimemsTick)); } return; }
这些专家顾问执行以下操作:
在初始化时,顾问记录了其启动的柱,以确保所有四个终端上的所有专家顾问在下一个柱(在我们的例子中为M30)上同时开始。
随后,每个tick,顾问都会在屏幕和日志中记录数据:tick编号、BID/ASK价格以及自计算开始以来的tick时间(以毫秒为单位)。
我启动了终端,将EURUSD M30图表应用于所有四个终端,并使用了一个专家顾问来验证我们的观察结果。
我们的日志中的初始条目表明我们是同时开始的:
mt4_1:
18:29:58 TEST TICK EURUSD, M30: Tick number = 1 PriceBID = 1.32281000 PriceASK = 1.32289000 TimeTickinms = 0
mt4_2:
18:29:58 TEST TICK EURUSD, M30: Tick number = 1 PriceBID = 1.32281000 PriceASK = 1.32289000 TimeTickinms = 0
mt5_1:
GR 0 18:29:58 TEST TICK (EURUSD, M30) Tick number = 1 PriceBID = 1.32336000 PriceASK = 1.32344000 TimeTickinms = 1065503
mt5_2:
GR 0 18:29:58 TEST TICK (EURUSD, M30) Tick number = 1 PriceBID = 1.32335000 PriceASK = 1.32345000 TimeTickinms = 1065674
如下一些截图所示,报价起始相同,但我们观察到1-2个tick的差异。这清楚地表明:
剥头皮交易系统 无法在两个不同的MT4平台和MT5上实现100%相同的结果。
它也无法在同一MT4/MT5平台的两个终端上同时打开交易。
这是不现实的,也不是经纪商的错。
传输协议从服务器到您的计算机穿越网络,导致数据包丢失——这是正常现象。
计算和分析的差异
以下截图说明了差异:
这是顾问启动后仅3分钟。
让我们参考MT4终端上tick编号1433的日志:
18:47:44 TEST TICK EURUSD, M30: Tick number = 1433 PriceBID = 1.32336000 PriceASK = 1.32344000 TimeTickinms = 1065503
18:47:44 TEST TICK EURUSD, M30: Tick number = 1433 PriceBID = 1.32335000 PriceASK = 1.32345000 TimeTickinms = 1065674
我们的服务器时间相同,但毫秒时间和报价有所不同。
Tick编号1684
18:52:05 TEST TICK EURUSD, M30: Tick number = 1684 PriceBID = 1.32377000 PriceASK = 1.32385000 TimeTickinms = 1326586
18:52:03 TEST TICK EURUSD, M30: Tick number = 1684 PriceBID = 1.32374000 PriceASK = 1.32382000 TimeTickinms = 1324496
不仅时间不同,BID/ASK价格也不同。
现在让我们在MT5终端上进行同样的比较:
ES 0 18:48:42 TEST TICK (EURUSD, M30) Tick number = 4316 PriceBID = 1.3231 PriceASK = 1.32318 TimeTickinms = 1124050
DS 0 18:48:43 TEST TICK (EURUSD, M30) Tick number = 4316 PriceBID = 1.32311 PriceASK = 1.3232 TimeTickinms = 1124502
相同的tick编号,但为什么价格不同?
或者这是另一个例子:
RJ 0 18:52:21 TEST TICK (EURUSD, M30) Tick number = 4984 PriceBID = 1.32363 PriceASK = 1.32371 TimeTickinms = 1342701
H 0 18:52:22 TEST TICK (EURUSD, M30) Tick number = 4984 PriceBID = 1.32364 PriceASK = 1.3237 TimeTickinms = 1344355
不同的tick到达时间(毫秒),不同的ASK/BID价格
该压缩包 包含与本文相关的所有材料,包括专家顾问本身、视频、图片和终端日志文件。
问题出现了:
同一专家顾问能否在两个真实/活跃账户、一个经纪商、一个平台上以100%准确度执行相同的交易?
显而易见的答案是 否。
这种情况不会发生!
我希望本文将在未来详细解答您的所有问题。凭借这些知识,您将能够在各终端上更准确地操作您的剥头皮交易系统。
增加您的利润。
如何查找Ping(访问您的经纪商服务器的时间)
从VPS到经纪商服务器的速度很容易确定。此功能在Windows中是标准的,称为PING。
要确定访问时间,您需要找到您的服务器地址。
首先,打开您的终端文件夹并导航到CONFIG子文件夹。
找到包含您服务器名称的文件。
接下来,在记事本中打开该文件并找到您的经纪商的路径。将其复制到剪贴板。
然后,打开开始菜单并输入cmd命令。
然后,输入ping命令,后跟您的服务器地址。
ping mt4-demo.roboforex.com
结果以毫秒(ms)显示从您的计算机到经纪商服务器的时间。
值越低,对任何专家顾问来说,尤其是对剥头皮交易系统来说越好。
您还可以检查到服务器的ping或在终端右下角更改数据中心:
如果您的ping太高,您可以将专家顾问安装在VPS服务器上。
有疑问吗?
如果您有任何问题,请随时提问。我们不会欺骗您。
我们的每款产品都可以在购买前进行测试。
我们感谢您对我们产品的反馈和需求,并努力保持高质量标准。
感谢您的支持!
您有问题吗?
This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어
Leave a Reply