Probabilité de négociation - page 11

 
Même étude, mais sur des prix générés, où les incréments sont formés selon une distribution normale.


Script :

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

Le résultat dépend fortement du paramètre Deviation (écart-type).
ׂ

Les mêmes graphiques :
ׂ
ׂ
ׂ
ׂ

Avec les paramètres par défaut, on obtient une dépendance similaire - du carré. Mais il est complètement cassé lorsque le paramètre Déviation est modifié latéralement.
J'ai vérifié les prix du marché sur les majors, la dépendance à la place est retenue.
 
getch >>:
Повтор:

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


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


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

Sur une échelle logarithmique, le graphique est plus clair, d'ailleurs. Quant à la relation entre TP et SL, il est plus facile et plus clair d'organiser un contrôle simple dans le même testeur, en faisant de leur rapport un paramètre, par exemple. Pour une raison quelconque, il me semble que pour les entrées aléatoires, le total moyen des transactions tendra toujours vers l'écart, avec un signe moins, bien sûr.

 
Candid >>:

В логарифмическом масштабе график нагляднее, кстати, будет.

 
Je ne comprends pas ce que vous comptez... La probabilité d'atteindre le TP et le SL ?
Alors c'est simple...
Probabilité de TP = (SL - écart) / (TP + SL)
Probabilité de SL = (TP + écart) / (TP + SL)
 
Candid >>:

Что касается взаимоотношений TP и SL, то проще и однозначнее в интерпретации устроить лобовую проверку в том же тестере...

Comme j'ai copié le post d'un autre fil, les anciennes désignations restent : TP et SL. Il est intéressant de les interpréter comme Pips1 et Pips2. La principale conclusion est formulée dans l'Hypothèse.

 
kharko писал(а) >>
Je ne comprends pas ce que vous comptez... La probabilité d'atteindre le TP et le SL ?
Alors c'est simple...
Probabilité de TP = (SL - écart) / (TP + SL)
Probabilité de SL = (TP + écart) / (TP + SL)


Vérifions - 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

Ils ne sont donc pas égaux :))))
 
getch >>:

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

J'ai corrigé le message en fonction de l'interprétation correcte.

 
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

То есть не равны :))))

Lorsque vous ouvrez une position, vous êtes déjà en perte du fait du montant de l'écart.....

 
kharko писал(а) >>

Lorsque vous ouvrez une position, vous êtes déjà en perte par la valeur du spread.....


Qu'est-ce que la probabilité a à voir avec ça ?
 
SProgrammer >>:


А вероятность тут причем?

La probabilité est de 0,5 si les distances que le prix doit parcourir sont égales. SL-écart=TP+écart

Raison: