Pair trading et arbitrage multidevises. L'épreuve de force. - page 15

 
mytarmailS #:

Je m'excuse d'avoir été imprécis dans ma question, je voulais dire quel spread (commission) mettez-vous dans le calcul de la courbe de profit....

réel ou constant.


Je trace une régression linéaire entre deux actifs (classiques).

Merci de me donner un exemple. Je ne sais pas exactement sur quel principe cet indicateur est calculé. Je ne me suis pas vraiment penché sur la question.

 
Roman Poshtar #:

Veuillez me donner un exemple. Je ne sais pas exactement sur quel principe cet indicateur est calculé. Je n'ai pas beaucoup appris à ce sujet.

Ne parlons pas de tout en même temps.

Ma question est toujours d'actualité

 
Roman Shiredchenko #:

Si vous le voulez bien, écrivez la formule pour équilibrer les volumes....

Qu'est-ce que la divergence des indicateurs conventionnels et comment l'identifier ?

En tant que fonction - MT4

-------------------------------------

//+-----------------------------+
enum BalLot {     // Balance Lot Size
     BLS1 = 0,    // BalanceVolatility
     BLS2 = 1     // BalancePrice
}; 

extern string    DIFF_PairI           = "EURUSD"; 
extern string    DIFF_PairII          = "GBPUSD";  

extern string    LOT_OPTIONS          = "===================================";
extern double    LotSize              = 0.1;
extern BalLot    BalanceLotSize       = BLS1;
extern int       VOL_PeriodATR        = 144; 

//+==================================================================+
//|     Возвращает сбалансированный / уравновешенный размер лота     |
//+==================================================================+
double getLotSize(string CurrentPair)  {

      //+-------------------------------+
      // Определяем балансовые коэффициенты каждого инструмента
      double kVol1 = SymbolInfoDouble(DIFF_PairI, SYMBOL_TRADE_TICK_VALUE)  / SymbolInfoDouble(DIFF_PairI, SYMBOL_TRADE_TICK_SIZE);
      double kVol2 = SymbolInfoDouble(DIFF_PairII, SYMBOL_TRADE_TICK_VALUE) / SymbolInfoDouble(DIFF_PairII, SYMBOL_TRADE_TICK_SIZE);

      //--------------------------------------------------------------------  
      // Рассчитываются не абсолютные значения, а относительные, приведенные
      // к первому инструменту. 
  
      double Lot_Volat1 = LotSize, Lot_Volat2 = 0,     // Объем, рассчитанный по волатильности
             Lot_Price1 = LotSize, Lot_Price2 = 0,     // Объем, рассчитанный по цене открытия
             var1;
  
      //+=======================================+
      //| рассчитываем объемы по волатильности  |
      //+---------------------------------------+
      if ( iBars(DIFF_PairI, 0) < VOL_PeriodATR+1 )   {
           if  (Language == Lang1) Message("LOT: Calculation Not possible, Download quotes - "+DIFF_PairI);
           else                    Message("LOT: Расчет Невозможен, Подкачайте котировки-"+DIFF_PairI);        
           return(0);
      }
      if ( iBars(DIFF_PairII, 0) < VOL_PeriodATR+1 )   {
           if  (Language == Lang1) Message("LOT: Calculation Not possible, Download quotes - "+DIFF_PairII);
           else                    Message("LOT: Расчет Невозможен, Подкачайте котировки-"+DIFF_PairII);        
           return(0);
      }

      if (BalanceLotSize == BLS1)  { 
          var1  = Lot_Volat1*kVol1*iATR(DIFF_PairI,0,VOL_PeriodATR,1);
          if (kVol2 != 0 && iATR(DIFF_PairII,0,VOL_PeriodATR,1) != 0)  {
              Lot_Volat2 = var1/kVol2/iATR(DIFF_PairII,0,VOL_PeriodATR,1);
          }else{
              LotMessage();
              return(0);
          }
          //+---------------------+
          if (Lot_Volat2 < LotSize)  {
              if (Lot_Volat2 != 0)   {
                  Lot_Volat1 *= Lot_Volat1/Lot_Volat2; 
              }else{
                  LotMessage();
                  return(0);              
              }
              Lot_Volat2  = LotSize;
          }
          //+---------------------+
          if (CurrentPair == DIFF_PairI) return( NormalizeDouble(Lot_Volat1, 2) );//return( normalizeLotSize(DIFF_PairI,  Lot_Volat1) );
          else                           return( NormalizeDouble(Lot_Volat2, 2) );//return( normalizeLotSize(DIFF_PairII, Lot_Volat2) );
      }
   
      //+=======================================+
      //| рассчитываем объемы по цене открытия  |
      //+---------------------------------------+
      if (BalanceLotSize == BLS2) {
          var1  = Lot_Price1*kVol1*iOpen(DIFF_PairI,0,0);
          if (kVol2 != 0 && iOpen(DIFF_PairII,0,0) != 0)   {
              Lot_Price2 = var1/kVol2/iOpen(DIFF_PairII,0,0);
          }else{
              LotMessage();
              return(0);          
          }
          //+----------------------+
          if (Lot_Price2 < LotSize)  {
              if (Lot_Price2 != 0)   {
                  Lot_Price1 *= Lot_Price1/Lot_Price2; 
              }else{
                  LotMessage();
                  return(0);              
              }
              Lot_Price2  = LotSize;
          }  
          //+----------------------+
          if (CurrentPair == DIFF_PairI) return( NormalizeDouble(Lot_Price1, 2) );//return( normalizeLotSize(DIFF_PairI,  Lot_Price1) );
          else                           return( NormalizeDouble(Lot_Price2, 2) );//return( normalizeLotSize(DIFF_PairII, Lot_Price2) );
      }

      //+-------------------------------+
      return(0);
}
 
