哦,这里出现了最美味的 "阅览室",让我们一起来读一读它是什么、如何......
尤其是这样一位作者。:)
我还希望看到交换计算功能。 交换有 5 种,每种都有自己的细微差别。
有时你无法通过科学方法找到正确的位置。
我通过选择找到了三种变体,但仍有SYMBOL_SWAP_MODE_BY_INTEREST。我无法检查它,因为我找不到使用这种计算方法的经纪商。
如果能在 CodeBase 中发布指定货币和手数的掉期计算功能,我们将不胜感激。
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:
什么情况下允许交易,但不允许使用 Expert Advisor?
是指经纪商禁止还是终端设置?
与 4 类比: - "......如果允许专家进行交易,并且交易操作的流量是自由的......"
也就是说,IsTradeAllowed= IsExpertEnabled+ IsTradeContextBusy ?
这篇文章既有趣又有必要!我试着检查了这篇文章中的公式,结果是这样的。让我们以 EURGBP 为例。账户货币是美元。最近的货币对是 EURUSD,即模式=true。我们使用文章中的公式来确定所需的保证金:
if(direction==POSITION_TYPE_BUY)
{
//--- 反向引用
if(mode)
{
//--- 按反向报价的买入价计算
calc_price=tick.ask;
answer=lot*lot_size*calc_price;
}
...
if(direction==POSITION_TYPE_SELL)
{
//--- 反向引用
if(mode)
{
//--- 按反向报价的卖价计数
calc_price=tick.bid;
answer=lot*lot_size*calc_price;
}
也就是说,根据文章,买入时所需保证金应为
买入:保证金 =手数*手数*阈值/杠杆率
卖出时
卖出:保证金 =手数*手数*买入价/杠杆率
我们将这些公式编码到一个简单的 EA 中,并尝试提前以较低的资金卖出和买入欧元兑美元,这样 metatrader 就会告诉我们需要多少保证金。同时,我们输出计算出的保证金。我们从测试器中得到这些信息:
2010.07.06 16:34:01 Core 1 没有足够资金 [instantsell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0. 00, NewMargin:122.91, NewFreeMargin: -112.91- 由测试人员计算的保证金
2010.07.06 16:34:01 Core 1 Error:not enough money.自由保证金 = 10,所需保证金 =122.899 - 由我们计算的 保证金。
2010.07.06 16:34:01 Core 1 没有足够资金 [instantbuy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0. 00, NewMargin:122.72, NewFreeMargin: -112.72- 由测试人员计算的保证金
2010.07.06 16:34:01 Core 1 Error: not enough money.自由保证金 = 10,所需保证金 =122.737 - 由我们计算的 保证金。
这就是区别。现在,我们将计算所需保证金的公式改为
买入:保证金 =手数*手数*买入价/杠杆率
卖出:保证金 =手数*手数*卖出价/杠杆率
这与文章相矛盾。我们从测试人员那里得到了这样的信息:
2010.07.06 16:39:49 Core 1 没有足够资金 [instantsell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0. 00, NewMargin:122.91, NewFreeMargin: -112.91- 由测试人员计算的保证金
2010.07.06 16:39:49 Core 1 Error: not enough money.Free margin = 10, required margin =122.911 - margin calculated by us
2010.07.06 16:39:49 Core 1 no enough money [instantbuy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin:122.72, NewFreeMargin: -112.72- 由测试人员计算的保证金
2010.07.06 16:39:49 Core 1 Error: not enough money.Free margin = 10, required margin =122.722 - 由我们计算的 保证金
。
在这里,Expert Advisor 使用 "错误 "方法计算出的保证金与测试人员计算出的保证金完全相同。事实证明,在计算 EURGBP 等交叉盘时,无论是测试器还是文章中的买入价和卖出价都是重新排列的。谁是正确的:文章还是测试器?

- www.mql5.com
新文章 EA 交易中的资金管理函数已发布:
交易策略的开发主要着重于搜索进入和退出市场的模式以及维持仓位。如果我们能够将某些模式公式化为自动交易规则,则交易者面临计算持仓量、预付款数额等问题,以及在自动模式中维持抵押资金的安全水平以保证未平仓位的问题。在本文中,我们将使用 MQL5 语言构建几个进行这些计算的简单例子。
作者:MetaQuotes Software Corp.