거래 확률 - 페이지 11

 
동일한 연구이지만 생성된 가격에 대해 정규 분포에 따라 증분이 형성됩니다.


스크립트:

 #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 ;
}

결과는 편차 매개변수인 스프레드(표준 편차)에 크게 의존합니다.
앗

동일한 차트:
앗
앗
앗
앗

기본 매개 변수를 사용하면 사각형에 대해 유사한 종속성을 얻을 수 있습니다. 그러나 Deviation 매개변수가 측면으로 변경되면 완전히 깨집니다.
메이저 시세를 확인해보니 스퀘어 의존도는 여전했다.
 
getch >> :
Повтор :

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


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


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

그런데 로그 스케일에서는 그래프가 더 명확해집니다. TP와 SL 사이의 관계에 관해서는, 예를 들어 비율을 매개변수로 만드는 동일한 테스터에서 정면 확인을 정렬하는 것이 해석상 더 쉽고 모호하지 않습니다. 어떤 이유에서인지 무작위 항목의 경우 트랜잭션의 평균 결과는 물론 마이너스 기호와 함께 항상 스프레드로 가는 경향이 있는 것 같습니다.

 
Candid >> :

그런데 로그 스케일에서는 그래프가 더 명확해집니다.

 
무슨 생각을 하는지 모르겠다... TP와 SL 달성 확률은?
그래서 그냥...
TP의 확률 = (SL - 스프레드) / (TP + SL)
확률 SL = (TP + 스프레드) / (TP + SL)
 
Candid >> :

TP와 SL의 관계에 관해서는 같은 테스터에서 정면 체크를 하는 것이 해석상 더 쉽고 모호하지 않습니다...

다른 주제의 게시물을 복사했기 때문에 이전 명칭은 TPSL 로 유지되었습니다. Pips1Pips2 로 해석할 가치가 있습니다. 주요 결론은 가설 에 공식화되어 있습니다.

 
kharko писал(а) >>
무슨 생각을 하는지 모르겠다... TP와 SL 달성 확률은?
그래서 그냥...
TP의 확률 = (SL - 스프레드) / (TP + SL)
확률 SL = (TP + 스프레드) / (TP + SL)


확인합시다 - 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

즉, 그들은 같지 않습니다 :))))
 
getch >> :

다른 주제의 게시물을 복사했기 때문에 이전 명칭은 TPSL 로 유지되었습니다. Pips1Pips2 로 해석할 가치가 있습니다. 주요 결론은 가설 에 공식화되어 있습니다.

정확한 해석을 위해 을 수정했습니다.

 
SProgrammer >> :


확인합시다 - 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

즉, 그들은 같지 않습니다 :))))

포지션을 열면 이미 스프레드의 양만큼 손해를 보고 있습니다....

 
kharko писал(а) >>

포지션을 열면 이미 스프레드의 양만큼 손해를 보고 있습니다....


그리고 확률은 어떻습니까?
 
SProgrammer >> :


그리고 확률은 어떻습니까?

가격이 통과해야 하는 거리가 동일한 경우 확률은 0.5와 같습니다. SL-스프레드=TP+스프레드