Probabilidad de negociación - página 11

 
El mismo estudio, pero sobre precios generados, donde los incrementos se forman según una distribución normal.


Guión:

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

El resultado depende en gran medida del parámetro de desviación (desviación estándar).
ׂ

Los mismos gráficos:
ׂ
ׂ
ׂ
ׂ

Con los parámetros por defecto se obtiene una dependencia similar - del cuadrado. Pero se rompe completamente cuando el parámetro de desviación se cambia de lado.
He comprobado los precios del mercado en las grandes superficies, la dependencia de la plaza se mantiene.
 
getch >>:
Повтор:

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


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


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

En una escala logarítmica, el gráfico es más claro, por cierto. En cuanto a la relación de TP y SL, entonces es más fácil e inequívoco organizar una comprobación directa en el mismo probador, haciendo que su relación sea un parámetro, por ejemplo. Por alguna razón me parece que para las entradas aleatorias el total medio de las transacciones siempre tenderá a la dispersión, con un signo menos, por supuesto.

 
Candid >>:

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

 
No entiendo lo que cuentas... ¿La probabilidad de alcanzar el TP y el SL?
Así que es simple...
Probabilidad de TP = (SL - spread) / (TP + SL)
Probabilidad de SL = (TP + spread) / (TP + SL)
 
Candid >>:

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

Como he copiado el post de otro hilo, se mantienen las antiguas denominaciones: TP y SL. Vale la pena interpretarlos como Pips1 y Pips2. La conclusión principal se formula en la Hipótesis.

 
kharko писал(а) >>
No entiendo lo que cuentas... ¿La probabilidad de alcanzar el TP y el SL?
Así que es simple...
Probabilidad de TP = (SL - spread) / (TP + SL)
Probabilidad de SL = (TP + spread) / (TP + SL)


Comprobemos: 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

Así que no son iguales :))))
 
getch >>:

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

Corregido el post a la interpretación correcta.

 
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

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

Cuando abres una posición, ya tienes pérdidas por el importe del spread....

 
kharko писал(а) >>

Cuando abres una posición, ya tienes pérdidas por el valor del spread....


¿Qué tiene que ver la probabilidad con esto?
 
SProgrammer >>:


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

La probabilidad es de 0,5 si las distancias que debe recorrer el precio son iguales. SL-extensión=TP+extensión

Razón de la queja: