Ticaret Olasılığı - sayfa 11

 
Aynı çalışma, ancak artışların normal dağılıma göre oluşturulduğu üretilen fiyatlar üzerinde.


Senaryo:

 #property show_inputs

#define MAX_AMOUNT 250000
#define MAX_RAND 32767.0

extern int BeginPips = 100 ;
extern int EndPips = 1000 ;
extern int StepPips = 10 ;
extern int AmountBars = 100000 ;
extern int Deviation = 15 ;

int PricesHigh[MAX_AMOUNT], PricesLow[MAX_AMOUNT];

double GetRand()
{
  return ( 2 * MathRand () / MAX_RAND - 1 );
}

void GetRandGauss( int Deviation, int & Rand1, int & Rand2 )
{
  double X1, X2, W = 2 ;
  
  while (W >= 1 )
  {
    X1 = GetRand();
    X2 = GetRand();
    
    W = X1 * X1 + X2 * X2;
  }
  
  W = MathSqrt (- 2 * MathLog (W) / W);
  
  Rand1 = X1 * W * Deviation;
  Rand2 = X2 * W * Deviation;
  
  if (Rand1 < Rand2)
  {
    int Tmp = Rand1;
    
    Rand1 = Rand2;
    Rand2 = Tmp;
  }
  
  return ;
}

void GetPrices( int Deviation, int AmountBars )
{
  int Pos = 0 ;
  int Rand1, Rand2, Avg = 0 ;
  
  MathSrand ( TimeLocal ());
  
  while (Pos < AmountBars)
  {
    GetRandGauss(Deviation, Rand1, Rand2);
    
    PricesHigh[Pos] = Avg + Rand1;
    PricesLow[Pos] = Avg + Rand2;
    Avg = (PricesLow[Pos] + PricesHigh[Pos]) / 2 ;
        
    Pos++;
  }
  
  return ;
}

int GetZigZagCount( int Pips, int AmountBars )
{
  bool FlagUP = TRUE;
  int i, Min, Max, Count = 0 ;
  int PriceHigh, PriceLow;
  
  Min = PricesHigh[ 0 ];
  Max = PricesLow[ 0 ];
  
  for (i = 0 ; i < AmountBars; i++)
  {
    PriceHigh = PricesHigh[i];
    PriceLow = PricesLow[i];
  
    if (FlagUP)
    {
      if (PriceHigh > Max)
        Max = PriceHigh;
      else if (Max - PriceLow >= Pips)
      {
        FlagUP = FALSE;
        Min = PriceLow;
        Count++;
      }
    }
    else // (FlagUP == FALSE)
    {
      if (PriceLow < Min)
        Min = PriceLow;
      else if (PriceHigh - Min >= Pips)
      {
        FlagUP = TRUE;
        Max = PriceHigh;
        Count++;
      }
    }
  }
  
  return (Count);
}

void start()
{
  int Pips, Amount;
  int handle;
  
  GetPrices(Deviation, AmountBars);
  
  handle = FileOpen ( "Analyse.prn" , FILE_WRITE );
  
  for (Pips = BeginPips; Pips <= EndPips; Pips += StepPips)
  {
    Amount = GetZigZagCount(Pips, AmountBars);
    
    FileWrite (handle, Pips + " " + Amount);
  }
  
  FileClose (handle);
  
  return ;
}

Sonuç, büyük ölçüde Sapma parametresine bağlıdır - yayılma (standart sapma).
ׂ

Aynı grafikler:
ׂ
ׂ
ׂ
ׂ

Varsayılan parametrelerle, karede benzer bir bağımlılık elde edilir. Ancak Deviation parametresi yana değiştirildiğinde tamamen bozuluyor.
Binbaşı piyasa fiyatlarını kontrol ettim, kareye bağımlılık devam ediyor.
 
getch >> :
Повтор :

Советник считает количество колен ЗигЗага (не менее Pips ) и записывает в файл:
Запускается в тестере с оптимизацией:


График зависимости количества колен от их мин. размера ( Pips ):


Графики зависимости отношения вероятностей TP и SL ( p(SL) / p(TP) ) при отношении TP / SL = Koef от размера SL

Bu arada, logaritmik ölçekte grafik daha net olacaktır. TP ve SL arasındaki ilişkiye gelince, aynı test cihazında bir kafa kafaya kontrol düzenlemek, örneğin oranlarını bir parametre haline getirmek, yorumlamada daha kolay ve daha nettir. Nedense, bana öyle geliyor ki, rastgele girişler için, işlemin ortalama sonucu, elbette eksi işaretiyle her zaman yayılma eğiliminde olacaktır.

 
Candid >> :

Bu arada, logaritmik ölçekte grafik daha net olacaktır.

 
Ne düşündüğünüzü anlamıyorum ... TP ve SL'ye ulaşma olasılığı?
Yani sadece...
TP Olasılığı = (SL - spread) / (TP + SL)
Olasılık SL = (TP + spread) / (TP + SL)
 
Candid >> :

TP ve SL arasındaki ilişkiye gelince, aynı test cihazında önden bir kontrol ayarlamak yorumlamada daha kolay ve daha net...

Bir gönderiyi başka bir konudan kopyaladığım için eski tanımlamalar kaldı: TP ve SL . Bunları Pips1 ve Pips2 olarak yorumlamakta fayda var. Ana sonuç Hipotezde formüle edilmiştir.

 
kharko писал(а) >>
Ne düşündüğünüzü anlamıyorum ... TP ve SL'ye ulaşma olasılığı?
Yani sadece...
TP Olasılığı = (SL - spread) / (TP + SL)
Olasılık SL = (TP + spread) / (TP + SL)


Kontrol edelim - TP = 20, SL = 20 => P(TP)=(SL-2)/(20+20) = 18/40 = 0.45, P(SL)=(TP+2)/(TP+SL ) =(20+2)/(20+20)=22/40 = 0,55

Yani eşit değiller :))))
 
getch >> :

Bir gönderiyi başka bir konudan kopyaladığım için eski tanımlamalar kaldı: TP ve SL . Bunları Pips1 ve Pips2 olarak yorumlamakta fayda var. Ana sonuç Hipotezde formüle edilmiştir.

Doğru yorum için gönderi düzeltildi.

 
SProgrammer >> :


Kontrol edelim - TP = 20, SL = 20 => P(TP)=(SL-2)/(20+20) = 18/40 = 0.45, P(SL)=(TP+2)/(TP+SL ) =(20+2)/(20+20)=22/40 = 0,55

Yani eşit değiller :))))

Bir pozisyon açtığınızda, zaten spread miktarı kadar zarardasınız....

 
kharko писал(а) >>

Bir pozisyon açtığınızda, zaten spread miktarı kadar zarardasınız....


Peki ya olasılık?
 
SProgrammer >> :


Peki ya olasılık?

Fiyatın geçmesi gereken mesafeler eşitse, olasılık 0,5'e eşittir. SL-yayılımı=TP+yayılımı

Neden: