Probabilidade comercial - página 11

 
O mesmo estudo, mas sobre preços gerados, onde os incrementos são formados de acordo com uma distribuição normal.


Roteiro:

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

O resultado é altamente dependente do parâmetro Desvio (desvio padrão).
ׂ

Os mesmos gráficos:
ׂ
ׂ
ׂ
ׂ

Os parâmetros padrão produzem uma dependência semelhante - a partir da praça. Mas ele é completamente quebrado quando o parâmetro Desvio é mudado de lado.
Verifiquei os preços de mercado das majors, a dependência da praça é mantida.
 
getch >>:
Повтор:

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


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


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

Em uma escala logarítmica, o gráfico é mais claro, a propósito. Quanto à relação entre TP e SL, então é mais fácil e mais inequívoco organizar uma verificação direta no mesmo testador, fazendo sua relação como um parâmetro, por exemplo. Por alguma razão, parece-me que para entradas aleatórias o total médio das transações sempre tenderá para o spread, com um sinal de menos, é claro.

 
Candid >>:

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

 
Não entendo o que você está contando... A probabilidade de atingir TP e SL?
Então é simples...
Probabilidade de TP = (SL - spread) / (TP + SL)
Probabilidade de SL = (TP + spread) / (TP + SL)
 
Candid >>:

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

Como copiei o correio de outro fio, as antigas designações permanecem: TP e SL. Vale a pena interpretá-los como Pips1 e Pips2. A principal conclusão é formulada na Hipótese.

 
kharko писал(а) >>
Não entendo o que você está contando... A probabilidade de atingir TP e SL?
Então é simples...
Probabilidade de TP = (SL - spread) / (TP + SL)
Probabilidade de SL = (TP + spread) / (TP + SL)


Vamos verificar - 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

Portanto, eles não são iguais :))))
 
getch >>:

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

Corrigido o correio para a interpretação correta.

 
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

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

Quando você abre uma posição, você já está com prejuízo pelo valor do spread....

 
kharko писал(а) >>

Quando você abre uma posição, você já está com prejuízo pelo valor do spread....


O que a probabilidade tem a ver com isso?
 
SProgrammer >>:


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

A probabilidade é de 0,5 se as distâncias que o preço tem que percorrer forem iguais. SL-spread=TP+spread