交易概率 - 页 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;
}

其结果高度依赖于偏差 参数(标准偏差)。
ׂ

同样的图表。
ׂ
ׂ
ׂ
ׂ

在默认参数下,可以得到类似的依赖性--从平方开始。但当偏差 参数被横向改变时,它就完全被破坏了。
我检查了专业的市场价格,对广场的依赖性被保留。
 
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 >>:

Поскольку копировал пост из другой темы, то остались старые обозначения: TP и SL. Стоит их интерпретировать, как Pips1 и Pips2. Основное заключение сформулировано в Гипотезе.

帖子 改成了正确的解释。

 
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-spread=TP+spread