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

 
Vinin >> :

それぞれのケースで、それぞれの解決方法がある


一般の方への建設的な批評のために、プログラムコードをお渡ししましょう(インジケータそのものへの建設的な批評はご遠慮ください)。でも、その前に説明です。これがTSI(トゥルーフォースインデックス)です。1日モメンタムに基づいています。これらの増分は、対応する平均値(21周期)で平滑化される。今度は、スケーリングを追加します。そのために、高値-安値の差をとり、同じ指数平均(21周期)で平滑化する。滑らかな運動量を滑らかな広がりで割ってみよう。この比率は、短い指数平均(5周期)で平滑化されています。 本線を入手した。さて、本線をヘッジ(EMA(, 5))で平滑化し、シグナルラインを得たことを喜びましょう。実は、TSIという代表的なトレンド指標があるのですから、もう一度、喜びましょう。私の実装では、さらに3つの「円」用のバッファを持っていて、本線と信号線の交差をマークするのに使っています。皆さん、コードを見てみましょう。

//--------------------------------------------------------------------
// TSI.mq4 
// Предназначен для использования в качестве трендового индикатора
//--------------------------------------------------------------------

#property indicator_separate_window         // indicator_chart_window, indicator_separate_window
#property indicator_buffers     3           // Количество буферов
#property indicator_color1      Red         // Цвет первой линии Red Blue Lime 
#property indicator_color2      Blue        // Цвет второй линии
#property indicator_color3      Yellow
#property indicator_level1      -20
#property indicator_level2       20
//#property indicator_minimum   -100
//#property indicator_maximum    100
 
extern int LengthMtm            = 21;
extern int LengthSmooth         = 5;
extern int LengthErgodic        = 5;
extern int HistoryLimit         = 2000;

double tsi[], ergodic[], cross[];           // Объявление массивов (под буферы индикатора)
double mtm[], base[], mtmMA[], mtmS[];


//-----------------------------------------------------------------------------
int MathSgn(double Value = 0.0)
{
    if ( Value < 0) return(-1); else return( 1);
}

//-----------------------------------------------------------------------------
int init()                         
{
    SetIndexBuffer(0, tsi);                                 // Назначение массива буферу
    SetIndexBuffer(1, ergodic);                             // Назначение массива буферу
    SetIndexBuffer(2, cross);                               // Назначение массива буферу
    
    SetIndexStyle (0, DRAW_LINE,        STYLE_SOLID, 1);    // Стиль линии DRAW_HISTOGRAM STYLE_SOLID
    SetIndexStyle (1, DRAW_LINE,        STYLE_SOLID, 1);    // Стиль линии        
    SetIndexStyle (2, DRAW_ARROW,       STYLE_SOLID, 0);    // Стиль линии
    SetIndexArrow (2, 161);
    
    SetIndexLabel(0, "TSI");
    SetIndexLabel(1, "Ergodic");
    SetIndexLabel(2, "Cross");
    IndicatorShortName("TSI("+ LengthMtm+","+ LengthSmooth+","+ LengthErgodic+")");    
    
    ArrayResize(        mtm,        Bars);
    ArrayResize(        base,       Bars);
    ArrayResize(        mtmMA,      Bars);
    ArrayResize(        mtmS,       Bars);

    ArraySetAsSeries(   mtm,        true);
    ArraySetAsSeries(   base,       true);
    ArraySetAsSeries(   mtmMA,      true); 
    ArraySetAsSeries(   mtmS,       true);


    return(0);                                      
}

//-----------------------------------------------------------------------------
int start()                         
{    
    if ( HistoryLimit == 0) HistoryLimit = Bars;
    
    int Counted_bars            = IndicatorCounted();
    int i                       = MathMin(Bars - Counted_bars - 1, HistoryLimit); 
    while( i >= 0 ) {        
     
        mtm[ i]                  = Close[ i] - Close[ i+1];
        base[ i]                 = High[ i]  - Low[ i];
        mtmMA[ i]                = iMAOnArray( mtm,   0, LengthMtm,     0, MODE_EMA, i) * 100;
        mtmMA[ i]               /= iMAOnArray( base,  0, LengthMtm,     0, MODE_EMA, i);
        mtmS[ i]                 = iMAOnArray( mtmMA, 0, LengthSmooth,  0, MODE_EMA, i);
        tsi[ i]                  = mtmS[ i];
        ergodic[ i]              = iMAOnArray( mtmS,  0, LengthErgodic, 0, MODE_EMA, i); 
        
        if ( MathSgn( tsi[ i+1] - ergodic[ i+1]) != MathSgn( tsi[ i] - ergodic[ i]) )       
            cross[ i]           = ergodic[ i];
        else
            cross[ i]           = EMPTY_VALUE;
        
        i--;                       
    }
    
    return(0);                          
}


アピールの理由を思い出してみてください。チャート上にインジケータを引き、ローソク足を数本飛ばし、同じ種類のインジケータをもう一本追加すると、あなたと私はインジケータ値のダイバージェンスを得ることができます。また、EAのビジュアルテストの際にこのインディケータを描き、後で同じインディケータをチャートに追加した場合、非常に強いダイバージェンスが発生します。このようなインジケーターのエラーについて、記事や個人の経験談を参考にさせていただけないでしょうか。ありがとうございます。
 
テスターからStop/Playボタンとスピードスライダーが消えています。どうすればいいのか?
 
VAM_ >> :
停止/再生ボタンとスピードスライダーがテスターにない。どうすればいいのか?

テスターの操作パネルを少し高くして・・・。マウスの左ボタンで...

 
Dmido >> :

ごきげんよう)


Expert Advisorを持っています。Expert Advisorを持っていて、大きなトレンドを察知して、それなりに優位に立てるのですが、魚のいない相場でスリッページをカバーするのがやっとです。

質問ですが、スケーリングイン用の信号はどのように書けばいいのでしょうか?考え方としては、最初のポジションの上にストップがあり、トレンドが出ているときに追加しています。


取引をするためのシグナルを送る本体そのものに興味があるのです。標準のMACDサンプルEAからコピーしたコードを使っています。

例えば、ロングポジションを建てた後、建玉とロングポジションの両方を一度に決済するような場合、どのように修正すればよいですか?


しかし、ディールはハエのように増殖し、その結果、1000のオープントレードを持つクソグラに なる(((


あるいは:EAのパフォーマンスをリアルタイムで視覚的に監視し、手動で補充する、それがグラニテ(芸術)ですが、グラニテではありません......。

 
IlyaA >> :
        mtmMA[ i]                = iMAOnArray( mtm,   0, LengthMtm,     0, MODE_EMA, i) * 100;
        mtmMA[ i]               /= iMAOnArray( base,  0, LengthMtm,     0, MODE_EMA, i);

mtmMA - 2つの異なる配列があるはずです。分割するときは、0に不等号がないかどうか確認することが望ましいです。


中間的な計算には、バッファを使用する方が便利です。

8では物足りないという方は、こちら( )で解決方法の1つをご紹介しています。

 
Swan >> :

mtmMA - 2つの異なる配列があるはずです。分割するときは、0に不等号がないかどうか確認することが望ましいです。


中間的な計算には、バッファを使用する方が便利です。

8枚では物足りないという方は、こちらで 解決策の一つを。






コメントありがとうございます。高値と安値の差の平均を話していることに注意してください。常にポジティブであること。そして、その傾向を補強するのが平均値です。確認したかったのですが、それなら何かあれば日誌で見ようと思います。ゼロによる除算ミスで、異なる間隔で足したグラフが発散してしまうことはないでしょうか。
 
IlyaA >> :


コメントありがとうございます。高値と安値の差の平均を話していることに注意してください。常にポジティブであること。そして、その傾向を補強するのが平均値です。確認したかったのですが、それなら何かあれば日誌で見ようと思います。ゼロによる除算ミスで、異なる間隔で足したグラフが発散してしまうことはないでしょうか。

が、確認することをお勧めします)

は、シフトなしの配列を使用するため、不一致が生じます。

 
IlyaA писал(а)>>

一般の方の建設的な批評のために、プログラムコードをあげておきます(インジケータそのものへの建設的な批評はご遠慮ください)。でも、その前に説明です。これがTSI(トゥルーフォースインデックス)です。1日モメンタムに基づいています。これらの増分は、対応する平均値(21周期)で平滑化される。では、スケーリングを追加してみましょう。そのために、高値-安値の差をとり、同じ指数平均(21周期)で平滑化する。滑らかな運動量を滑らかな広がりで割ることにしよう。この比率は、短い指数平均(5周期)で平滑化されています。本線を入手した。さて、本線をヘッジ(EMA(, 5))で平滑化し、シグナルラインを得たことを喜びましょう。実は、TSIという代表的なトレンド指標があるのですから、もう一度、喜びましょう。私の実装では、さらに3つのバッファを「円」用に用意し、主線と信号線の交点をマークするのに使っています。皆さん、コードを送ってください。

アドレスの理由を思い出してみてください。チャート上にインジケータを引き、ローソク足を数本飛ばし、同じようなインジケータをもう一本追加すると、インジケータ値のダイバージェンスが発生します。また、EAのビジュアルテストの際にこのインディケータを描き、後で同じインディケータをチャートに追加した場合、非常に強いダイバージェンスが発生します。このようなインジケーターのエラーについて、記事や個人の経験談を参考にさせていただけないでしょうか。ありがとうございます。

インジケーターは正常です。iMAOnArray()を別のループで呼び出すと、インジケータの設定時間に関係なく正しい動作が実現できます。

1つのループを3つのループに分割する必要があります。

iMAOnArray() がより正しく動作するようになります。

 
Swan >> :

が、確認することをお勧めします)

このズレは、シフトなしのアレイを使用したためです。

シフトがないと意味がよくわからない。言葉を足してください。

 
IlyaA >> :

シフトがないと意味がよくわからない。言葉を追加してください。

新しいバーが現れるとバッファ配列がシフトする。

上記リンク先で詳しく説明しています。

理由: