Arbitrato statistico - pagina 4

 

Ecco un esempio della possibilità di quasi-arbitraggio statistico. QC è praticamente single. Solo la dimensione dello spread e il livellamento dello stop non ci permettono di approfittarne. Questi outlier sono abbastanza frequenti.


 
ivandurak:
Ci sono due indici: MICEX e RTS, è chiaro che sono correlati vicino a 1, in un momento perfetto il costo dei futures sugli indici sale fino a dire 5%, anche se il valore medio è 0,5%. Compriamo un futures e ne vendiamo un altro, e quando si incontrano di nuovo facciamo un'operazione inversa e fissiamo il profitto. È un semplice esempio che si trova sulla superficie e non si può risolvere in tempo e usarlo a proprio vantaggio, perché ci sono i market maker. D'altra parte nessuno ti impedisce di formare il tuo portafoglio (leggi indice). Ora contate il numero di possibili portafogli composti da 5 strumenti tra i 36 possibili, all'incirca 300000. Provate così tante combinazioni manualmente, non riesco a immaginare come. Non ho scavato in questa direzione e forse c'è una base razionale.

No, facciamo tutto con le nostre mani, come possiamo fidarci di un robot per scegliere la nostra strategia? )))

Per quanto riguarda i market maker MICEX e RTS, la loro divergenza e convergenza è dovuta al rafforzamento o all'indebolimento del rublo,Il MICEX potrebbe essere anche a 6 cifre più alto o più basso, e non succede in un solo momento ma in diversi giorni, a causa della grande volatilità del RUR e dei mercati questo cambiamento avviene abbastanza spesso. Il profitto dovrebbe essere preso automaticamente, dove è possibile impostare il rendimento percentuale di chiusura della piattaforma o la valuta del deposito, o utilizzando le pinzette. Tutto funziona. Molti commercianti di forex o SFD su di loro hanno EUROLLAR e BRAND. Il profitto può anche essere raccolto con le mani).

 

Potete dirmi per favore cosa deve essere cambiato in modo che lo spread sia visualizzato adeguatamente dal primo avvio dell'indicatore.

//+------------------------------------------------------------------+
//|                                                        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]);
  }


Nelle immagini, l'indicatore di diffusione inferiore dell'autore del ramo.

File:
Test7.mq5  4 kb
 

Riprendo il filo.

A questo punto, posso sostenere che l'analisi delle due major equivale a un'analisi della loro croce:

Se ci sono obiezioni, sono felice di sentirle.

A questo proposito, MM viene prima di tutto. Facciamo una sessione di brainstorming.

Chi pensa che sia la migliore tattica di trading per gli oscillatori?

 
Heroix:

Riprendo il filo.

A questo punto, posso sostenere che l'analisi delle due major equivale a un'analisi della loro croce:

Se ci sono obiezioni, sono felice di sentirle.

A questo proposito, MM viene prima di tutto. Facciamo una sessione di brainstorming.

Chi pensa che sia la migliore tattica di trading per gli oscillatori?

Ho scavato un po' su questo argomento. Imho, non abbiamo bisogno di analizzare le majors ma il loro patrimonio totale (portfolio equity): la differenza tra il portfolio e la croce a diversi coefficienti di peso della partecipazione delle majors. In generale, dovremmo selezionare un portafoglio di strumenti con tali coefficienti di peso in modo che il loro capitale aggregato abbia il più piccolo scarto quadratico medio e la maggiore approssimazione a una linea retta. Per quanto riguarda l'applicazione di un tale portafoglio. Se la regressione lineare del capitale è orizzontale, compriamo dai confini del canale (in questo caso, il valore RMS dovrebbe essere massimo). Se l'equità ha un angolo di inclinazione di tendenza, è chiaro anche a me. Rimane la questione di quanto a lungo l'equity del portafoglio mantenga le sue proprietà dopo il periodo di ottimizzazione. Mi metterò al lavoro e cercherò di disegnare un indicatore un po' più tardi.
 
Proprio così, il sintetico vola quasi immediatamente fuori dal canale... posso supporre con una probabilità dello 0,5. Questo suggerisce che non ci sono vantaggi rispetto al classico trading di un singolo strumento.
 
ivandurak:
In generale, è necessario selezionare un portafoglio di strumenti con coefficienti di ponderazione tali che il loro patrimonio complessivo abbia la deviazione standard più piccola, l'approssimazione più vicina a una linea retta.
Questo è il compito che è stato risolto qui.
Recycle2 - MQL4 Code Base
  • www.mql5.com
Recycle2 - MQL4 Code Base: технические индикаторы для МТ4
 
Heroix:

A questo punto, posso sostenere che analizzare le due major equivale ad analizzare la loro croce:

Quindi:

hrenfx:

Vero solo per EURUSD^k1 * GBPUSD^k2, dove k1 = 0,5 e k2 = -0,5.

In altri rapporti (|k1| + |k2| = 1) la tua affermazione non è corretta.

 
hrenfx:
Questo è esattamente il problema risolto qui.
Quasi sì. Solo che voglio farlo con diverse varianti. Purtroppo il codice non è commentato, quindi è meglio scriverlo da soli. Come si può vedere dal video, l'equità riassunta ha una certa inerzia sulla stazionarietà. Nota sul video - dopo che il canale sintetico è stato trovato, il trend inizia dopo.
 
Non dovreste guardare il video, ma spostare voi stessi l'intervallo di costruzione con il mouse. Fortunatamente, il toolkit ricostruisce immediatamente (senza ritardi) il sintetico, mostrandolo anche oltre l'intervallo di costruzione (i triangoli rossi sono il primo attraversamento dello zero del sintetico fuori dall'intervallo di costruzione).