Handelswahrscheinlichkeit - Seite 11

 
Dieselbe Studie, aber mit generierten Preisen, bei denen die Inkremente nach einer Normalverteilung gebildet werden.


Drehbuch:

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

Das Ergebnis ist stark abhängig vom Parameter Abweichung (Standardabweichung).
ׂ

Dieselben Diagramme:
ׂ
ׂ
ׂ
ׂ

Mit den Standardparametern ergibt sich eine ähnliche Abhängigkeit - vom Quadrat. Wenn der Parameter " Abweichung" seitlich verändert wird, ist die Funktion jedoch völlig gestört.
Ich habe die Marktpreise bei den Majors überprüft, die Abhängigkeit vom Quadrat bleibt erhalten.
 
getch >>:
Повтор:

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


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


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

Auf einer logarithmischen Skala ist das Diagramm übrigens noch deutlicher. Was das Verhältnis von TP und SL betrifft, so ist es einfacher und eindeutiger, eine einfache Prüfung im selben Prüfgerät durchzuführen, indem man beispielsweise ihr Verhältnis als Parameter angibt. Aus irgendeinem Grund scheint es mir, dass bei zufälligen Einträgen die durchschnittliche Summe der Transaktionen immer zur Spanne tendiert, natürlich mit einem Minuszeichen.

 
Candid >>:

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

 
Ich verstehe nicht, was du da zählst... Die Wahrscheinlichkeit, TP und SL zu erreichen?
Es ist also ganz einfach...
Wahrscheinlichkeit von TP = (SL - Spread) / (TP + SL)
Wahrscheinlichkeit von SL = (TP + Spread) / (TP + SL)
 
Candid >>:

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

Da ich den Beitrag aus einem anderen Thema kopiert habe, bleiben die alten Bezeichnungen bestehen: TP und SL. Es lohnt sich, sie als Pips1 und Pips2 zu interpretieren. Die wichtigste Schlussfolgerung ist in der Hypothese formuliert.

 
kharko писал(а) >>
Ich verstehe nicht, was du da zählst... Die Wahrscheinlichkeit, TP und SL zu erreichen?
Es ist also ganz einfach...
Wahrscheinlichkeit von TP = (SL - Spread) / (TP + SL)
Wahrscheinlichkeit von SL = (TP + Spread) / (TP + SL)


Prüfen wir - 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

Sie sind also nicht gleich :))))
 
getch >>:

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

Der Beitrag wurde auf die korrekte Auslegung korrigiert.

 
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

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

Wenn Sie eine Position eröffnen, haben Sie bereits einen Verlust in Höhe des Spreads gemacht....

 
kharko писал(а) >>

Wenn Sie eine Position eröffnen, haben Sie bereits einen Verlust durch den Wert des Spreads....


Was hat die Wahrscheinlichkeit damit zu tun?
 
SProgrammer >>:


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

Die Wahrscheinlichkeit ist 0,5, wenn die Entfernungen, die der Preis zurücklegen muss, gleich sind. SL-Streuung=TP+Streuung