初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1413

 

您好。请帮我解决 mt5 中的一个问题。

2016 年以后的货币对历史报价无法加载。经纪商 - Gerchik。

已尝试:

1 - 通过策略测试器下载历史记录。

2 - 通过工具终端。它愚蠢地只显示截至 2016 年的历史。

3 - 从 mt5 服务器的正常加载对中复制历史记录。没有用,重启程序后会删除这些文件,历史记录也只显示到 2016 年。

4 - 经纪人的技术支持说运行没有字母 Z 结尾的货币对,但他们有所有以 Z 结尾的货币对 - EURUSDz、AUDCADz。

我猜问题出在经纪商和他们的服务器上,但为什么它会删除复制的历史记录呢?有人能告诉我如何正常上传历史记录吗?

 
gyperion #:

您好。请帮我解决 mt5 中的一个问题。

2016 年之后的货币对历史报价无法加载。经纪商 - Gerchik。

已尝试:

1 - 通过策略测试器下载历史记录。

2 - 通过工具终端。它愚蠢地只显示了截至 2016 年的历史。

3 - 从 mt5 服务器的正常加载对中复制历史记录。没有用,重启程序后会删除这些文件,而且历史记录也只显示到 2016 年。

4 - 经纪人的技术支持说运行没有字母 Z 结尾的货币对,但他们有所有以 Z 结尾的货币对 - EURUSDz, AUDCADz。

我猜问题出在经纪商和他们的服务器上,但为什么它甚至删除了复制的历史记录?有人能告诉我如何正常上传历史记录吗?

所以,也许他们没有历史记录,因为他们自己不是一个非常老的厨房?

 
Aleksey Vyazmikin #:

也许它们没有历史,因为它们本身就不是一个非常古老的厨房?

俄罗斯有哪些非传统厨房?这其实并不重要。问题是,即使没有历史,如何上传?
 
gyperion #:
俄罗斯有什么不可以做的?这并不重要。问题是,即使他们 没有故事,你如何下载故事?

即使你没有钱,你能借给我吗?

 
gyperion #:
俄罗斯有什么不可以做的?这并不重要。问题是如何上传历史,即使他们没有历史?

通过自定义字符创建您的历史

Importing High Quality Tick Data to MetaTrader 5
Importing High Quality Tick Data to MetaTrader 5
  • 2021.11.28
  • www.mql5.com
In order to vet a potential trading strategy, it is imperative to ensure that the results obtained f r om optimizations and strategy tests are a true reflection of the performance of your EA
 
Nauris Zukas #:

通过自定义角色来创造你的故事

嗯,部分成功了,但重要的是成功了。我会继续努力的。谢谢您的帮助,先生,我已经试过所有方法了。
 

大家好,我想写我的第一个交易机器人(Expert Advisor)。它在回溯测试中运行完美,测试结果也很可观。但是有很多事情需要考虑:账户类型、符号属性、与其他 EA 的干扰等。

我为此设置了四个变量:

bool isHedging; bool isFIFO; ulong positionTicket; double positionVolume;

前两个变量在 init 方法中设置:

if ((bool)AccountInfoInteger(ACCOUNT_HEDGE_ALLOWED)) isHedging = true;
else isHedging = false;
if ((bool)AccountInfoInteger(ACCOUNT_FIFO_CLOSE)) isFIFO = true;
else isFIFO = false;

如果我想开立 头寸,我会首先检查这是否会导致先进先出(FIFO)问题(即,如果我想开立多头头寸,我会检查是否已经有相同交易量的多头头寸或相应符号的空头头寸,否则止损(StopLoss)和止盈(TakeProfit)可能无法正常工作,这是我听说的)。最后,我使用 OrderSend 方法并设置是否成功:

positionVolume = tradeResult.volume;
positionTicket = tradeResult.deal;

在执行 StopLoss 或 TakeProfit 后,我通过 OnTradeTransaction 方法检查 positionTicket 变量是否与 transaction.position 匹配,以确认我(内部)的 EA 仓位是否已关闭。

如果我想关闭净额结算账户头寸,我只需关闭多头头寸和相同交易量的空头交易。

