Negro! - página 57

 
paukas:
Para que o dreno não de comércio acontece, mas . Não de MM ruim..

Eu não consegui.

E do que?

 

tendência da conta

linha vermelha - levantamento de conta

linha negra - dispersão dos lucros

linha verde - provavelmente um freio de perda


 

Os cálculos foram levemente complicados.

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

As estatísticas são diferentes, eu estava errado. Há seqüências de até dezenas de milhares de ofícios (a última rodada do roteiro tinha mais de 17 mil ofícios, no máximo). Tudo é impresso em arquivo grande com 2 megabytes. Se o comércio for de até 1000 (com configurações atuais), então todas as negociações podem ser vistas. Se mais - eles são cortados. Aumentar este parâmetro não aumenta o arquivo, porque há muito poucas séries de sucesso.

A duração média da série antes do prejuízo é de cerca de 48 negócios. Mas 99% da série pode ter até 700 negócios.

Apresentarei o cheque de resgate um pouco mais tarde. Mas isso dificilmente mudará muito.

O depo máximo também é calculado.

 
Qual é o seu problema, você não pode nem mesmo drenar o depósito adequadamente?)
 

Por que você não adiciona o spread ao st.

Na minha opinião, com um stop loss a perda é mais no spread, com um lucro o lucro é menor no spread.

 

Porque existem diferentes maneiras de contar aqui. Para mim - é preciso mais para chegar à tomada do que à parada para obter números iguais.

E a diferença entre eles é uma dispersão, não duas.

Apenas aumentou a série máxima (segunda dimensão da matriz) para 10000. Está bem, funciona por menos de 10 segundos.

 

Acabei de entrar, está girando há dois minutos).

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

Está demorando muito tempo...

 
ele pendura ))
 

mudou-o assim, pensando também

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