Probabilità di trading - pagina 11

 
Stesso studio, ma su prezzi generati, dove gli incrementi sono formati secondo una distribuzione 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;
}

Il risultato è fortemente dipendente dal parametro Deviazione (deviazione standard).
ׂ

Stessi grafici:
ׂ
ׂ
ׂ
ׂ

Con i parametri predefiniti si ottiene una dipendenza simile - dal quadrato. Ma è completamente rotto quando il parametro Deviazione viene cambiato lateralmente.
Ho controllato i prezzi di mercato sulle major, la dipendenza dalla piazza è mantenuta.
 
getch >>:
Повтор:

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


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


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

Su una scala logaritmica, il grafico è più chiaro, comunque. Per quanto riguarda il rapporto tra TP e SL, allora è più facile e non ambiguo organizzare un controllo diretto nello stesso tester, facendo il loro rapporto come parametro, per esempio. Per qualche ragione mi sembra che per le entrate casuali il totale medio delle transazioni tenderà sempre allo spread, con un segno meno, naturalmente.

 
Candid >>:

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

 
Non capisco cosa stai contando... La probabilità di raggiungere TP e SL?
Quindi è semplice...
Probabilità di TP = (SL - spread) / (TP + SL)
Probabilità di SL = (TP + spread) / (TP + SL)
 
Candid >>:

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

Come ho copiato il post da un altro thread, le vecchie denominazioni rimangono: TP e SL. Vale la pena di interpretarli come Pips1 e Pips2. La conclusione principale è formulata nell'ipotesi.

 
kharko писал(а) >>
Non capisco cosa stai contando... La probabilità di raggiungere TP e SL?
Quindi è semplice...
Probabilità di TP = (SL - spread) / (TP + SL)
Probabilità di SL = (TP + spread) / (TP + SL)


Controlliamo - 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

Quindi non sono uguali :))))
 
getch >>:

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

Corretto il post con l'interpretazione corretta.

 
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 si apre una posizione, si è già in perdita per l'ammontare dello spread....

 
kharko писал(а) >>

Quando si apre una posizione, si è già in perdita per l'ammontare dello spread....


Cosa c'entra la probabilità?
 
SProgrammer >>:


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

La probabilità è 0,5 se le distanze che il prezzo deve percorrere sono uguali. SL-spread=TP+spread

Motivazione: