取引確率 - ページ 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 パラメータ(標準偏差)に大きく依存します。
ׂ

同じグラフを表示しています。
ׂ
ׂ
ׂ
ׂ

デフォルトのパラメータでは、同様の依存性が得られます - 二乗から。しかし、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, то проще и однозначнее в интерпретации устроить лобовую проверку в том же тестере...

他のスレッドから投稿をコピーしたように、TPと SLという 旧表記が残っています。Pips1Pips 2と解釈するのがよいでしょう。主な結論は、「仮説」として 定式化されています。

 
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となります。