[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 235

 
FinBuda писал(а)>>

こんにちは、私は知識のある人に助けを求めています、私のインジケータは、フローによって描画することを望んでいない、私はそれを最後のバーに更新するために常にフレームを切り替える必要があります。とてもありがたいことです。

2つ目のインジケーターがないとテストできない。

 
Vinin >> :

セカンドインジケータがなければ、やはり確認しようがない。

ごめんなさい!訂正します :)

ファイル:
indu2.mq4  3 kb
 
FinBuda писал(а)>>

ごめんなさい!訂正します :)

もちろん動くのですが、ブレーキがひどいんです。補助表示器の計算を主表示器に移行する必要がある。一般的には、計算を最適化した方が良いと思います。

ファイル:
norms2.1.mq4  4 kb
 
Vinin >> :

もちろん動くのですが、ブレーキがひどいんです。補助表示器の計算を主表示器に移行する必要がある。一般的には、計算を最適化した方が良いと思います。

ありがとうございました。もうひとつ、計算を最適化するにはどうしたらいいのか、MACDを一定の範囲内で動かすにはどのように正規化するのがベストなのか、途中で質問させてください。私は詳細やプログラミングからは程遠いので、多かれ少なかれ適切なものを見つけることができたのは、上で見たノーマライザだけです :)

 
FinBuda писал(а)>>

ありがとうございました。また、途中でもう一つ質問なのですが、どのように計算を最適化すればいいのでしょうか、また、MACDを一定の範囲内で動かすにはどのように正規化すればいいのでしょうか。私は詳細やプログラミングからは程遠いので、多かれ少なかれ適切なものは上に示したノーマライザしか見つけられませんでした :)

最適化の選択肢はたくさんありそうです。コードにはあまり手を出しませんでした。

 
FinBuda >> :

ありがとうございました。もう一つ質問があるのですが、計算を最適化する方法と、MAKDを定義した範囲内に収めるために正規化する方法について教えてください。私はハードウェアやプログラミングからは程遠いので、多かれ少なかれ適切なものを見つけることができたのは、上で見たノーマライザーのみです :)

コードベースに掲載されたバリアントを使用していますが、これは単なるコンセプトであり、パフォーマンスの最適化はされていません。実用的な目的のために、私は外部変数から characteristic_period 変数を手動で設定することを提案し、与えられた期間数の間に主要な指標の 3-4 フルサイクルが発生するようにそれを選択します。

//+------------------------------------------------------------------+
//|                                                   Normalizer.mq4 |
//|                                          Copyright © 2008, al_su |
//|                                                  al_su31@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, al_su"
#property link      "al_su31@mail.ru"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_maximum 1
#property indicator_minimum -1
#property indicator_level1 0.25
#property indicator_level2 0.5
#property indicator_level3 0.75
#property indicator_level4 -0.25
#property indicator_level5 -0.5
#property indicator_level6 -0.75
#property indicator_color1 RoyalBlue
//---- input parameters
#define PERIODS_CHARACTERISTIC 3

extern string  Indicator="ind-2";
extern int     mode=0;
extern int     param1=8;//Ну или 9, не важно...
extern int     param2=34;
//extern int param3;Скока надо параметров, стока и задаем
extern double  characteristic_period; //как видите, переменную вынесли вовне

//---- buffers 
double Normalizer[];
double sigma;

//-------------------------------------------------------------------------------
double Indyuk(int shift)
{
   return (iCustom(0,0, Indicator, param1, param2,/*param3, и т.д.:)*/ mode, shift));
}

double MathTanh(double x)
{ 
   double exp;
   if( x>0)  {exp=MathExp(-2* x);return ((1-exp)/(1+exp));}
   else {exp=MathExp(2* x);return ((exp-1)/(1+exp));}
}

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorShortName("Normalized "+ Indicator);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Normalizer);
   SetIndexDrawBegin(0, characteristic_period);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   i, j, limit, counted_bars=IndicatorCounted();
   double S;
   if( counted_bars>0) counted_bars--;
   limit=MathMax(Bars- counted_bars-1,0);
//----
   for( i= limit; i>=0; i--)
   {
      S=0;
      for( j=0; j< characteristic_period; j++) S+=MathPow( Indyuk( i+ j),2);
      S/= characteristic_period;
      S=MathSqrt( S);
      if( S>0) Normalizer[ i]= Indyuk( i)/ S;
      Normalizer[ i]= MathTanh( Normalizer[ i]);
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alsu >> :

もう一つの方法(個人的にはこちらの方がよく使います)は、外部から実行日数を指定し、インジケータの本体で characteristic_period に変換する方法です。

...

extern double days_for_normalization=3;   // например, смотрим за три дня

...

int init()
{

...


characteristic_period=1440./Period()* days_for_normalization;   // 1440 - это количество минут в сутках
}
 
一般的には、Vinin さんの言うとおり、2つ目のインジケータのコードを1つ目のインジケータに挿入すると、計算が本当に速くなります。ここでの欠点は、より多くのコーディングをしなければならないこと(そして、kodobaseから取ったものは、この作業を単純化する方法を示す目的の一つでした)、さらに、2番目のインジケータが最初のインジケータのバッファを占有するので、常に受け入れられるわけではないことです。
 
皆さん、ありがとうございました!!!試してみよう :)
 

うまくいかないなぁ...ここのEAを全部読んでも、MMしか持ってないので、少し大人しく+を期待したいところです...えへへ...。


数学的な期待値-0.12は、長い時間間隔での最適化なしでも正常なのでしょうか?つまり、みんな最適化なしで手に入れて、フィッティングで期待値が上がるのか、それともオプションではなく、完全にEAを変えた方がいいのか?