Meta Trader中的价差交易 - 页 31

 
neoclassic >>:

Продавая USDCAD и покупая DX вы покупаете индекс канадца. На поведение индекса можно посмотреть с помощью того же СС - его динамика ничем не отличается от других индексов. Так что такая торговля на мой взгляд - будет 50/50.


这是有可能的!我不打算争论。

所以我们会继续寻找。寻找其他合适的工具。

顺便说一下。昨天接近Fduch 指数的交易结束时,我输入了(买入ZC+卖出ZW)。

现在有{+300点(玉米)-175点(小麦)}。

 
neoclassic >>:

Продавая USDCAD и покупая DX вы покупаете индекс канадца. На поведение индекса можно посмотреть с помощью того же СС - его динамика ничем не отличается от других индексов. Так что такая торговля на мой взгляд - будет 50/50.


然后请计算加拿大指数公式的公式。当然,如果它存在的话))) ...实际上,最好是将欧元 "串联 "起来。因为它在指数中具有更大的权重。只要在indy的公式中放一个减号,就可以正常显示。你能分享一下你是如何计算 "串联 "的系数的,即交易中的对子的重量?

 

我还没有真正认真计算过。即--到目前为止,通过眼睛,--大致如此。

对于(Dax/Futsi)--手数比例为1.2/3,delta不低于200T,--我是经过多周的观察推断出来的。

EURIPY+USDJPY - 我采取相同的手数。在2.5周的在线工作中(delta=20-30点),这个 "对冲 "没有花费超过2-3天。

我以5到20个点的总利润关闭了它。

 
"多星期的监视"?直接收集数据不是更容易吗?
 

不太可能成功。"疯狂的达克斯"(c)和"漂亮的足彩"(c)的 "讨论版 "是在不同的平台上进行交易。

Futsi每天比Dax晚一个小时开始。此外,历史上有相当多的日子,当dax交易时,Futsi是 "关闭 "的,或者反之亦然。所以,这些工具的历史相对于对方来说是移位了许多次,因此,没有什么可信度。

 
rid >>:

Вряд ли получится. "Бешеный Дакс"(с) и "красотка Футси"(с) в "обсуждаемом варианте" торгуются на разных площадках.

Ежедневно футси стартует на час позже дакса. Более того, на истории достаточно много дней, когда дакс торговался, а футси был(а) "на выходных", или наоборот. Так что, история этих инструментов многократно сдвинута относительно др-друга и, по этой причине, мало достоверна.

这很好。我们永远不会比大叔们在他们的球场上打得更好。而在这样的场地上,大叔们是没有办法的。

这就是我们的面包和黄油。

 
Fduch >>:
По открытиям баров

我正在制作一个 "准套利 "EA,可以在测试器中对两个 "对冲 "工具运行,并在第二个符号上进行模拟虚拟交易。

有一个问题。

请告知。

我如何改变你的功能

