统计仲裁 - 页 4

 

这里有一个例子,说明了统计学准套利的可能性。QC几乎是单身。只是价差的大小和停止平移不允许我们利用它。这种异常值是相当频繁的。


 
ivandurak:
有两个指数:MICEX和RTS,很明显,它们的相关性接近1,在一个完美的时刻,指数的期货成本上升到例如5%,尽管平均值是0.5%。我们买入一个期货,卖出另一个,当它们再次相遇时,我们进行反向操作,固定利润。这是一个简单的例子,在于表面,你不能及时修复它,并利用它为你服务,因为有做市商。另一方面,没有人阻止你形成你自己的投资组合(阅读指数)。现在从36个可能的组合中数出由5个工具组成的可能组合的数量,大概是300000个左右。 手动尝试这么多的组合,我很难想象如何。我没有朝这个方向挖掘,也许有一个合理的依据。

不,我们做任何事情都要靠自己的双手,我们怎么能相信一个机器人来选择我们的策略?)))

至于MICEX和RTS的做市商,他们的分歧和趋同是由于卢布的加强或减弱。MICEX有时会更低,有时会更高,甚至达到6位数,这不是在某一时刻发生的,而是在几天内发生的,因为RUR和市场的巨大波动性,这种变化经常发生。应该自动获利,在这里你可以设置平台收盘百分比收益率或存款的货币,或使用镊子。一切正常。许多外汇交易商或SFD上有EUROLLAR和BRAND。利润也可以用手来收取)。

 

你能告诉我需要改变什么吗,以便从指标的第一个开始就充分显示价差。

//+------------------------------------------------------------------+
//|                                                        Test7.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright   "2009, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property description "Test7"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID

//--- input parametrs

input string         Symbol1_Name = "EURUSD"; // Нога BUY
input string         Symbol2_Name = "GBPUSD"; // Нога SELL
input double         Symbol1_Vol  = 0.01;       
input double         Symbol2_Vol  = 0.02;        


//---- buffers
double         ExtStdDevBuffer[];

//--- global variables
double Symbol1_K, Symbol2_K;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
  //Определяем балансовые коэффициенты каждого инструмента
  Symbol1_K=SymbolInfoDouble(Symbol1_Name, SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(Symbol1_Name, SYMBOL_TRADE_TICK_SIZE);
  Symbol2_K=SymbolInfoDouble(Symbol2_Name, SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(Symbol2_Name, SYMBOL_TRADE_TICK_SIZE);
  
//---- define indicator buffers as indexes
   SetIndexBuffer(0,ExtStdDevBuffer,INDICATOR_DATA);
   ArraySetAsSeries(ExtStdDevBuffer,true);                             // индексация массива как таймсерия
   PlotIndexSetString(0,PLOT_LABEL,"SPREAD");

  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
  //--- variables of indicator
  int i, limit;
  
   if(prev_calculated>0)
     {limit=1;}
   else
     {limit=prev_calculated;}
    
  //--- main cycle
  for(i=limit-1;i>=0;i--)
  {
      ExtStdDevBuffer[i] = (Symbol1_Vol*Symbol1_K*iClose(Symbol1_Name,i) -  Symbol2_Vol*Symbol2_K*iClose(Symbol2_Name,i));
  }
  
  Comment("Symbol1_K =",Symbol1_K,"\n",
          "Symbol2_K =",Symbol2_K,"\n",
          "close_1[1] =",iClose(Symbol1_Name,1),"\n",
          "close_2[1] =",iClose(Symbol2_Name,1),"\n",
          "close[1] =",close[rates_total-1]);
          
          
   
  return(rates_total);
}

//-----------------------------------------------------------------------------------------
//+------------------------------------------------------------------+
//|Возвращает значение цены закрытия указанного параметром shift     | 
//|бара с соответствующего графика (symbol, timeframe).              |
//|В случае ошибки функция возвращает 0.                             |
//+------------------------------------------------------------------+
double iClose(string Symb,int Shift)
  {
   double Array[1];
   int Copied=CopyClose(Symb,PERIOD_CURRENT,Shift,1,Array);
   if(Copied!=1) return(0);
   return(Array[0]);
  }


在图片中,分支作者的底部传播指标。

附加的文件:
Test7.mq5  4 kb
 

咳咳,我接一下这个话题。

在这一点上,我可以说,对两个专业的分析相当于对它们的交叉分析。

如果有任何反对意见,我很乐意听取。

在这方面,MM是第一位的。让我们开个头脑风暴会议。

谁认为什么是震荡器的最佳交易策略?

 
Heroix:

咳咳,我接一下这个话题。

在这一点上,我可以说,对两个专业的分析相当于对它们的交叉分析。

如果有任何反对意见,我很乐意听取。

在这方面,MM是第一位的。让我们开个头脑风暴会议。

谁认为什么是震荡器的最佳交易策略?

我在这个问题上挖了一点。我认为,我们不需要分析主力,而是分析他们的总资产(投资组合资产):在主力参与的不同权重系数下,投资组合和交叉的差异。一般来说,我们应该选择具有这种权重系数的工具组合,以便它们的总股本将具有最小的平均平方偏差和最大的直线近似度。至于这种组合的应用。如果股权的线性回归是水平的,我们就从通道的边界买入(在这种情况下,RMS值应该是最大的)。如果股权有一个趋势倾斜的角度,即使对我来说也很清楚。问题是,在优化期过后,投资组合股权能保持多长时间的属性。我将开始工作,并尝试稍后画出一个指标。
 
就是这样,合成物几乎立即飞出了通道......我可以用0.5的概率假设。这表明,与经典的单一工具交易相比,没有任何优势。
 
ivandurak:
一般来说,有必要选择一个具有这样的权重系数的工具组合,使其总权益具有最小的标准偏差,最接近于一条直线。
这是这里 已经解决的任务。
Recycle2 - MQL4 Code Base
  • www.mql5.com
Recycle2 - MQL4 Code Base: технические индикаторы для МТ4
 
Heroix:

在这一点上,我可以说,分析两个专业相当于分析他们的交叉。

因此

hrenfx:

仅对EURUSD^k1 * GBPUSD^k2来说是真的,其中k1 = 0.5,k2 = -0.5。

在其他比率(|k1|+|k2|=1)下,你的说法是不正确的。

 
hrenfx:
这正是这里 要解决的问题。
几乎是的。只是我想用几种不同的方式来做。不幸的是,那里的代码没有注释,所以最好是自己写。从视频中可以看出,总结出来的股权对静止性有一些惯性。在视频中注意--在找到合成通道后,接下来就开始了趋势。
 
你不应该看视频,而是自己用鼠标移动建筑间隔。幸运的是,工具包立即(没有滞后)重建了合成,也显示了它在构建区间之外的情况(红色三角形是合成在构建区间之外的第一个过零点)。