Neger! - Seite 57

 
paukas:
Damit der Abfluss nicht aus dem Handel passieren, aber . Nicht von einem schlechten MM..

Ich habe es nicht geschafft.

Und wovon?

 

Kontotrend

rote Linie - Kontodeckung

schwarze Linie - Streuung der Gewinne

grüne Linie - wahrscheinlich eine Verlustbremse


 

Die Berechnungen sind etwas kompliziert.

//+------------------------------------------------------------------+
//|                                                  sanyooooook.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © Mthmt, April 2012"

extern double  _deposit = 100.0;
extern double  _spread = 2.;
extern double  _tp = 30.;
extern double  _sl = 30.;
extern double  _startLot = 0.1;
extern double  _multiplier = 2.;
extern int     _howMany = 10000;

int _deathArr[ ][ 1000 ];


int start( )
{
   ArrayResize( _deathArr, _howMany );
   MathSrand( GetTickCount( ) );
   
   double depo = _deposit;
   double lot = _startLot;
   double resPips;
   int count = 0;
   
   for( int i = 0; i < _howMany; i ++ )
   {
      count = 0;
      lot = _startLot;
      depo = _deposit;
      double depoMax = depo;
      while( depo > 0 )
      {
         resPips = dealResultPips( );
         depo += resPips * lot * 10;
         _deathArr[ i ][ 2 + count ] = depo;
         
         if( depo > depoMax )          depoMax = depo;
         
         count ++;
         if( resPips < 0 )      lot *= _multiplier;
         else                   lot = _startLot; 
      }
      _deathArr[ i ][ 0 ] = count;
      _deathArr[ i ][ 1 ] = depoMax;
   } 
   
   toFile( );   
   return( 0 );
}//+------------------------------------------------------------------+

   
      double dealResultPips( )
      {
         double ratio = ( _tp + _spread ) / _sl ;
         if( MathRand( ) < 32768. * ratio / 2  )         return( - _sl );     /// fail
         else                                            return(   _tp );     /// success   
      }//+------------------------------------------------------------------+
      
      
      void toFile( )   
      {
         int h = FileOpen( "death.txt", FILE_CSV | FILE_WRITE, "," );
         FileWrite( h, "##", "Deals total", "Max deposit" );
         string sOut = "";
         for( int i = 0; i < _howMany; i ++ )
         {
            int countTot = _deathArr[ i ][ 0 ] + 2;
            for( int cnt = 0; cnt < countTot; cnt ++ )      
               sOut = sOut + _deathArr[ i ][ cnt ] + ",";
            FileWrite( h, i, sOut );
            sOut = "";
         }   
         FileClose( h );
         return;
      }//+------------------------------------------------------------------+      

Die Statistiken sind anders, ich habe mich geirrt. Es gibt Sequenzen, die bis zu Zehntausende von Abschlüssen umfassen (der letzte Durchlauf des Skripts umfasste höchstens 17 Tausend Abschlüsse). Alles wird in eine große Datei mit 2 Megabyte gedruckt. Wenn bis 1000 gehandelt wird (mit den aktuellen Einstellungen), dann können alle Trades gesehen werden. Wenn es mehr sind, werden sie abgeschnitten. Die Erhöhung dieses Parameters führt nicht zu einer Vergrößerung der Datei, da es nur sehr wenige erfolgreiche Serien gibt.

Die durchschnittliche Länge der Serie vor dem Verlust beträgt etwa 48 Abschlüsse. Aber 99% der Serien können bis zu 700 Trades lang sein.

Ich werde den Rettungsscheck etwas später vorstellen. Aber es wird sich kaum etwas ändern.

Auch das maximale Depot wird berechnet.

 
Was ist los mit dir, kannst du nicht mal das Pfand richtig ablassen?)
 

Warum fügst du den Spread nicht zu st.

Meiner Meinung nach ist bei einem Stop-Loss der Verlust größer als der Spread, bei einem Gewinn ist der Gewinn kleiner als der Spread.

 

Denn hier gibt es verschiedene Arten der Zählung. Für mich ist der Weg zum Startpunkt länger als der zum Zielpunkt, um gleiche Zahlen zu erhalten.

Und der Unterschied zwischen ihnen ist eine Spanne, nicht zwei.

Erhöhen Sie einfach die maximale Serie (zweite Array-Dimension) auf 10000. Es ist in Ordnung, funktioniert für weniger als 10 Sekunden.

 

Ich bin gerade reingekommen, es dreht sich schon seit zwei Minuten.)

      double dealResultPips( )
      {
         double ratio = ( _tp - 2*_spread ) / _sl ;
         if( MathRand( ) < 32768. * ratio / 2  )         return( - _sl-2 );     /// fail
         else                                            return(   _tp-2 );     /// success   
 

Es dauert sehr lange...

 
er hängt ))
 

änderte es so, dachte auch

      double dealResultPips( )
      {
         double ratio = ( _tp - _spread ) / _sl ;
         if( MathRand( ) < 32768. * ratio / 2  )         return( - _sl-2 );     /// fail
         else                                            return(   _tp-2 );     /// success   
      }//+------------------------------------------------------------------+