縦線。 - ページ 2

 
Alexey Viktorov:

何をしたいのか、決めないと...。

あなたが混合したい場合は、唯一の時々ジグザグの2つの垂直方向のセクション間の接続を削除するには、条件によって、色のないジグザグと場所を取る方が良いでしょう。

実際、グラフィックプロットに関する ドキュメントのセクション全体を読むとよいでしょう。何ができるのか、ある程度はわかると思いますが...。

"2点間を時間と価格で線を 引く "インジケーターを作り始めたのですが...。

すべてが良いのですが、ポイントの時間が1本のキャンドルになることがあり... "

線分ではなく、線分という言葉を使った私が悪いのですが。すぐに写真を挿入すればよかった。

ありがとうございます。カラージグザグを試してみます。斜めのセグメントのために余分なバッファを作るより簡単だと思います。
 
Alexey Viktorov:

混在させる必要がある場合は、時折、ジグザグの縦の2つの部分の接続を外すだけで、慣習的に、色のついたジグザグを取り、ところどころに色をつけないように割り当てるのがよいでしょう。

さて、色のついたジグザグで色がないのはどうすればいいのか、ではありません。もし難しくなければ(あなたにとって5分以上はかからないと思います)、この例で色の欠如を割り当てることができますか?どのような線が欠落しているはずなのか、写真を添付します。


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot ZigZag
#property indicator_label1  "ZigZag"
#property indicator_type1   DRAW_COLOR_ZIGZAG
#property indicator_color1  clrRed,clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  10
//--- input параметры
//--- indicator buffers
double         ZigZagBuffer1[];
double         ZigZagBuffer2[];

int            color_sections;
double         Color_ZigzagColors[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- связывание массивов и индикаторных буферов
   SetIndexBuffer(0,ZigZagBuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,ZigZagBuffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Color_ZigzagColors,INDICATOR_COLOR_INDEX);
   color_sections=0; 

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int limit=prev_calculated;
   if(prev_calculated==0)limit=rates_total-1;

   for(int i2=limit;i2<rates_total;i2++) // recalculate on new bar
     {
      for(int i=0;i<rates_total;i++)
        {
         if(i==rates_total-3 || i==rates_total-12 ||  i==rates_total-18) // Test VLines and TLines! 
           {
            ZigZagBuffer1[i]=high[i];
            Color_ZigzagColors[i]=color_sections;
           }
         else
           {
            ZigZagBuffer1[i]=EMPTY_VALUE;
           }

         if(i==rates_total-7 || i==rates_total-12 || i==rates_total-20) // Test VLines and TLines!   
           {
            ZigZagBuffer2[i]=low[i];
            Color_ZigzagColors[i]=color_sections;
           }
         else
           {
            ZigZagBuffer2[i]=EMPTY_VALUE;
           }

        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Nauris Zukas:

色のジグザグに色がないのがいただけない。もし難しくなければ(あなたにとって5分以上はかからないと思います)、この例で色の欠如を割り出すことができますか?どのような線が欠落しているはずなのか、写真を添付します。


1.

#property indicator_color1  clrRed,clrNone

2.

Color_ZigzagColors[i]=0;

カラーはレッドになります

Color_ZigzagColors[i]=1;

色もないでしょう。

また、変数

int            color_sections;
は完全に余計なお世話です。
 
Alexey Viktorov:

1.

2.

カラーはレッドになります

色もないでしょう。

また、変数

は全く必要ありません。

ありがとうございます。しかし、関数レベルではうまくいきません。関数に何を追加または削除すれば、これらの行を消すことができますか?ここでclrNoneを実装するにはどうしたらいいですか?

         if(i==rates_total-3 || i==rates_total-12 ||  i==rates_total-18) // Test VLines and TLines! 
           {
            ZigZagBuffer1[i]=high[i];
            Color_ZigzagColors[i]=0;
           }
         else
           {
            ZigZagBuffer1[i]=EMPTY_VALUE;
           }

         if(i==rates_total-7 || i==rates_total-12 || i==rates_total-20) // Test VLines and TLines!   
           {
            ZigZagBuffer2[i]=low[i];
            Color_ZigzagColors[i]=0;
           }
         else
           {
            ZigZagBuffer2[i]=EMPTY_VALUE;
           }
           
 
Nauris Zukas:

ありがとうございます。しかし、これを関数レベルで適用させることができません。この行を消すには、関数で何を追加または削除すればよいのでしょうか?ここでclrNoneを実装するには?

あるところでは0、別のところでは1

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

縦線。

アレクセイ・ビクトロフ さん 2018.10.12 17:29

Color_ZigzagColors[i]=0;

カラーはレッドになります

Color_ZigzagColors[i]=1;

色もないでしょう。

そして、あなたのコードでは、次の2つのケースで同じです。

Color_ZigzagColors[i]=0;


 
Alexey Viktorov:

片方で0、もう片方で1

あなたのコードでは、両方のケースで同じです。


以下がその内容です(わかりやすくするためにclrNoneの代わりにclrYellowとしました)。接続線(青い十字マーク)の代わりに、真ん中の縦線(赤丸)が消えます。したがって、機能レベルですでに何かが間違っているのだと思います。


 
Nauris Zukas:

このようになります(わかりやすくするためにclrNoneをclrYellowに置き換えています)。また、接続線(青枠)ではなく、真ん中の縦線(赤枠)も消えます。したがって、機能レベルですでに何かが間違っているのだと思います。


手書きではなく、インジケータで描かれたコードと図面を提供する。ジグザグの垂直部分を描けるようになったのは、ごく最近のことです。その議論にラシード・ウマロフが参加し、彼の提案で今回の変更が行われました。このオプションが確定した場合、ラシードを招待する予定です。

 
Alexey Viktorov:

手書きではなく、インジケータで描かれたコードと図面を提供する。ジグザグの垂直部分を描けるようになったのは、ごく最近のことです。その議論にラシード・ウマロフが参加し、彼の提案で今回の変更が行われました。このオプションが確定した場合、ラシードを招待する予定です。


ファイル:
 
Nauris Zukas:


面白いですね、これだけ太い線だと手書きの線のように見えますが...。

ラシード・ウマロフ

あるスレッドで、DRAW_ZIGZAGで縦線を引くことが不可能であるという議論に参加されましたね。その一例が前回の記事です。その話し合いの結果、変更が加えられ、機能が追加されたのです。さて、DRAW_COLOR_ZIGZAGにはもう一つ問題があります。それは、各セグメントに一貫した色を設定することができないことです。もしかしたら、この欠点をグラフィカルな表示でも解決する方法があるのでは?

 
Alexey Viktorov:

面白いですね、これだけ太い線だと手書きの線のように見えますが...。

ラシード・ウマロフ

あるスレッドで、DRAW_ZIGZAGで縦線を引くことが不可能であるという議論に参加されましたね。その一例が前回の記事です。その話し合いの結果、変更が加えられ、機能が追加されたのです。さて、DRAW_COLOR_ZIGZAGにはもう一つ問題があります。それは、各セグメントに一貫した色を設定することができないことです。もしかしたら、この欠点をグラフィカルな表示でも解決する方法があるのでは?

あるとすれば、それはすぐにはないでしょう。優先順位の低い遠いタスクとして、100位のどこかに入っていることでしょう。