初学者的问题 MQL4 MT4 MetaTrader 4 - 页 15

 
Renat Akhtyamov:
我们来看看这段代码。
你把它混合起来。
 
A1exPit:
你把它搅乱了。
那么祝你好运。
 
Renat Akhtyamov:
那么祝你好运。
在你问的问题中,代码不是很重要吗?你可以只写--我不知道,但不知为什么,它很有效。
 
A1exPit:
这个问题中的代码不是很重要吗?你可以直接写 "我不知道",但这似乎很有效。

这个问题是关于代码的,所以没有代码你就不能做。

你是在问修改器还是订单处理?

我不知道你需要什么。但错误是在代码中 - 100%。

 

请告知如何使用MQL4来获取终端中每个未结头寸的保证金值?

我以前是这样做的。

margin = MarketInfo(Symbol(),MODE_LOTSIZE) * OrderOpenPrice() / AccountLeverage() * OrderLots();

在交易欧元/美元时,这种结构运行良好,我确信其逻辑是正确的。

但现在我想对欧元/日元(或欧元/瑞士法郎)得到同样的结果。很明显,我需要将标准手的价值乘以基础货币与入金货币 的汇率(在我的例子中,乘以欧元/美元),而不是OrderOpenPrice()。但这个比率是多少呢?是建仓时的那个,还是现在的那个(在我们想知道这个仓位的存款额时)?

 
Babu Bonappan:

请告知如何使用MQL4来获取终端中每个未结头寸的保证金值?

我以前是这样做的。

margin = MarketInfo(Symbol(),MODE_LOTSIZE) * OrderOpenPrice() / AccountLeverage() * OrderLots();

在交易欧元/美元时,这种结构运行良好,我确信其逻辑是正确的。

但现在我想对欧元/日元(或欧元/瑞士法郎)得到同样的结果。很明显,我需要将标准手的价值乘以基础货币与入金货币 的汇率(在我的例子中,乘以欧元/美元),而不是OrderOpenPrice()。但这个比率是多少呢?是在开仓时存在的,还是现在存在的(在我们想知道这个职位的存款额时)?

margin = MarketInfo(OrderSymbol(),MODE_MARGINREQUIRED) * OrderLots();

其结果将是不准确的。

或者,您可以在图表上找到所需货币对在开仓时的汇率,如有必要,考虑点差(买入/卖出),用以下公式计算出开仓时的更精确的保证金值

陷阱可能是在杠杆率不同的时候计算保证金

 
如果在开单时将欧元/美元的汇率写在注释栏里,然后再从那里读取,会怎么样?
 
Babu Bonappan:
如果在开单时将欧元/美元的汇率写在注释栏里,然后再从那里读取,会怎么样?

用于其他目的的评论。

这就是如何找出价格的问题。

         string Symbol_X="USDCHF";
        
         int bs=iBarShift(OrderSymbol(),Period(),OrderOpenTime());
         double bid_X=iClose(Symbol_X,Period(),bs);
 
Renat Akhtyamov:

用于其他目的的评论。

这就是如何找出价格的问题。

         string Symbol_X="USDCHF";
        
         int bs=iBarShift(OrderSymbol(),Period(),OrderOpenTime());
         double price_X=iClose(Symbol_X,Period(),bs);

如果我们在例如日线图上交易,我们会得到当天的开盘价,也就是我们感兴趣的订单被打开的中间某个位置,不是吗?而且,它可能与开业时的价格有很大差别。

 
Babu Bonappan:

因此,如果我们在例如日线图上交易,我们将得到当天的开盘价,也就是我们感兴趣的订单被打开的中间某个位置,不是吗?而且,它可能与开盘时的价格有很大不同。

没有人坚持使用Period()

例如,明确指定PERIOD_M15,或另一个