[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 188

 

试图计算掉期,但没有用

下面是输出过去20个交易的掉期的代码。

for ( int j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {
OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);
if(OrderType()==OP_BUY)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPLONG)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
if(OrderType()==OP_SELL)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPSHORT)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
}

但估计的交换和真实的交换是不同的。并不是说投标价格就再也不一样了,这不是万分之一。

由于某些原因,差异是10的倍数。

也就是说,计算出的互换量比实际的要高10倍。

我甚至无法猜测这里出了什么问题。

MarketInfo(OrderSymbol(),MODE_SWAPTYPE) 返回 然后

"计算掉期的方法1--以工具的基础货币计算;"

我采取了以点为单位的互换值,其结果是

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

我把这个值乘以Bid

*MarketInfo(OrderSymbol(),MODE_BID)

然后, 的尺寸, 的地段。

*OrderLots()

并乘以1点的价值,,从一手的存款货币 中提取。

*MarketInfo(OrderSymbol(),MODE_TICKVALUE)

返回的值是。

eurgbp lot = 0.46000000 real swap = -1.31000000 estimated swap -13.05244609

 

请告诉我如何做到这一点))

双倍的MA1,MA2。

MA1=iMA(....,0)。

MA2=iMA(....,3)。

如果(MA1-MA2>Point)//MA向上看

如果(MA1-MA2,-Point)//MA向下看

 
vasya_vasya писал(а)>>

我把这个值乘以Bid

*MarketInfo(OrderSymbol(),MODE_BID)

那是为了什么?

 
Roger >> :

请告诉我如何做到这一点))

双倍的MA1,MA2。

MA1=iMA(....,0)。

MA2=iMA(....,3)。

如果(MA1-MA2>Point)//MA向上看

如果(MA1-MA2,-Point)//MA正在往下看

非常感谢您))。

 
Roger писал(а)>>

这是为了什么?

我找不到关于它返回内容的描述

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

我做了一个结论,这是欧元 点的大小,在欧元GBP 报价 ,所以我把它乘以BID,得到它在英镑 中的价格。

关键是

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

返回每手的点值,只针对EURGBP 报价中的GBP ,不针对EUR

 
vasya_vasya писал(а)>>

我在任何地方都没有找到关于该值返回的描述

出于某种原因,在我看来,所有的计算都是用存款的货币。
 
Roger писал(а)>>
出于某种原因,我一直认为所有的计算都是以存款的货币进行的。

Function MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

返回一个-2的整数值,与所有其他订单的值相同。因此,我们假设这就是点子的价值。

让我们假设这是以我们存款货币的点值表示的掉期价值。

存款货币 = 美元

乘法

MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

按手数计算

*OrderLots()

同时乘以我们每手存款货币的一个点的价值

*10

获取

swap = -9.20000000

而不是

实数互换 = -1.31000000

 
vasya_vasya писал(а)>>

Function MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

返回一个-2的整数值,与所有其他订单的值相同。因此,我认为这就是点子的价值。

对于欧元兑英镑,空头返回0(这是Alpari),多头返回-0.68,这正好是美元。

 
Profiles please advise, according to the help of mql5 language there is nofunction iHighest how to calculate maximum high for N period? ... I have tried copyHigh and fmax, but only for a certain period and not that of course, help
 

粗略地说是这样。

double HighestBar(int start, int end)
{
double maxBar;
for (int i= start; i< end; i++)
if( maxBar<High[ i]) maxBar=High[ i];
return( maxBar);
}
原因: