ニグロ! - ページ 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;
      }//+------------------------------------------------------------------+      

統計が違うんだ、私が間違っていたんだ。最大で数万トレードのシーケンスが存在する(スクリプトの最後の実行では、最大で1万7000トレード以上あった)。全ては2メガの大きなファイルにプリントされます。1000までの取引(現在の設定)であれば、すべての取引を見ることができます。それ以上の場合は、カットされます。このパラメータを増やしても、成功するシリーズが非常に少ないため、ファイルは増えない。

損切り前のシリーズの平均的な長さは約48トレードです。しかし、99%のシリーズは最大で700トレードの長さになります。

ベイルアウトチェックについては、もう少し後で紹介します。でも、ほとんど変わらないでしょう。

また、最大デポも算出されます。

 
なんだよ、預金の水抜きもまともにできないのかよ(笑)
 

stにスプレッドを付けてはどうでしょう。

私の考えでは、ストップロスでは損失がスプレッドに多くかかり、プロフィットでは利益がスプレッドに少なくかかると思います。

 

ここでは、さまざまな数え方があるからです。私の場合 - 同じ数字を出すには、ストップよりテイクに行く方が多くかかります。

しかも、その差は2倍ではなく、1倍です。

最大系列(配列の2次元目)を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   
      }//+------------------------------------------------------------------+