アバランチ - ページ 520

 
DJDJ22:

ストーリーは必要ない。私たちは紳士です、あなたの言葉を信じます。最低でも1ヶ月分という形で結果を出すだけ。特にこだわりはないんです。ただ、それだけです。

ここでは2015.04.17~2015.05.07までリアルでテストしました。これは旧バージョンで、1ヶ月間動かなかったので、2015.05.14にドローダウンを少なくした新しい改良版ネッティングを作り、リアルに載せたので無効にしたのです。

 
khorosh:

ここでは、2015.04.17~2015.05.07までリアルでテストしていました。これは以前のバージョンで、月がうまくいかず、ドローダウンを少なくした新しい改良版ネッティングを作り、2015.05.14にリアルに載せたので無効化しました。

ありがとうございます。マーチンにはちょうどいい。幸運を祈ります。私はどうにかして、マーティンとかなり不名誉な別れ方をしました。掘らないことにした。
 
khorosh:

何回目の冬、何年目の冬)。母なるロシアへの帰還、おめでとうございます。雪崩に戻りました。


お祝いの言葉をありがとうございます。マヤ - 1年前にロシアの一部になると信じているかと聞かれたら、私は笑っていたでしょうが、ここでは少しドライブしなければなりませんでした :)。

ドンバスに比べたら、どれだけ幸運なことか! ...モズゴヴォイが殺され、私はここで彼に会い、握手をして、私たちを訪ねてきました...ソファから離れずに居住国を変えたのはこれで3度目です :)

しかし、ここで ...何も変わらない...

新しいものはすべて、忘れられた古いものなのです。

 
elmucon:

祝辞をありがとう - 男 - 男は、あなたがロシアの一部になることを信じているかどうか1年前に尋ねられた場合、私は笑っただろうが、あなたはここにいる;_ 私は少しドライブする必要がありました:)。

ドンバスに比べたら、どれだけ幸運なことか! ...モズゴヴォイが殺され、私はここで彼に会い、握手をして、私たちを訪ねてきました...ソファから離れずに居住国を変えたのはこれで3度目です :)

しかし、ここで ...何も変わらない...

見てください - すべての新しいものはよく忘れられた古いものです :) 世界はスパイラルに発展しており、我々はそれに気づくので、我々は古くなる ...


++++++++
 
khorosh:

ここでは、2015.04.17~2015.05.07までリアルでテストしていました。これは以前のバージョンで、月がうまくいかず、ドローダウンを少なくした新しい改良版ネッティングを作り、2015.05.14にリアルに載せたので無効化しました。

Yuriさん、こんにちは。アドバイザーは機能しているか?安全にロットを増やすための秘策ということでしたね。それは秘密のままなのでしょうか?EAを開発したのか。計算を追加したい。

 
紳士、私は提案があります。 1-2-3タイムフレームの1つからのMA傾斜角の値は、ターミナルのグローバル変数を介してインジケーターからエキスパートアドバイザーに送信されます。この値に基づいて、ストップオーダーの方向ごとに異なるロット増加乗数を取ることができます。これは、ドローダウンを減らし、利益を増やすのに役立ちます。フラットとトレンドの間に仮想トレーリングストップの異なる値を取ることも可能です、これはアドバイザーが注文のグループの合計正の利益をかすめる場合、またはそれが異なるテイク利益値で機能するようにする場合です。また、フラット中に勾配がゼロに近いときに新しい一連の注文を開始しないように、フラット中にロットを増やすための小さな乗数を設定するのは簡単です。私は誰かのインジケーターをやり直しました、それはその仕事をします、値はグローバルを通してどんなエキスパートアドバイザーにも転送されます。問題は、私がプログラミングに不慣れで、インジケーターが不器用に書き直されていることです。インジケーターは、iCustomを介したテスターでの実行にも使用できる必要があります(バッファーで何かを行う必要があります。私自身、非常に長い間考えています)。これにより、雪崩のパフォーマンスが向上する可能性があります。また、設定で最初に設定された0.01ロットあたりの1時間あたりの作業時間の値によって、さまざまなバージョンのAvalancheのパフォーマンスを評価することをお勧めします(SMDB-ブローカーマシン搾乳速度:-)©。また、この値に対するドローダウンの比率。多くの車両にとって、このインジケーターは便利です。エキスパートアドバイザーは、他のインジケーターを使用する場合よりも、最後の5〜9バーのどこかでEMAとSMAの角度の違いによってトレンドの始まりを検出できるようになります。
インジケーターコードが付いています。
 //+------------------------------------------------------------------+
//|                                                   MA_Angle_E.mq4 |
//|                                                                  |
//+------------------------------------------------------------------+
/*


Период 13, 35 - значение порогового угла, ема.  На 5-минутках.
Можно 10 и 39.
*/
#property   copyright "Mr_A"
//---- indicator settings
#property   indicator_chart_window   
#property   indicator_buffers 5    
#property indicator_color1 Red
#property indicator_color2 LimeGreen
//#property  indicator_color1  LimeGreen
//#property  indicator_color2  Yellow
//#property  indicator_color3 FireBrick
#property   indicator_width1 1
#property   indicator_width2 2
//----
double CrossUp[];
double CrossDown[];
double prevtime;
double Range,AvgRange;
double fasterMAnow,fasterMAprevious,fasterMAafter;
double mediumMAnow,mediumMAprevious,mediumMAafter;
double slowerMAnow,slowerMAprevious,slowerMAafter;
//----
extern int FasterMA    =     5 ;
extern int FasterShift =   - 5 ;
extern int FasterMode= 1 ; // 0 = sma, 1 = ema, 2 = smma, 3 = lwma
extern int MediumMA    =   20 ;
extern int MediumShift =   - 5 ;
extern int MediumMode= 1 ; // 0 = sma, 1 = ema, 2 = smma, 3 = lwma
extern int SlowerMA    =   34 ;
extern int SlowerShift =     0 ;
extern int SlowerMode=     1 ; // 0 = sma, 1 = ema, 2 = smma, 3 = lwma
extern int SoundAlert=     1 ; // 0 = disabled
//#property  indicator_width3  

//---- indicator parameters
//extern int MAPeriod=21;
extern double MA_Period = 10 ;
extern double Coef = 0.0 ;
extern int SetPrice = 0 ;
//extern string  m = "--Moving Average Types--";
//extern string  m1 = " 1 = EMA";
//extern string  m2 = " 2 = SMMA";
//extern string  m3 = " 3 = LWMA";
//extern string  m4 = " 4 = LSMA";
extern int MA_Type = 1 ; //0=SMA, 1=EMA, 2=SMMA, 3=LWMA, 4=LSMA
//extern string  p0 = " 0 = close";
//extern string  p1 = " 1 = open";
//extern string  p2 = " 2 = high";
//extern string  p3 = " 3 = low";
//extern string  p4 = " 4 = median(high+low)/2";
//extern string  p5 = " 5 = typical(high+low+close)/3";
//extern string  p6 = " 6 = weighted(high+low+close+close)/4";
extern int MA_AppliedPrice = 0 ;   //0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2, 5=typical(high+low+close)/3,
                                 //6=weighted(high+low+close+close)/4 --- способы расчёта значений
extern double AngleTreshold= 2 ; //чем больше значение, тем круче д.б. тренд для сигнала
extern int PrevMAShift= 1 ;
extern int CurMAShift= 0 ;

int MA_Mode;
string strMAType;
int ExtCountedBars= 0 ;   //сумма баров
//---- indicator buffers -- три массива буферов создаются
//double DownBuffer[];
//double ZeroBuffer[];
double LiniaBuffer[];
string GP_MA_E= "GV_GP_MA_E" ;
string GP_MA_S= "GV_GP_MA_S" ;
string GP_MA_Napr= "GV_GP_MA_Napr" ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   GlobalVariableSet (GP_MA_E, 0 );
   GlobalVariableSet (GP_MA_S, 0 );
   GlobalVariableSet (GP_MA_Napr, 0 );
//---- 2 additional buffers are used for counting.
   IndicatorBuffers( 4 );   //было 3        
//---- drawing settings
   SetIndexStyle( 0 , DRAW_LINE );  
   SetIndexShift( 0 , 0 );
   IndicatorDigits(MarketInfo( Symbol (),MODE_DIGITS)+ 2 );   //IndicatorDigits      Установка формата точности (количество знаков
   //после десятичной точки) для визуализации значений индикатора.
   
   SetIndexStyle( 3 , DRAW_ARROW ,EMPTY); //0 заменил на 2
   SetIndexArrow( 3 , 233 );
   SetIndexBuffer ( 3 ,CrossUp);
   SetIndexStyle( 4 , DRAW_ARROW ,EMPTY); //1 заменил на 3
   SetIndexArrow( 4 , 234 );
   SetIndexBuffer ( 4 ,CrossDown);
                                                         
//********SetIndexShift(0, MA_Shift);

int draw_begin = 0 ;
SetIndexDrawBegin( 0 , draw_begin); // с какого элемента начинаются значимые данные индикаторного массива.
SetIndexBuffer ( 0 , LiniaBuffer); //сделали индик. массивом
//---- 3 indicator buffers mapping  --- карта буферов
 // if(!SetIndexBuffer(0,UpBuffer) && !SetIndexBuffer(1,DownBuffer) && !SetIndexBuffer(2,ZeroBuffer))
     // Print("cannot set indicator buffers!");
switch (MA_Type)
   {
       case 1 : strMAType= "EMA" ; MA_Mode= MODE_EMA ; break ;
       case 2 : strMAType= "SMMA" ; MA_Mode= MODE_SMMA ; break ;
       case 3 : strMAType= "LWMA" ; MA_Mode= MODE_LWMA ; break ;
       case 4 : strMAType= "LSMA" ; break ;
       default : strMAType= "SMA" ; MA_Mode= MODE_SMA ; break ;
   }
//---- name for DataWindow and indicator subwindow label
   //IndicatorShortName("MA_" + strMAType+"_Angle("+MA_Period+","+AngleTreshold+","+PrevMAShift+","+CurMAShift+")");
   return ( 0 );
      
} /*
//+------------------------------------------------------------------+
//| LSMA with PriceMode                                              |
//| PrMode  0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2,    |
//| 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4  |
//+------------------------------------------------------------------+
double LSMA(int Rperiod, int prMode, int shift)
{
   int i, mshift;
   double sum, pr;
   int length;
   double lengthvar;
   double tmp;
   double wt;

   length = Rperiod;
 
   sum = 0;
   for(i = length; i >= 1  ; i--)
   {
     lengthvar = length + 1;
     lengthvar /= 3;
     tmp = 0;
     mshift = length-i+shift;
     switch (prMode)
     {
     case 0: pr = Close[mshift];break;
     case 1: pr = Open[mshift];break;
     case 2: pr = High[mshift];break;
     case 3: pr = Low[mshift];break;
     case 4: pr = (High[mshift] + Low[mshift])/2;break;
     case 5: pr = (High[mshift] + Low[mshift] + Close[mshift])/3;break;
     case 6: pr = (High[mshift] + Low[mshift] + 2 * Close[mshift])/4;break;
     }
     tmp = ( i - lengthvar)*pr;
     sum+=tmp;
    }
    wt = MathFloor(sum*6/(length*(length+1))/Point)*Point;
    return(wt);
}*/
//+------------------------------------------------------------------+
//| The angle for MA                                                |
//+------------------------------------------------------------------+
int start()
{
   double fCurMA, fPrevMA;
   double fCurMA_S, fPrevMA_S;
   double fAngle, fAngle_S, mFactor, dFactor; //mFactor - множитель для йены либо остальных валют
   int nLimit, i, n;                   //dFactor - величина обратная радиану
   int nCountedBars;
   ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0 ) return (- 1 );
   if (ExtCountedBars > 0 ) ExtCountedBars--;
   ema();
   //double angle;  //не использовано
   int ShiftDif;
   string Sym;
   if (CurMAShift >= PrevMAShift)
   {
       Print ( "Error: CurMAShift >= PrevMAShift" );
      PrevMAShift = 6 ;
      CurMAShift = 0 ;      
   }  
   nCountedBars = IndicatorCounted(); //Функция возвращает кол-во баров, не измененных после посл. вызова индикатора.
   if (nCountedBars< 0 ) 
       return (- 1 );
   if (nCountedBars> 0 ) 
      nCountedBars--; //---- last counted bar will be recounted
   nLimit = Bars -nCountedBars; //Bars - количество баров на текущем графике;
   dFactor = 3.14159 / 180.0 ;
   mFactor = 1000.0 ;
   Sym = StringSubstr ( Symbol (), 3 , 3 ); //отрезание первых трёх символов из названия пары
   if (Sym == "JPY" ) mFactor = 10.0 ;   //для йены свои особенные настройки
   ShiftDif = PrevMAShift-CurMAShift;   //на сколько значение изменилось
   for (i= 0 ; i<nLimit; i++) //---- main loop
   {
       if (MA_Type == 4 ) //не использовать
      {
         //fCurMA=LSMA(MA_Period,MA_AppliedPrice, i+CurMAShift);   //текущее значение 
         //fPrevMA=LSMA(MA_Period,MA_AppliedPrice, i+PrevMAShift); //предыдущее значение
      }
       else //вот это использовать
      {
        fCurMA= iMA ( NULL , 0 ,MA_Period, 0 ,MA_Mode,MA_AppliedPrice,i+CurMAShift); //значения для текущего
        fPrevMA= iMA ( NULL , 0 ,MA_Period, 0 ,MA_Mode,MA_AppliedPrice,i+PrevMAShift); //и предыдущего баров
      }
      fAngle = (fCurMA - fPrevMA)/ShiftDif;   //здесь тангенс угла получается
       // take ArcTan of value to get the angle in radians and convert to degrees
      fAngle = mFactor * MathArctan (fAngle) / dFactor * F146_Koeff(); //тут сам угол высчитывается; 
       if (i == 0 )
      {
         GlobalVariableSet (GP_MA_E, fAngle);
      }
   }
   nCountedBars = IndicatorCounted(); //Функция возвращает кол-во баров, не измененных после посл. вызова индикатора.
   if (nCountedBars< 0 ) 
       return (- 1 );
   if (nCountedBars> 0 ) 
      nCountedBars--; //---- last counted bar will be recounted
   nLimit = Bars -nCountedBars; //Bars - количество баров на текущем графике;
   ShiftDif = PrevMAShift-CurMAShift;   //на сколько значение изменилось
   for (n= 0 ; n<nLimit; n++)
   {
      fCurMA_S= iMA ( NULL , 0 ,MA_Period, 0 , MODE_SMA ,MA_AppliedPrice,n+CurMAShift); //значения для текущего
      fPrevMA_S= iMA ( NULL , 0 ,MA_Period, 0 , MODE_SMA ,MA_AppliedPrice,n+PrevMAShift); //и предыдущего баров//MODE_SMA
      fAngle_S = (fCurMA_S - fPrevMA_S)/ShiftDif;   //здесь тангенс угла получается
      fAngle_S = mFactor * MathArctan (fAngle_S) / dFactor * F146_Koeff(); //тут сам угол высчитывается
       if (n == 0 )
      {
         GlobalVariableSet (GP_MA_S, fAngle_S);
      }
   }
   //второй индикатор------------------------------ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   int d,counter;
   int counted_bars=IndicatorCounted();
   if (counted_bars< 0 ) return (- 1 );
   if (counted_bars> 0 ) counted_bars--;
   int limit= Bars -counted_bars;
   if (counted_bars== 0 ) limit-= 1 + 9 ;
