下午好!
感谢您的系列文章,感谢您为 MQL4 提供的代码!
关于实际例子。
任务是
- 当出现特定市场条件 时,在同一方向开立几个仓位,以相同的收盘水平计算亏损,以不同的水平计算盈利。
- 当下面/上面出现类似情况时,在同一方向上再开几个仓位,同样以相同的平仓亏损水平和不同的盈利水平开仓 + 将未平仓仓位的亏损水平改为零。
- 在确定第一组头寸的累计规模时,应考虑到资产负债表中 2% 的损失。
- 在确定第二套头寸的累计规模时,应考虑到 2% 的资金损失。
- 预计不会使用挂单。
我的 MQL4 Expert Advisor 已经实现了寻找进入点的算法,但还没有进行任何交易操作。
请注意,问题 ))
第一个系列中的哪些库、类、方法可以帮助我加快开发速度?
- www.mql5.com
下午好!
感谢您的系列文章,感谢您为 MQL4 提供的代码!
关于实际例子。
有一项任务、
- 当出现某些市场条件 时,在同一方向开几个仓位,平仓亏损水平相同,盈利水平不同。
- 当下面/上面出现类似情况时,再开几个同方向的仓位,同样以相同的平仓亏损水平和不同的盈利水平开仓 + 将未平仓仓位的亏损水平改为零。
- 在确定第一组头寸的累计规模时,应考虑到资产负债表中 2% 的损失。
- 在确定第二组头寸的累计规模时,应考虑到 2% 的资金损失。
- 不考虑挂单
我的 MQL4 Expert Advisor 已经实现了寻找进入点的算法,但还没有交易操作。
请注意,问题 ))
第一个系列中的哪些库、类、方法可以帮助我加快开发速度?
描述不完整。
1.我们在开仓时,会立即将神奇数字中的第一组标识符设置为相同。现在可以通过标识符 1 搜索整个第一组。
2.打开仓位,立即将其设置为魔术号码中相同的第二组标识符。现在可以用标识符 2 搜索整个第二组。
2.1 打开第二组头寸后,在列表中选择第一组的所有头寸,并将其止损水平修改为计算出的盈亏平衡水平。该水平应独立计算。第一组头寸列表可用 - 其累计盈亏很容易计算。
3. 此项是累计交易量吗?如果是,则在开第一组头寸之前计算。
4. 此项是总交易量吗?如果是,那么在建立第二组头寸之前计算一下。但资金将取决于第一组占用的保证金及其盈亏--自由资金的浮动盈亏。
5.5. 挂单请求只是方便用于设置开仓组的所有必要条件。提前计划,设定预期。我并不坚持--这是规划交易战术和技术的一种手段。
答案--所有这些都是在第一部分实现预期目标。我不明白的问题 - 没有尝试的东西。因此,我只能用文字来表达。
Artem,下午好
您的工作能力超乎想象,非常感谢。
我有一个想法:在大多数情况下,我的 MT4 测试终端都是以投资者模式连接到真实交易账户 的。
这样做的目的是最大限度地利用测试仪中的交易账户条件(掉期、佣金、止损位--任何在 TDS 中没有掉期的条件)。
但是,库会检测到账户中的交易是被禁止的,并拒绝交易。在测试器中。
也许应该明确放宽在测试器中工作的某些限制?
显然是这样:
//--- 检查该账户的交易权限(如果与交易服务器有连接的话) else if(!this.m_account.TradeAllowed() && !::MQLInfoInteger(MQL_TESTER)) { //--- 将错误代码写入列表并返回 false - 没有必要进一步检查 this.m_error_reason_flags=TRADE_REQUEST_ERR_FLAG_ERROR_IN_LIST; this.AddErrorCodeToList(MSG_LIB_TEXT_ACCOUNT_NOT_TRADE_ENABLED); return false; }
我已经添加了我的检查,但这可能不是唯一可以在测试器中忽略的检查。
- www.mql5.com
你好@Artyom Trishkin,感谢您提供这段代码。
我尝试在 MT4 中运行修改后的版本,但没有测试按钮来监听账户/交易事件:
01:17:13.849 删除
01:17:13.733 取消登录原因 4
01:15:36.860 OnDoEasyEvent:位置关闭
01:15:36.860 - Position closed: 2020.08.20 23:45:29.000 -EURUSD Closed Sell #573015195 at price 1.18610, Profit -0.13 USD
01:15:35.489 CEventsCollection::CreateNewEvent, 768 行:此事件已在列表中
01:15:35.019 OnDoEasyEvent:位置已关闭
01:15:35.019 - Position closed: 2020.08.20 23:45:27.000 -EURUSD Closed Buy #573015193 at price 1.18623, Profit -0.13 USD
01:15:30.144 OnDoEasyEvent:开仓
01:15:30.144 - Position opened: 2020.08.20 23:45:29.000 -EURUSD Opened 0.01 Sell #573015195 [0.01 Market-order Sell #573015195] at price 1.18610
01:15:28.724 OnDoEasyEvent:开仓
01:15:28.724 - Position opened: 2020.08.20 23:45:28.000 -EURUSD Opened 0.01 Buy #573015194 [0.01 Market-order Buy #573015194] at price 1.18623
01:15:28.263 OnDoEasyEvent:开仓
01:15:28.257 - Position opened: 2020.08.20 23:45:27.000 -EURUSD Opened 0.01 Buy #573015193 [0.01 Market-order Buy #573015193] at price 1.18623
01:14:49.639 已初始化
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象结构
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象结构
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象结构
01:14:22.120 帐户 ****:**** (****) **** USD, 1:100, 对冲, 模拟账户MetaTrader 4
01:14:20.357 加载成功
我的测试代码可能出了什么问题?
您好@Artyom Trishkin,感谢您提供的代码。
我试着在 MT4 中运行修改后的版本,但没有测试按钮来监听账户/交易事件:
01:17:13.849 删除
01:17:13.733 取消登录原因 4
01:15:36.860 OnDoEasyEvent:位置关闭
01:15:36.860 - Position closed: 2020.08.20 23:45:29.000 -EURUSD Closed Sell #573015195 at price 1.18610, Profit -0.13 USD
01:15:35.489 CEventsCollection::CreateNewEvent, 768 行:此事件已在列表中
01:15:35.019 OnDoEasyEvent:位置已关闭
01:15:35.019 - Position closed: 2020.08.20 23:45:27.000 -EURUSD Closed Buy #573015193 at price 1.18623, Profit -0.13 USD
01:15:30.144 OnDoEasyEvent:开仓
01:15:30.144 - Position opened: 2020.08.20 23:45:29.000 -EURUSD Opened 0.01 Sell #573015195 [0.01 Market-order Sell #573015195] at price 1.18610
01:15:28.724 OnDoEasyEvent:开仓
01:15:28.724 - Position opened: 2020.08.20 23:45:28.000 -EURUSD Opened 0.01 Buy #573015194 [0.01 Market-order Buy #573015194] at price 1.18623
01:15:28.263 OnDoEasyEvent:开仓
01:15:28.257 - Position opened: 2020.08.20 23:45:27.000 -EURUSD Opened 0.01 Buy #573015193 [0.01 Market-order Buy #573015193] at price 1.18623
01:14:49.639 已初始化
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象结构
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象结构
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象结构
01:14:22.120 帐户 ****:**** (****) **** USD, 1:100, 对冲, 模拟账户MetaTrader 4
01:14:20.357 载入成功
我的测试代码可能出了什么问题?
我不知道你改了什么...
我删掉了一些与按钮有关的代码,但仍有可能删除 一些必要的代码。我现在把它附上。
但是,您是否同意,没有捕捉到第二收盘买入位置的错误与我的更改无关?
我删掉了一些与按钮有关的代码,但仍有可能删除一些必要的代码。现在附上。
但是,您是否同意,没有捕捉到第二收盘买入位置的错误与我的更改无关?
测试顾问的工作没有错误吗?
我运行修改后的 EA 来观察我的事件,然后手动进行一些交易并尽快平仓。
这些 "账户 "错误出现在默认的 TestDoEasyPart34.ex4 中。
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象 结构
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象结构
01:14:22.120 CAccount::Load:无法从 uchar 数组创建对象结构
-----
供您参考:
由于我们改变了账户对象的结构(改变了用于存储账户字符串属性的 uchar 数组的大小,并增加了一个整数属性),所有以前保存的账户对象文件将不再能正确加载。如果它们在 \Files\DoEasy\Accounts\ 目录下的终端公共文件夹中,那么在启动本测试顾问之前必须全部删除 - 当从一个账户切换到另一个账户时,它们将以新的对象结构大小重新创建。
-----
新文章 轻松快捷开发 MetaTrader 程序的函数库(第 三十四部分):延后交易请求 - 在特定条件下删除和修改订单与持仓已发布:
在本文中,我们将完成延后请求交易概念的论述,并创建删除挂单,以及在特定条件下修改挂单和持仓的功能。 由此,我们将拥有完整的功能,令我们能够开发简单的自定义策略,或者根据用户定义的条件激活 EA 行为逻辑。
编译 EA,并在测试器中以可视化模式启动它。 若要检验管单删除、以及挂单和持仓修改,请开立两笔空头仓位,并下一笔空头挂单,不要设置止损和止盈价位。 接下来,创建延后请求,按价格修改挂单和持仓的止价位。 等待激活延后请求,并设置指定的止价位,然后删除挂单和持仓。
然后开立两笔多头仓位,并下一笔多头挂单。 之后,创建删除挂单、和按时间平仓的延后请求。
正如我们所见,止价位设置在给定延后请求激活价位的交点处。 持仓在指定时间后平仓,订单被删除。
作者:Artyom Trishkin