¡Negro! - página 57

 
paukas:
Para que el desagüe no del comercio pasar, pero . No de la mala MM..

No lo logré.

¿Y de qué?

 

tendencia de la cuenta

línea roja - reducción de la cuenta

línea negra - distribución de los beneficios

línea verde - probablemente un freno de pérdidas


 

Se complican un poco los cálculos.

//+------------------------------------------------------------------+
//|                                                  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;
      }//+------------------------------------------------------------------+      

Las estadísticas son diferentes, estaba equivocado. Hay secuencias de hasta decenas de miles de operaciones (la última ejecución del script tenía más de 17 mil operaciones como máximo). Todo se imprime en un archivo grande de 2 megas. Si las operaciones llegan a 1000 (con la configuración actual), entonces se pueden ver todas las operaciones. Si son más, se cortan. El aumento de este parámetro no aumenta el archivo, porque hay muy pocas series exitosas.

La duración media de la serie antes de la pérdida es de unas 48 operaciones. Pero el 99% de las series pueden tener hasta 700 operaciones.

Presentaré el cheque de rescate un poco más tarde. Pero no cambiará mucho.

También se calcula la deposición máxima.

 
¿Qué te pasa, que ni siquiera puedes vaciar bien el depósito?)
 

¿Por qué no agregas la propagación a St.

En mi opinión, con un stop loss la pérdida es mayor en el spread, con un profit el beneficio es menor en el spread.

 

Porque aquí hay diferentes formas de contar. Para mí - se necesita más para llegar a la toma que a la parada para obtener números iguales.

Y la diferencia entre ellos es un diferencial, no dos.

Acabo de aumentar la serie máxima (segunda dimensión del array) a 10000. Está bien, funciona durante menos de 10 segundos.

 

Acabo de entrar y lleva dos minutos girando).

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

Está tardando mucho...

 
se cuelga ))
 

lo cambió así, también pensando

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