如果要关闭对冲账户头寸,则使用 trade.PositionClose(positionTicket, slippage) 关闭头寸;

如果我想关闭一个先进先出对冲账户头寸,我会关闭与头寸方向(多头/空头)和交易量相匹配的相应符号的最旧头寸,根据上述先进先出账户的进入条件,这应该是我自己的头寸。

现在我确信我忽略了一些基本问题。我如何确保在上述关闭(内部)EA 仓位时,净额结算账户上的 StopLoss 和 TakeProfit 也被关闭?是否有更优雅、更有效的方法使 EA 符合 FIFO?在非FIFO对冲账户中,如果我只在EA中用MarketOrder开仓,不对其进行编辑,然后想平仓,那么tradeResule.deal值是否始终保持不变,这样我也可以用trade.PositionClose(positionTicket, slippage)平仓而不用担心,其中positionTicket是保存的tradeResult.deal值?

几天来我一直在寻找答案,但还没有找到可以解决我所有问题的答案。希望有人能帮我。

 
Benjamin Fotteler #:

现在我确信我忽略了一些基本问题。我如何确保在如上所述关闭(内部)EA 头寸时,净额结算账户上的 StopLoss 和 TakeProfit 也被关闭?是否有更优雅、更有效的方法使 EA 符合 FIFO?对于非FIFO对冲账户,如果我只在EA中用MarketOrder开仓,不对其进行编辑,然后想平仓,那么tradeResule.deal值是否始终保持不变,这样我也可以放心地用trade.PositionClose(positionTicket, slippage)平仓,其中positionTicket是保存的tradeResult.deal值?

几天来我一直在寻找答案,但还没有找到可以解决我所有问题的答案。希望有人能帮我。

在净额结算账户中,每个符号只有一个仓位。如果 EA 只交易一个符号,这可以在 PositionTotal() 中读取 - 或者更简单,PositionSelect() 要么是错误的(=none),要么也被选中继续交易。

Documentation on MQL5: Trade Functions / PositionSelect
Documentation on MQL5: Trade Functions / PositionSelect
  • www.mql5.com
PositionSelect - Trade Functions - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 

没错。感谢您的提示。但我该怎么做呢?例如,如果另一个 EA 在同一符号 上运行,开仓 0.5 手,止损 100 点,我的 EA 开仓 "EA 内部仓位 "0.5 手,止损 150 点,即把现有仓位增加到 1 手,然后我关闭 "EA 内部仓位",即把现有仓位减少到 0.5 手。剩下的 0.5 手止损是 100 点还是 150 点?在这种情况下,是否无法在净额结算模式下通过 SendRequest 为 "我的 "0.5 手设置独立止损?

我的意思是,我不想简单地改变其他 EA 精心设计的止损,但也不想简单地放弃自己的止损。除了在没有敞口头寸的情况下以净额结算模式开立 "EA 内部头寸 "外,还有其他有效的办法解决我的 "问题 "吗?

 
Benjamin Fotteler 符号 上运行,开仓 0.5 手,止损 100 点,我的 EA 开仓 "EA 内部仓位 "0.5 手,止损 150 点,即把现有仓位增加到 1 手,然后我关闭 "EA 内部仓位",即把现有仓位减少到 0.5 手。剩下的 0.5 手止损是 100 点还是 150 点?在这种情况下,是否无法在净额结算模式下通过 SendRequest 为 "我的 "0.5 手设置独立止损?

我的意思是,我不想简单地改变其他 EA 精心设计的止损,但我也不想简单地放弃自己的止损。除了只在没有未结头寸的情况下以净额结算模式开立 "EA 内部头寸 "外,还有其他有效的办法解决我的 "问题 "吗?

如果在一个净额结算账户(!)中,第一个 EA(例如欧元兑美元)买入 0.01 手(买入),第二个 EA 卖出 0.05 手(卖出),那么现在账户上只有一个 0.04 手的卖出头寸。票据号码暂时与此无关。如果欧元兑美元唯一仓位的第二个订单设置了新的 SL 和 TP,则第一个订单的 SL 和 TP 将被覆盖。

如果指定,只有一个仓位有一个 SL 和一个 TP。