//--------------------------------------------------------------------+
//ФУНКЦИЯ РАСЧЕТА СРЕДНЕСТАТ.СПРЕДА                    |
//--------------------------------------------------------------------+               
  double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars)
{
   int k;   double N = 0;   double Sum = 0;
   for( k = 0; k < iBars( Symbol_1, Timeframe); k++)
   {
      if( N == NBars)          break;

      int symb2Shift = iBarShift( Symbol_2, Timeframe,iTime( Symbol_1, Timeframe, k),true);
      if( symb2Shift != -1)
      {
         Sum += iClose( Symbol_1, Timeframe, k) - iClose( Symbol_2, Timeframe, symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return( avarageSpread);
}

它不会返回过去NBars 的平均价差?

但对于倒数第二的NBars

即从(2*NBars)-第1条到NBars 的期间?

向所有能回答的人提问。

因为我坐在这里,我搞不清楚。

 
//--------------------------------------------------------------------+
//ФУНКЦИЯ РАСЧЕТА СРЕДНЕСТАТ.СПРЕДА                    |
//--------------------------------------------------------------------+               
  double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars)
{
   int k;   double N = 0;   double Sum = 0;
   for( k = NBars; k < iBars( Symbol_1, Timeframe); k++)
   {
      if( N == NBars)          break;

      int symb2Shift = iBarShift( Symbol_2, Timeframe,iTime( Symbol_1, Timeframe, k),true);
      if( symb2Shift != -1)
      {
         Sum += iClose( Symbol_1, Timeframe, k) - iClose( Symbol_2, Timeframe, symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return( avarageSpread);
}
 

谢谢你,Getch!我现在要把它付诸行动。

事实证明,在测试器中实现第二个对冲工具的虚拟交易比我最初想象的要容易。

我通过开盘价 建立工作,因为测试者没有返回MarketInfo(Symbol_2,MODE_BID) Bids和Asks;但开盘价和收盘价被测试者正常返回。

现在我用tf=m1来测试它,以获得更好的准确性

对于那些有兴趣和需要的人,这里有我们(rid+leonid553)程序解决方案的片段。

1种类型的对冲开仓(即卖出1+比2)。

我很乐意收到批评意见。

double POINT_1 = MarketInfo( Symbol_1,MODE_POINT); 
double POINT_2 = MarketInfo( Symbol_2,MODE_POINT); 

double  Close_Symbol_1 = iClose( Symbol_1,Period(),1); 
double  Close_Symbol_2 = iClose( Symbol_2,Period(),1);
//-----------------------------------------------------



if ( TradeUP==true && флаг1==0) {//если условия первого хеджа
//соответствуют заданным  
//продаем 1-й символ и покупаем второй символ 
//-------------------------------------
if(Symbol()!= Symbol_2 && IsTesting() == True) {//при тестировании 2-го
// инструмента команду  не выполняем !
if ( NumberOfPositions( Symbol_1,OP_SELL, Magic)<1  ){//нет поз селл по 1-му символу
 SL=0; TP=0;
if( StopLoss>0)   SL= Bid_1+ POINT_1* StopLoss;
if( TakeProfit>0) TP= Bid_1- POINT_1* TakeProfit; 
ti= OpenPosition( Symbol_1, OP_SELL, Lots_1,0 ,0, Magic);
if (OrderSelect( ti, SELECT_BY_TICKET))
 ModifyOrder(-1, SL, TP, clModifySell);  
    }
                   }//if (IsTesting() == True)
//--------------------------------------
if(Symbol()!= Symbol_1 && IsTesting() == True) {//при тестировании 1-го
// инструмента команду не выполняем !
 if ( NumberOfPositions( Symbol_2,OP_BUY, Magic)<1) { //нет  поз бай по 2-му символу 
   SL=0; TP=0;
if( StopLoss>0)   SL= Bid_2- POINT_2* StopLoss;
if( TakeProfit>0) TP= Ask_2+ POINT_2* TakeProfit;   
ti= OpenPosition( Symbol_2, OP_BUY, Lots_2,0,0, Magic);
if (OrderSelect( ti, SELECT_BY_TICKET))
  ModifyOrder(-1, SL, TP, clModifyBuy); 
          }
                         }//if (IsTesting() == True) {         
//--------------------------------------------------                                                    
                                 } //если условия соответствуют заданным

接下来,实际上--虚拟交易机制本身在 "对冲 "关闭块中:

 

接下来,虚拟交易机制本身在 "套期保值关闭 "区块中。

总利润的结算和计算在这里可能是关键性的!

if ( Symbol()== Symbol_1 ){//если прогоняем  1-го инструмент
//--------------Закрываем первый хедж -----------------------------------
//задаем и вычисляем номер бара открытия реальной селл 1-го 
//инструмента - с магиком 1
int N_of_barOP_SELL_1 = NumberOfBarOpenLastPos( Symbol_1,0,OP_SELL, Magic);
//задаем цену открытия этого бара на 2-м инстр., равную  цене открытия 
//виртуальной поз.BUY на втором иструменте(магик)
double OpenBUY_Symbol_2=iOpen( Symbol_2,Period(), N_of_barOP_SELL_1);


if (    ( ( PriceOpenLastPos( Symbol_1,OP_SELL, Magic)- Close_Symbol_1) +
        ( Close_Symbol_2- OpenBUY_Symbol_2) )  >=  CloseProfit* POINT_1 ){
 //если суммарный профит реальной сделки селл 1-го
// инструмента и "виртуальный" профит сделки Бай 2-го
// инструмента (хеджа TradeUP) по факту больше заданного
//значения, то - закрываем реальную OP_SELL 1-го символа и
// виртуальную OP_BUY второго символа
        ClosePosFirstProfit( Symbol_1,OP_SELL, Magic);
        if (IsTesting() != True){// при тестировании команду не выполняем ! 
        ClosePosFirstProfit( Symbol_2, OP_BUY, Magic);
                                  }
                         }
//------------ Закрываем второй хедж -------------------------------------
      аналогично
//----------------------------------------------                          
                         }//if ( Symbol()== Symbol_1 ){

这就是它的全部内容...

以同样的方式,我们在测试器运行中对第二个仪器进行关闭(如果 ( Symbol()== Symbol_2)

使用了F-和Igor Kim(向他 致敬)。

OpenPosition(); - 打开一个姿势。

ModifyOrder(); - 修改位置。

NumberOfPositions() - 位置的数量

PriceOpenLastPos() - 最后一个仓位的开仓价格

ClosePosFirstProfit()- 关闭 头寸

NumberOfBarOpenLastPos() - 返回最后打开的位置的条数