네그럴! - 페이지 57

 
paukas :
배수 가 무역에서 오지 않고 나쁜 MM에서 나오지 않도록.

성공하지 못했습니다.

그리고 무엇에서?

 

집계 추세는

레드 라인 - 계정 인출

검은 선 - 이익 스프레드

녹색 선 - 아마도 손실 브레이크


 

계산이 약간 복잡합니다.

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

통계가 다르네요 제가 틀렸습니다. 최대 수만 건의 거래 길이가 있는 시퀀스가 있습니다(스크립트가 마지막으로 실행되었을 때 기껏해야 17,000건 이상의 거래가 있었습니다). 모든 것이 약 2MB의 큰 파일로 출력됩니다. 최대 1000개의 거래가 있는 경우(현재 설정으로) 모든 거래를 볼 수 있습니다. 더 많은 경우 잘립니다. 이 매개변수를 늘리면 파일이 전혀 확대되지 않습니다. 이와 같은 성공 사례는 거의 없습니다.

배수 전 시리즈의 평균 길이는 약 48 거래입니다. 그러나 시리즈의 99%는 약 700까지의 길이에 맞습니다.

잠시 후에 보석금을 추가하겠습니다. 그러나 이것은 많이 바뀔 것 같지 않습니다.

최대 저장소도 계산됩니다.

 
예, 일반적으로 저장소를 배수해도 작동하지 않습니다.
 

스프레드를 st에 추가하지 않겠습니까?

제 생각에는 손절매의 경우 손실이 더 전면에 있고 이익의 경우 스프레드에서 이익이 더 적습니다.

 

여기는 다르기 때문입니다. 나를 위해, 같은 숫자를 얻으려면 정류장보다 더 많이 가야합니다.

그리고 그들 사이의 차이점은 두 개가 아닌 하나의 스프레드입니다.

최대치만 늘렸습니다. 시리즈(배열의 두 번째 차원) 최대 10000. 일반적으로 10초 미만으로 작동합니다.

 

조금 올라갔어 벌써 2분째 돌고 있어)

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

뭔가 길다...

 
그는 매달렸다))
 

이렇게 변했고 생각도

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