Arbitrage statistique - page 4

 

Voici un exemple de la possibilité de quasi-arbitrage statistique. QC est pratiquement célibataire. Seule l'importance de l'écart et du nivellement d'arrêt ne nous permet pas d'en tirer parti. De telles valeurs aberrantes sont assez fréquentes.


 
ivandurak:
Il y a deux indices : MICEX et RTS, il est clair qu'ils ont une corrélation proche de 1, dans un moment parfait le coût des futures sur les indices monte à disons 5%, bien que la valeur moyenne soit de 0,5%. Nous achetons un contrat à terme et en vendons un autre, et quand ils se rencontrent à nouveau, nous faisons une opération inverse et fixons le profit. C'est un exemple simple qui se trouve à la surface et vous ne pouvez pas le fixer à temps et l'utiliser à votre avantage, car il y a des teneurs de marché. En revanche, personne ne vous empêche de constituer votre propre portefeuille (lire indice). Maintenant, comptez le nombre de portefeuilles possibles composés de 5 instruments parmi les 36 possibles, soit environ 300 000. Essayez autant de combinaisons manuellement, je peux difficilement imaginer comment. Je n'ai pas creusé dans cette direction et peut-être y a-t-il une base rationnelle.

Non, nous faisons tout avec nos mains, comment pouvons-nous faire confiance à un robot pour choisir notre stratégie ? )))

Quant aux teneurs de marché du MICEX et du RTS, leur divergence et leur convergence sont dues au renforcement ou à l'affaiblissement du rouble,Le MICEX peut être supérieur ou inférieur de 6 chiffres, et cela ne se produit pas en un seul moment mais en plusieurs jours, en raison de la grande volatilité de la RUR et des marchés, ce changement se produit assez souvent. Le profit doit être pris automatiquement, où vous pouvez définir le rendement du pourcentage de fermeture de la plateforme ou la devise du dépôt, ou encore utiliser des pincettes. Tout fonctionne. De nombreux courtiers en devises ou SFD sur eux ont EUROLLAR et BRAND. Le bénéfice peut également être collecté avec les mains).

 

Pouvez-vous me dire ce qu'il faut changer pour que le spread soit correctement affiché dès le premier démarrage de l'indicateur.

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


Sur les photos, l'indicateur d'écart inférieur de l'auteur de la branche.

Dossiers :
Test7.mq5  4 kb
 

Ahem, je vais reprendre le fil.

A ce stade, je peux affirmer que l'analyse des deux majors revient à une analyse de leur croix :

S'il y a des objections, je suis heureux de les entendre.

À cet égard, le MM vient en premier. Faisons une séance de brainstorming.

Qui pense que c'est la meilleure tactique de trading pour les oscillateurs ?

 
Heroix:

Ahem, je vais reprendre le fil.

A ce stade, je peux affirmer que l'analyse des deux majors revient à une analyse de leur croix :

S'il y a des objections, je suis heureux de les entendre.

À cet égard, le MM vient en premier. Faisons une séance de brainstorming.

Qui pense que c'est la meilleure tactique de trading pour les oscillateurs ?

J'ai creusé un peu le sujet. Je pense qu'il n'est pas nécessaire d'analyser les majors mais leurs fonds propres totaux (fonds propres du portefeuille) : la différence entre le portefeuille et le croisement à différents coefficients de pondération de la participation des majors. En général, nous devrions sélectionner un portefeuille d'instruments dont les coefficients de pondération sont tels que leurs capitaux propres cumulés présentent le plus petit écart quadratique moyen et la plus grande approximation d'une ligne droite. Quant à l'application d'un tel portefeuille. Si la régression linéaire de l'équité est horizontale, nous achetons aux limites du canal (dans ce cas, la valeur RMS doit être maximale). Si l'équité a un angle d'inclinaison de tendance, c'est clair même pour moi. La question reste de savoir combien de temps l'équité du portefeuille conserve ses propriétés après la période d'optimisation. Je vais me mettre au travail et essayer de dessiner un indicateur un peu plus tard.
 
Justement, le synthétique s'envole presque immédiatement hors du canal... je peux supposer avec une probabilité de 0,5. Cela suggère qu'il n'y a pas d'avantages par rapport au trading classique sur un seul instrument.
 
ivandurak:
En général, il est nécessaire de sélectionner un portefeuille d'instruments dont les coefficients de pondération sont tels que leurs capitaux propres agrégés présentent l'écart type le plus faible, soit l'approximation la plus proche d'une ligne droite.
C'est la tâche qui a été résolue ici.
Recycle2 - MQL4 Code Base
  • www.mql5.com
Recycle2 - MQL4 Code Base: технические индикаторы для МТ4
 
Heroix:

A ce stade, je peux affirmer qu'analyser les deux majors revient à analyser leur croix :

D'où:

hrenfx:

Vrai seulement pour EURUSD^k1 * GBPUSD^k2, où k1 = 0,5 et k2 = -0,5.

Pour d'autres rapports (|k1| + |k2| = 1), votre affirmation est incorrecte.

 
hrenfx:
C'est exactement le problème résolu ici.
Presque oui. Seulement je veux le faire avec plusieurs variations. Malheureusement, le code n'y est pas commenté, il est donc préférable de l'écrire soi-même. Comme on peut le voir sur la vidéo, l'équité résumée a une certaine inertie sur la stationnarité. Note sur la vidéo - après avoir trouvé le canal synthétique, la tendance commence ensuite.
 
Vous ne devez pas regarder la vidéo, mais déplacer vous-même l'intervalle de construction avec la souris. Heureusement, la boîte à outils reconstruit immédiatement (sans décalage) le synthétique, le montrant également au-delà de l'intervalle de construction (les triangles rouges sont le premier passage à zéro du synthétique en dehors de l'intervalle de construction).