创建和测试套利策略 - 页 7

 
pronych:
好的。当你用这些腿去做限价单时,我们再谈。))
我同意,要控制一窝蜂的限价单会有点困难 ))
 

我要开始一个新的话题。

当我们在定义套利头寸的流动性时,可能会出现这个问题。
如何正确地重新计算以美元为单位的交叉货币对在最佳波段的流动性(以及为什么)?

1)直接通过主要的基础货币
2) 通过主要的报价货币

例如:欧元兑瑞郎最佳债券的成交量为200万单位。你必须检查这个数量,以美元计算。我们应该怎么做?我们看一下欧元兑美元的行情,估计一下200万欧元是多少。或者,我们以目前的汇率估计瑞士法郎的数量,然后用美元/瑞士法郎的坚戈来确定美元的数量?

 
GaryKa:

我将启动一个新的主题。

当我们在定义套利头寸的流动性时,可能会出现这个问题。
如何正确地重新计算以美元为单位的交叉货币对在最佳波段的流动性(以及为什么)?

1)直接通过主要的基础货币
2) 通过主要的报价货币

例如:欧元兑瑞郎最佳债券的成交量为200万单位。你必须检查这个数量,以美元计算。我们应该怎么做?我们看一下欧元兑美元的行情,估计一下200万欧元是多少。或者,我们以目前的汇率估计瑞士法郎的数量,然后用美元/瑞士法郎的坚戈来确定美元的数量?

并通过勾股的价值,不?
 

我已经看到了通过TickValue的解决方案。但这个案例是一般性的(不是MT),此外,说实话,操纵TickValue让我很头疼。我希望有一个简单的解释,这将是很容易记住的。

到目前为止,它是这样的。

在Ask gangs上,我们有一个要约出售,所以卖家有货物(基础货币)可用。我们只是用另一种报价货币(美元)来计算其成本。在投标银行的另一边,我们没有可供购买的产品,但我们有资金(以报价的货币)。通过相应的专业,重新计算这些资金。

共计。

  • 为询问团伙计数(1)方式
  • 对于投标团伙,我们以(2)的方式计算
 
你在开玩笑吧...或者我不明白你在说什么。所以你认为,例如欧元兑美元的1手交易量等于任何其他符号的1手交易量?
 
GaryKa:...所以,你认为例如欧元兑美元的1手交易量等于任何其他符号的1手?

对于基础货币 相同的货币对,按手数比较是可以接受的,因为单位是相同的。例如,EURCHF和EURUSD的交易量。


纸杯

一些卖家EURUSD ASK-band = 2.0百万,即卖家想卖出2 000 000 / 100000 = 20 手欧元,买入2 000 000 / 136345 = 14.67手美元。

其他英镑兑美元卖家ASK-band=350万,即卖家想卖出3 500 000 / 100000 = 35 手英镑,买入3 500 000 / 164349 = 21.3手美元。

结果是,目前他们想买14.67+21.3=35.97手美元的欧元和英镑。 你可以用这种方式计算任何货币。

在这个例子中,你有主要的货币对,它们有相同的报价货币。仅仅按手数进行比较是不行的:20手欧元和35手英镑。 因此,转换并获得美元手数的数量:14.67和21.3,这已经可以进行比较。


问题有点不同?你如何计算一个交叉对的体积?给我看看有没有很多。例如,如何比较EURCHF和AUDNZD的交易量?

GaryKa: ...如何正确地重新计算以美元为单位的交叉 货币对的最佳波段的流动性(以及为什么)?
 

这里 套利头寸的另一个选择,为每个符号计算手数,在不转换为普通单位的情况下尽可能多地交易流动性。

假设我们有一个A/B、B/C、C/A类型的三角套利

1)从第一个符号开始到最后一个。取第一对的体积A(记住是A/B的订单大小),计算体积B(将A转换成B)。如果得到的体积大于B/C的体积,我们就转到第2点。 如果它较小,我们就记住这个体积(作为B/C的订单大小),计算C,进行比较,等等。我们已经成功地达到了产业链的末端---我们已经有了订单的数量,退出。