//----   
   for (d= 0 ; d<=limit; d++)
     {
      counter=d;
      Range= 0 ;
      AvgRange= 0 ;
       for (counter=d;counter<=d+ 9 ;counter++)
        {
         AvgRange=AvgRange+ MathAbs (High[counter]-Low[counter]);
        }
      Range=AvgRange/ 10 ;
       //----       
      fasterMAnow      = iMA ( NULL , 0 , FasterMA, FasterShift, FasterMode, PRICE_CLOSE , d+ 1 );
      fasterMAprevious = iMA ( NULL , 0 , FasterMA, FasterShift, FasterMode, PRICE_CLOSE , d+ 2 );
      fasterMAafter    = iMA ( NULL , 0 , FasterMA, FasterShift, FasterMode, PRICE_CLOSE , d- 1 );
       //----      
      mediumMAnow      = iMA ( NULL , 0 , MediumMA, MediumShift, MediumMode, PRICE_CLOSE , d+ 1 );
      mediumMAprevious = iMA ( NULL , 0 , MediumMA, MediumShift, MediumMode, PRICE_CLOSE , d+ 2 );
      mediumMAafter    = iMA ( NULL , 0 , MediumMA, MediumShift, MediumMode, PRICE_CLOSE , d- 1 );
       //----      
      slowerMAnow      = iMA ( NULL , 0 , SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE , d+ 1 );
      slowerMAprevious = iMA ( NULL , 0 , SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE , d+ 2 );
      slowerMAafter    = iMA ( NULL , 0 , SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE , d- 1 );
       //----      
       if ((fasterMAnow>slowerMAnow && 
         fasterMAprevious<=slowerMAprevious && 
         fasterMAafter>slowerMAafter && 
         mediumMAnow>slowerMAnow)
         || 
         (fasterMAnow>slowerMAnow && 
         mediumMAnow>slowerMAnow && 
         mediumMAprevious<=slowerMAprevious && 
         mediumMAafter>slowerMAafter))
        {
         CrossUp[d]=Low[i]-Range* 0.5 ;
        }
       if ((fasterMAnow<slowerMAnow && 
         fasterMAprevious>=slowerMAprevious && 
         fasterMAafter<slowerMAafter && 
         mediumMAnow<slowerMAnow)
         || 
         (fasterMAnow<slowerMAnow && 
         mediumMAnow<slowerMAnow && 
         mediumMAprevious>=slowerMAprevious && 
         mediumMAafter<slowerMAafter))
        {
         CrossDown[d]=High[i]+Range* 0.5 ;
        }
     }
   if ((CrossUp[ 0 ]> 2000 ) && (CrossDown[ 0 ]> 2000 )) { prevtime= 0 ; }
   if ((CrossUp[ 0 ]==Low[ 0 ]-Range* 0.5 ) && (prevtime!=Time[ 0 ]) && (SoundAlert!= 0 ))
   
     {
      prevtime=Time[ 0 ];
       Alert ( Symbol (), " 3 MA Cross Up @  Hour " ,Hour(), "  Minute " ,Minute());
       //глобалку менять здесь
     }
   if ((CrossDown[ 0 ]==High[ 0 ]+Range* 0.5 ) && (prevtime!=Time[ 0 ]) && (SoundAlert!= 0 ))
     {
      prevtime=Time[ 0 ];
       Alert ( Symbol (), " 3 MA Cross Down @  Hour " ,Hour(), "  Minute " ,Minute());
       //глобалку менять здесь
     }
//Comment("  CrossUp[0]  ",CrossUp[0]," ,  CrossDown[0]  ",CrossDown[0]," ,  prevtime  ",prevtime);
//Comment("");
   return ( 0 );
  }
//------------------------------------------------------------
void ema() {
   double pr;  
   if (Coef == 0.0 ) { 
      pr = 2.0 /(MA_Period+ 1 );
   } else {
      pr = Coef;
   }
   int pos = Bars - 2 ;
   if (ExtCountedBars > 2 ) pos = Bars - ExtCountedBars - 1 ;
//---- main calculation loop
   while (pos >= 0 ) {
       if (pos == Bars - 2 ) 
         LiniaBuffer[pos+ 1 ] = (Open[pos+ 1 ]+Close[pos+ 1 ])/ 2 ;
      LiniaBuffer[pos] = GetPrice(pos)*pr+LiniaBuffer[pos+ 1 ]*( 1 -pr);
           pos--;
   }
}


//-------------------------------------------------------------------------------------------------------------------

//+------------------------------------------------------------------+
double GetPrice( int Shift) {
   double price;
//----
   switch (SetPrice) {
       case 0 :  price = Close[Shift]; break ;
       case 1 :  price = Open[Shift]; break ;
       case 2 :  price = High[Shift]; break ;
       case 3 :  price = Low[Shift]; break ;
       case 4 :  price = (High[Shift]+Low[Shift])/ 2.0 ; break ;
       case 5 :  price = (High[Shift]+Low[Shift]+Close[Shift])/ 3.0 ; break ;
       case 6 :  price = (High[Shift]+Low[Shift]+ 2 *Close[Shift])/ 4.0 ; break ;
       case 7 :  price = (Open[Shift]+High[Shift]+Low[Shift]+Close[Shift])/ 4.0 ; break ;
       case 8 :  price = (Open[Shift]+Close[Shift])/ 2.0 ; break ;
       default : price = 0.0 ;
   }
//----
   return (price);
}
//=====================================================================================================//
//     ------------------ F146___ПОПРАВОЧНЫЕ КОЭФФИЦИЕНТЫ ДЛЯ РАЗНЫХ ТАЙМФРЕЙМОВ ------------------- 
//=====================================================================================================//
double F146_Koeff()
{
   switch ( Period ())
   {
       case PERIOD_M1 :     return ( 12.0 );
       case PERIOD_M5 :     return ( 12.0 );
       case PERIOD_M15 :   return ( 2.5 );
       case PERIOD_M30 :   return ( 0.8 );
       case PERIOD_H1 :     return ( 0.33 );
       case PERIOD_H4 :     return ( 0.55 );
       case PERIOD_D1 :     return ( 0.15 );
       case PERIOD_W1 :     return ( 0.2 );
       case PERIOD_MN1 :   return ( 0.09 );
   }
}
 
Ftor_007:
皆さん、こんな提案があります。インジケータからExpert Advisorにターミナルのグローバル変数を通じて、1-2-3タイムフレームの1つからMA傾斜角の値を渡します。この値に基づいて、逆指値注文の方向によって異なるロット増加の倍率を取ることができます。ドローダウンを減らし、利益を増やすことができます。また、Expert Advisorが注文のグループの合計利益を取得する場合、または異なるテイクプロフィット値で動作する場合、フラットとトレンドのための仮想トレーリングストップの異なる値を取ることができます。また、フラット時に傾斜角がゼロに近い状態で、新たな注文を開始してはならない。ある人のインジケータを再設計しました。値はグローバルを通して任意のEAに渡されます。問題は、最近プログラミングをしていて、インジケータの書き換えがうまくいかないことです。iCustom経由でテスターでインジケータを使えるようにする必要があります(バッファをどうにかしないと、時間がかかりすぎてしまいます)。ここからアバランチの性能が向上することは大いにあり得ることです。 また、設定(CMDB - Machine Milking Broker Speed :-)©で初期設定した0.01ロットあたりの作業時間あたりのドルの値で、 アバランチの異なるバージョンのパフォーマンスを評価することを提案 します。また、この値に対するドローダウンの比率。
インジケーターのコードを添付します。
同級生の奥さんは、「100kmあたりのガソリン消費量なんて言わないで、1日あたりの車の消費量をルーブルで教えてよ」と、難色を示すが、明るい90年代である。
 
冗談は冗談として、このTSのために、預金の損失に対する保護を強化し、収益性を高めることが可能である。必要なのは、洪水を減らして、コードを増やすことです。
 
Ftor_007:
冗談はさておき、このTSの場合、デポジットの損失に対する保護を強化し、収益性を高めることが可能である。そのために必要なのは、洪水を減らし、コードを増やすことです。

私は毛羽立ちを抑え、あなたはコーディングに徹するという役割分担です。

もし、うまくいかなかった場合は、プログラミングでお手伝いする用意があります。

 

外部と内部の2つのオーダーコリドーで、それぞれ幾何級数的、算術級数的にロットを増やしていくことで、ドローダウンが非常に少なくなっています。 フラット時には、ロットの設定量が多くなくなり、MCの確率も下がります。USDJPYが最も良い結果を出しています。エキスパート関数にインジケータを挿入できるようになったら、収益性を高めていきたいと思います。テスターの預け入れは70ドル、ロット0.01に設定した。