Pair trading e arbitraggio multicurrency. La resa dei conti. - pagina 15

 
mytarmailS #:

Mi scuso per essere stato impreciso nella mia domanda, intendevo dire quale spread (commissione) mettete nel calcolo della curva di profitto....

reale o costante.


Traccio una regressione lineare tra due asset (classici).

La prego di fornirmi un esempio. Non so esattamente su quale principio venga calcolato questo indicatore. Non ho mai approfondito la questione.

 
Roman Poshtar #:

Vi prego di fornirmi un esempio. Non so esattamente su quale principio venga calcolato questo indicatore. Non ho imparato molto al riguardo.

Non parliamo di tutto in una volta.

La mia domanda è ancora pertinente

 
Roman Shiredchenko #:

Se non vi dispiace, scrivete la formula per il bilanciamento dei volumi....

Che cos'è la divergenza degli indicatori convenzionali e come identificarla?

Come funzione - 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 #:

Come funzione - MT4

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


Non conosco i termini della sua domanda. Ho capito i lotti, grazie. E per quanto riguarda lo spread?

 
Sergiy Podolyak #:
Come funzione - MT4
Grazie - lo copierò per me nel mio lavoro.
 
In attesa di una risposta da parte di Sergiy Podolyak, aggiungerò un gufo sugli stocastici e completerò la versione 3. Per ora aggiungerò la chiusura sul profitto, per vedere cosa verrà fuori. Al moderatore, per favore inserisci la versione 3 nell'intestazione.
Sergiy Podolyak
Sergiy Podolyak
  • 2018.12.05
  • www.mql5.com
Профиль трейдера
 

Secondo la versione 3, a quanto pare questa non è la fine, dobbiamo lavorare con il secondo indicatore del kit. Andiamo avanti. Tra un'ora sarà disponibile la versione V3_1 con chiusura in profitto.

Chiedo inoltre a tutti i partecipanti di proporre le loro varianti per determinare le discrepanze, i bundle, il calcolo dello spread, ecc.

Non masticheremo a lungo, scriveremo un gufo, lo lanceremo nel tester e staremo a guardare.

 
Roman Poshtar #:

Secondo la versione 3, a quanto pare questa non è la fine, dobbiamo lavorare con il secondo indicatore del kit. Andiamo avanti. Tra un'ora sarà disponibile la versione V3_1 con chiusura in profitto.

Chiedo inoltre a tutti i partecipanti di proporre le loro varianti per determinare le discrepanze, i bundle, il calcolo dello spread, ecc.

Non masticheremo a lungo, scriviamo un gufo, lo gettiamo nel tester e guardiamo.

Il trading cross è uguale al trading major. Ve l'avevo detto! E le coppie che hanno divergenza possono non tornare mai insieme, ma divergere ancora di più. Bisogna fare trading su una coppia e farsi guidare da due coppie completamente diverse ma provenienti da un paese geograficamente vicino.
 
Vladislav Vidiukov #:
Fare trading su un cross è come fare trading su una major. Ve l'avevo detto! E le coppie che hanno divergenza possono non riunirsi mai, ma divergere ancora di più. È necessario negoziare 1 coppia e farsi guidare da 2 coppie completamente diverse ma provenienti da un paese geograficamente vicino.

Ho fatto dei test su 2 coppie e sui cross i risultati sono diversi. Due coppie sono migliori, non so per quale motivo. Forse su esotici lo spread è troppo grande. Grazie al moderatore per la tempestività. Penso che più avanti )

 
Roman Poshtar #:

Ho fatto il test su 2 coppie e gli incroci hanno risultati diversi. Due sono migliori, non so quale sia il motivo. Forse su esotici uno spread troppo grande. Grazie al moderatore per la tempestività. Penso che più avanti )

Il motivo è che c'è più movimento su 2 coppie, in quanto non è "mangiato".
Motivazione: