Profitieren Sie von einer zufälligen Preisspanne - Seite 8

 
avatara:

Das Thema verdient es, weiter diskutiert zu werden, wie ich finde. Die Zeit ist vergangen - es gab eine Menge zu bedenken und zu lernen.

Insbesondere die Fisher-Transformation wird sozusagen beschrieben...

;)

Ich habe zwei Skripte für die Erstellung von Testreihen entwickelt. (für einheitliche und normale Inkremente).

Bitte treten Sie nicht für Nekromantie und Schlampigkeit in übereiltem Code...

Die Fisher-Transformation verstärkt wie jeder andere Expander das fraktionale Rauschen in der Nähe der oberen und unteren Grenze des Intervalls und im Grenzbereich (an der Grenze selbst) mit einem unendlichen Faktor. Für den Markt ist dies nur relevant - alle Preise sind durch Punkte quantifiziert, und daher sind bis zu einem gewissen Grad auch alle Indikatoren durch Punkte quantifiziert.
 
NorthernWind:

Wenn Sie jedoch so spielen, wie ich es im obigen Link vorgeschlagen habe, können Sie bei Random Walks mit mo=0 sicher gewinnen. Aber auch dies ist nicht genau das Spiel, von dem in den Theoremen die Rede ist. Außerdem gibt es eine paradoxe Situation: Je öfter Sie nicht raten, desto mehr verdienen Sie. Noch einmal: Dieses Spiel hat nichts mit der Realität zu tun und soll zeigen, wie wichtig genaue Tests sind. Der Punkt ist, dass die Gewinne dort durch Unterzählung der gewonnenen und verlorenen Wetten kumuliert werden. Das ist richtig.

Wenn Sie es schaffen, ein Spiel zu spielen, wie ich es vorgeschlagen habe, werden Sie auf jeden Fall reich werden. :) Und ich sollte hinzufügen, dass die Verteilung in diesem Spiel auch einen großen Unterschied macht. Das Spiel ist bei manchen Arten von zufälligen Wanderungen einfach nicht machbar.

ZS: Unabhängig von dem, was hier besprochen wurde, kann man, wenn man die bestehende Verteilung in eine andere umwandelt, in der Tat manchmal einen Vorteil haben, aber einen sehr wackeligen.

Wenn Sie die Idee richtig verstehen, skizzieren Sie den Code für einen schnellen Test auf "Preise" mit einer normalen Verteilung der Inkremente:

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

Die Optimierung (Gewinn und Verlust) nach dem Kriterium der Gewohnheit hat bereits deutlich das erwartete Scheitern des alten Mythos (oder meines) gezeigt.

 
hrenfx:

Wenn ich es richtig verstanden habe, habe ich den Code für eine schnelle Überprüfung der "Preise" mit einer normalen Verteilung der Inkremente skizziert:

Die Optimierung (Gewinn und Verlust) nach dem Kriterium der Gewohnheit hat bereits deutlich das erwartete Scheitern des alten Mythos (oder meines) gezeigt.

Sir, Ihre Frau ist erst vor kurzem abgereist.
 
hrenfx:

Wenn ich es richtig verstanden habe, habe ich den Code für eine schnelle Überprüfung der "Preise" mit einer normalen Verteilung der Inkremente skizziert:

Die Optimierung (Gewinn und Verlust) nach dem Kriterium der Gewohnheit hat bereits deutlich das erwartete Scheitern des alten Mythos (oder meines) gezeigt.

Mythos von was?
 
ZaPutina:
Mythos von was?

Einige Onkel haben über die Möglichkeit diskutiert, einen profitablen TS auf generierten SB-Preisen (genauer gesagt, Inkrementen mit einer Normalverteilung) zu erstellen. Formalisierte den TS, recherchierte viel...

Ich bin dank einer privaten Diskussion, die indirekt mit diesem Thema zu tun hat, darauf gestoßen. Für einen Skeptiker in der Zukunft habe ich mich entschlossen, eine Code-Prüfung zu skizzieren, die niemand in der Öffentlichkeit braucht.

 

für dickfks , können sie nicht eine andere verteilung ausprobieren? zum beispiel einen (künstlich erzeugten) marktpreis. und als einstieg, mit welcher verteilung können sie einen gewinn erzielen?



 
YOUNGA:

Für dickfks, könnten Sie versuchen, eine andere Verteilung? zum Beispiel, der Marktpreis (künstlich erzeugt). und für den Anfang, welche Verteilung kann verwendet werden, um einen Gewinn zu machen?

Garantierte Gewinne können zu "flauschigen" Preisen herausgepresst werden. Die Definition von Flauschigkeit und die Formalisierung der TS dafür wird nicht gegeben. Vielleicht irgendwo anders. All dies hat mit dem realen Handel wenig zu tun.

Der Code kann an jede Distribution angepasst werden. Dazu müssen Sie lediglich die Funktion GetRandGauss durch die Quantilfunktion der gewünschten Verteilung ersetzen - sie wandelt eine gleichmäßig verteilte (MathRand) Zufallsvariable in die entsprechende Verteilung um.

 
hrenfx:

Garantierte Gewinne können zu "flauschigen" Preisen herausgepresst werden. Die Definition von Flauschigkeit und die Formalisierung der TS dafür wird nicht gegeben. Vielleicht irgendwo anders. All dies hat mit dem realen Handel wenig zu tun.

Der Code kann an jede Distribution angepasst werden. Ersetzen Sie dazu einfach die Funktion GetRandGauss durch die Funktion des Quantils der gewünschten Verteilung - sie wandelt eine gleichmäßig verteilte (MathRand) Zufallsvariable in die entsprechende Verteilung um.

Wollen Sie damit sagen, dass Ihr Code ALLE möglichen Auswahlmöglichkeiten mit 100 Zeilen oder weniger durchläuft? Da dies nicht der Fall ist, was hat es mit dem Beweis zu tun, dass man mit Pseudo-SB kein Geld verdienen kann (in der Natur gibt es keine reine SB).
 
ZaPutina:
Sie meinen, Ihr Code geht durch ALLE möglichen Varianten mit nicht mehr als 100 Zeilen? Und da dies nicht der Fall ist, was hat es mit dem Beweis zu tun, dass man mit Pseudo-SB kein Geld verdienen kann (in der Natur gibt es keine reine SB).

Ändern Sie das weiße Rauschen in die gewünschte Verteilungsfunktion und prüfen Sie, ob Sie dies wünschen. Nur das ist Unsinn: zu beweisen, dass man kein Geld verdienen kann. Beweisen Sie das Gegenteil.

ZZY Apropos Zufälligkeit des Marktes: Sein aktueller Zustand(Schlusskurs heute) wurde am 23.03. um 19:00+3:00 Uhr Moskauer Zeit festgelegt.

 
tara:

Ändern Sie das weiße Rauschen in die Verteilungsfunktion, an der Sie interessiert sind, und prüfen Sie, ob Sie das wollen. Nur das ist Unsinn: zu beweisen, dass man kein Geld verdienen kann. Beweisen Sie das Gegenteil.

Apropos Zufälligkeit des Marktes: Sein aktueller Zustand (Schlusskurs heute) wurde am 23.03. um 19:00+3:00 Uhr Moskauer Zeit festgelegt.

Mit Ihnen nur über Ihren Schwiegersohn... nichts für ungut.