2)做一个循环的转变(原来的A/B、B/C、C/A变成了B/C、C/A、A/B),并回到第1点。)

 
papaklass:...通过开仓时需要的抵押品来表示这些货币的数量。因此,获得这些货币的美元数量并进行比较。
好建议。

让我们自己计算一下,如果是美元存款货币,将(必须)从我们这里扣除多少保证金。

- 我们想买入1手EURCHF。
买入欧元兑瑞郎就是用欧元买入瑞郎。我们没有CHF。我们借它们,或者我们自己买它们(有1:1的杠杆)。换句话说,我们有美元(存款),我们必须购买瑞士法郎(或不购买,如果有瑞士法郎的信贷),以便购买欧元。这意味着,为了买入欧元兑瑞郎,我们必须真正(杠杆1:1)或实际上卖出美元兑瑞郎(从存款中卖出美元,买入瑞郎),以市场(最坏情况)价格。

- 我们想卖出1手EURCHF。
卖出欧元兑瑞郎就是卖出欧元换取瑞郎。我们没有欧元(我们没有东西可卖)。我们要么借它们,要么自己买它们(1:1的杠杆)。换句话说,我们有美元(存款),我们必须购买欧元(或不购买,如果向我们提供欧元的信贷)来购买瑞士法郎。这意味着,要卖出欧元兑瑞郎,我们必须实际(杠杆1:1)或实际上买入欧元兑美元(从存款中卖出美元,买入欧元),以市场(最坏情况)的价格。

一句话。
  • 当买入欧元兑瑞郎时,美元信贷保证金应以美元兑瑞郎的价格计算。
  • 在欧元兑瑞郎销售中,美元信贷保证金必须使用欧元兑美元的价格来计算


现在我们来看看你的代码。在我看来,这个函数缺少一个负责交易方向的参数。你有变量marginCurrency,它总是被定义为基础货币。因此,相应地,卖出和买入欧元兑瑞郎的保证金总是 通过欧元兑美元计算。

   string marginCurrency = StringSubstr( StringTrimLeft( smb ), 0, 3 );

...


   if( calcCurrency == "" ){
      calcCurrency = GetSymbolByCurrencies( marginCurrency, accCurrency );
      mode = true;
     
      if( calcCurrency == "NULL" ){
         calcCurrency = GetSymbolByCurrencies( accCurrency, marginCurrency );
         mode = false;
      }
   }


P.S. 我很好奇,你现在的利润率计算与MT的计算有多大程度的吻合,尤其是以前也有类似的说法

 
papaklass:

从沉默的情况来看,并非一切都很清楚。

用数字回答问题:"你如何计算一个十字对的体积?给我看看有没有很多。例如,你如何比较欧元兑美元和澳元兑新西兰元的交易量?"

为了找出手数的差异,我将主要货币的汇率除以分母。质押货币是分母中的货币。

EURUSD / AUDUSD -> 1.36368 / 0.90639 = 1.50451,即AUDNZD的开仓量 必须是EURCHF的1.50倍。

我为什么要分专业呢?

我不理解这个帖子。因此,以这种方式计算 你的结论是澳元纽元(以美元计)的交易量 大约是欧元兑瑞郎(以美元计)的1.5 倍。对吗?

 
papaklass: ...现在谈谈我的保证金计算代码。我已经详细地评论了它。是不是很难阅读和理解?保证金由另一个函数计算...请看注释"//接收指定方向的当前价格 "之后的代码。

papaklass 冷静下来,否则我们就会发生争执。我在评论前看了你的代码,你看了我的评论吗?小心翼翼地?


我对你的计算方法的投诉(以欧元兑美元的计算为例)。

GaryKa: ...你总是 通过欧元兑美元计算卖出和买入欧元兑美元的安全性。

在注释"//获取指定方向的当前价格"之后,当你买入和卖出 ,你总是 在同一个符号上计算价格,而我认为你必须在不同的符号上计算它们(上面的理由)。

   prc = Dbl_If( dir == OP_BUY, MarketInfo( calcCurrency, MODE_ASK ),
                                MarketInfo( calcCurrency, MODE_BID ) );

在EURCHF的例子中,你总是 EURUSD。


P.S. 那是不必要的,对不起

GaryKa: ...在我看来,该函数缺少对交易方向负责的参数......。