Profitto da una gamma di prezzi casuali - pagina 8

 
avatara:

L'argomento merita di essere discusso ulteriormente, per quanto mi riguarda. Il tempo è passato - c'era molto da pensare e da imparare.

Soprattutto la trasformazione di Fisher è una specie di descrizione...

;)

Ho preparato due script per generare serie di test. (per incrementi uniformi e normali).

Per favore non calciare per necromanzia e sciatteria nel codice affrettato...

La trasformata di Fisher, come qualsiasi altro espansore, amplifica selvaggiamente il rumore frazionario vicino ai limiti superiore e inferiore dell'intervallo, e nel limite (al limite stesso) con un fattore infinito. Per il mercato questo è solo rilevante - tutti i prezzi sono quantizzati da Point, e quindi in qualche misura tutti gli indicatori sono anche quantizzati da Point.
 
NorthernWind:

Tuttavia, se si gioca come ho suggerito nel link sopra, si può sicuramente vincere su passeggiate casuali con mo=0. Ma, ancora una volta, questo non è esattamente il gioco di cui ci parlano i teoremi. Inoltre, c'è una situazione paradossale, tale che più volte non si indovina, più si guadagna. Ancora una volta, questo gioco non ha nulla a che fare con la realtà ed è inteso a dimostrare l'importanza di test accurati. Il punto è che le vincite lì sono accumulate sottocontando le scommesse vinte e perse. Proprio così.

Se riesci a fare un gioco come ti ho suggerito, diventerai sicuramente ricco. :) E dovrei aggiungere che anche la distribuzione in questo gioco fa una grande differenza. Il gioco non è semplicemente fattibile su alcuni tipi di vagabondaggio casuale.

ZS. Senza considerare ciò che è stato discusso, se si converte la distribuzione esistente in un'altra allora si può effettivamente avere un vantaggio a volte, ma uno molto traballante.

Se l'idea è giusta, ho abbozzato il codice per un rapido test su "prezzi" con una distribuzione normale degli incrementi:

#property strict

extern int AmountPrices = 10000;
extern int TakeProfit = 100;
extern int StopLoss = 100;
extern double point = 0.0001;
extern int Temp = 0;

#define  MAX_RAND 32767.0

double GetRand()
{
  return(2 * MathRand() / MAX_RAND - 1);
}

void GetRandGauss( double& Rand1, double& 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;
  Rand2 = X2 * W;
    
  return;
}

void GetPrices( double &Prices[], int Amount )
{
  static uint Tmp = 0;
  double Rand1, Rand2;
  
  MathSrand((int)TimeLocal() + Tmp);
  
  Amount <<= 1;
  
  ArrayResize(Prices, Amount);
  
  Prices[0] = 0;
  
  for (int i = 2; i < Amount; i += 2)
  {
    GetRandGauss(Rand1, Rand2);
    Prices[i - 1] = Prices[i - 2] + Rand1;
    Prices[i] = Prices[i - 1] + Rand2;    
  }
  
  Tmp += GetTickCount();
  
  return;
}

void NormalizeArray( double &Array[] )
{
  const int Size = ArraySize(Array);
  const double Interval = ArrayMaximum(Array) - ArrayMinimum(Array);  
  
  for (int i = 0; i < Size; i++)
    Array[i] /= Interval;
    
  return;
}

double System( const double &Prices[], const double TP, const double SL )
{
  const int Amount = ArraySize(Prices);
  bool Flag = TRUE;
  double OpenPrice = Prices[0];
  double Balance = 0;
  
  for (int i = 0; i < Amount; i++)
  {
    if (Flag)
    {
      if ((Prices[i] >= OpenPrice + TP) || (Prices[i] <= OpenPrice - SL))
      {
        Balance += Prices[i] - OpenPrice;
        
        Flag = (MathRand() > (SHORT_MAX + 1) / 2 - 1);  
        OpenPrice = Prices[i];
      }
    }
    else if ((Prices[i] <= OpenPrice - TP) || (Prices[i] >= OpenPrice + SL))
    {
      Balance -= Prices[i] - OpenPrice;

      Flag = (MathRand() > (SHORT_MAX + 1) / 2 - 1);  
      OpenPrice = Prices[i];
    }
  }
  
  return(Balance);
}

double GetRandProfit( int Amount, const double TP, const double SL )
{
   double Prices[];
   
   GetPrices(Prices, Amount >> 1);
   NormalizeArray(Prices);
   
   return(System(Prices, TP, SL));  
}


double OnTester( void )
{
  return(GetRandProfit(AmountPrices, TakeProfit * point, StopLoss * point));
}

L'ottimizzazione (prendere e perdere) con criterio personalizzato ha già mostrato chiaramente il fallimento previsto del mito antico (o mio).

 
hrenfx:

Se ho capito bene, ho abbozzato il codice per un rapido controllo dei "prezzi" con una distribuzione normale degli incrementi:

L'ottimizzazione (prendere e perdere) con criterio personalizzato ha già mostrato chiaramente il fallimento previsto del mito antico (o mio).

Signore, la sua signora è partita relativamente di recente.
 
hrenfx:

Se ho capito bene, ho abbozzato il codice per un rapido controllo dei "prezzi" con una distribuzione normale degli incrementi:

L'ottimizzazione (prendere e perdere) con criterio personalizzato ha già mostrato chiaramente il fallimento previsto del mito antico (o mio).

mito di cosa?
 
ZaPutina:
mito di cosa?

Alcuni zii hanno discusso sulla possibilità di creare un TS redditizio sui prezzi generati SB (più precisamente, incrementi con una distribuzione normale). Formalizzato il TS, fatto molte ricerche...

È venuto fuori questo, grazie a una discussione privata che si riferisce indirettamente a questo argomento. Perché, forse, qualche volta in futuro uno scettico, ha deciso di abbozzare nel pubblico dominio qualche codice di controllo di cui nessuno ha bisogno.

 

per dickfks , non puoi provare una distribuzione diversa? per esempio, un prezzo di mercato (generato artificialmente). e come inizio, su quale distribuzione puoi fare un profitto?



 
YOUNGA:

Per dickfks, potresti provare un'altra distribuzione? per esempio, il prezzo di mercato (generato artificialmente). e per cominciare, quale distribuzione può essere usata per ottenere un profitto?

I profitti garantiti possono essere spremuti a prezzi "flosci". La definizione di fluffosità e la formalizzazione della ST per questa non sarà data. Forse da qualche altra parte. Tutto questo ha poco a che fare con il trading reale.

Il codice può essere modificato per adattarsi a qualsiasi distribuzione. Per fare questo basta sostituire la funzione GetRandGauss con la funzione quantile della distribuzione desiderata - converte la variabile casuale uniformemente distribuita (MathRand) nella distribuzione corrispondente.

 
hrenfx:

I profitti garantiti possono essere spremuti a prezzi "flosci". Non verrà data la definizione di fluffosità e la formalizzazione della ST per questa. Forse da qualche altra parte. Tutto questo ha poco a che fare con il trading reale.

Il codice può essere modificato per adattarsi a qualsiasi distribuzione. Per fare questo, basta sostituire la funzione GetRandGauss con la funzione del quantile della distribuzione desiderata - converte la variabile casuale uniformemente distribuita (MathRand) nella distribuzione corrispondente.

Stai dicendo che il tuo codice passa attraverso TUTTE le scelte possibili con 100 linee o meno? Dal momento che non lo fa, che cosa ha a che fare con la dimostrazione che non si possono fare soldi con lo pseudo SB (non c'è SB puro in natura).
 
ZaPutina:
Vuoi dire che il tuo codice passa attraverso tutte le possibili varianti con non più di 100 linee? E dato che non lo fa, che cosa ha a che fare con la dimostrazione che non si possono fare soldi con lo pseudo SB (non c'è SB puro in natura).

Cambiate il rumore bianco con la funzione di distribuzione di interesse e controllate se lo desiderate. Solo che questa è una sciocchezza: dimostrare che non si possono fare soldi. Provate il contrario.

ZZY Parlando della natura casuale del mercato: il suo stato attuale(prezzo di chiusura oggi) è stato predeterminato il 23.03 alle 19:00+3:00 ora di Mosca.

 
tara:

Cambiate il rumore bianco con la funzione di distribuzione che vi interessa e controllate se volete. Solo che questa è una sciocchezza: dimostrare che non si possono fare soldi. Provate il contrario.

Parlando della natura casuale del mercato: il suo stato attuale (prezzo di chiusura oggi) è stato predeterminato il 23.03 alle 19:00+3:00 ora di Mosca.

Con voi solo attraverso vostro genero... senza mancare di rispetto.