Sergiy Podolyak #:

En tant que fonction - MT4

-------------------------------------


Je ne connais pas les termes utilisés dans votre question. Je comprends pour les lots, merci. Qu'en est-il de l'écart ?

 
Sergiy Podolyak #:
En tant que fonction - MT4
Merci - je vais le copier dans mon travail.
 
En attendant une réponse de Sergiy Podolyak, je vais ajouter un hibou sur les stochastiques et terminer la version 3. Pour l'instant je vais ajouter la clôture sur les bénéfices, voir ce que cela va donner. Au modérateur, merci de mettre la version 3 dans l'en-tête.
Sergiy Podolyak
Sergiy Podolyak
  • 2018.12.05
  • www.mql5.com
Профиль трейдера
 

Selon la version 3, apparemment ce n'est pas fini, nous devons travailler avec le deuxième indicateur du kit. Continuons. Dans une heure, il y aura la version V3_1 avec la clôture sur les bénéfices.

Je demande également à tous les participants de proposer leurs variantes pour déterminer les écarts, les paquets, calculer le spread, etc.

Nous n'allons pas mâcher longtemps, nous écrivons un hibou, nous le lançons dans le testeur et nous regardons.

 
Roman Poshtar #:

Selon la version 3, apparemment ce n'est pas fini, nous devons travailler avec le deuxième indicateur du kit. Continuons. Dans une heure, nous verrons la version V3_1 avec clôture sur les bénéfices.

Je demande également à tous les participants de proposer leurs variantes pour déterminer les divergences, les paquets, le calcul de l'écart, etc.

Nous n'allons pas mâcher longtemps, nous écrivons un hibou, nous le jetons dans le testeur et nous regardons.

Trader le cross est la même chose que trader le major. Je vous l'avais bien dit ! Et ces paires qui ont divergé peuvent ne jamais se remettre ensemble, mais diverger encore plus. Il faut trader une paire et se laisser guider par deux paires complètement différentes mais d'un pays géographiquement proche.
 
Vladislav Vidiukov #:
Trader un croisement est la même chose que trader une majeure. Je vous l'avais bien dit ! Et ces paires qui ont divergé peuvent ne jamais se rejoindre, mais diverger encore plus. Il faut trader 1 paire et se laisser guider par 2 paires complètement différentes mais d'un pays géographiquement proche.

J'ai testé sur 2 paires et sur des croisements les résultats sont différents. Deux paires sont meilleures, je ne sais pas pourquoi. Peut-être que sur les exotiques l'écart est trop important. Merci au modérateur pour sa rapidité. Je continue à réfléchir )

 
Roman Poshtar #:

J'ai testé 2 paires et les croisements ont des résultats différents. Deux sont meilleurs, je ne sais pas pourquoi. Peut-être que sur les exotiques l'écart est trop important. Merci au modérateur pour sa rapidité. Je pense plus loin )

La raison est qu'il y a plus de mouvement sur 2 paires, car il n'est pas "mangé".
Raison: