Draw_Color_Arrowをストラテジーテスターで起動した時について

 

おはようございます。主題の件で質問です。

動いているチャートにインジケータを挿入した際は、矢印条件達成で矢印表示する形なので問題ないです。

ただ、ストラテジーテスターで同じDraw_Color_Arrowのインジケータ―をテストすると、

添付画像ファイルの様にラインが表示されてしまいます。

これはそういう仕様なのでしょうか?

解る方いらっしゃいましたら教えてください、よろしくお願いします。


コードを一部抜粋です。

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
//バッファの設定
   SetIndexBuffer(2, Sell, INDICATOR_DATA);
   SetIndexBuffer(3, SellColors, INDICATOR_COLOR_INDEX);

   PlotIndexSetInteger(1, PLOT_ARROW, ARROW_DN);
   PlotIndexSetInteger(1, PLOT_ARROW_SHIFT, -ExtArrowShift);
   PlotIndexSetDouble(1, PLOT_EMPTY_VALUE, EMPTY_VALUE);

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
//矢印表示条件 
  if(矢印条件) {
      Sell[1]=low[1];
      SellColors[1]=0;
   } else {
      SellColors[1]=1;
   }

ファイル:
 

SellColor の2番目の色を clrNONE にしたら消えない?

て、言うか条件が if ~ else しかないのになぜわざわざカラーバッファを立ててるのかそれが疑問。

 
Nagisa Unada:

SellColor の2番目の色を clrNONE にしたら消えない?

て、言うか条件が if ~ else しかないのになぜわざわざカラーバッファを立ててるのかそれが疑問。

こんにちは、お返事ありがとございます。

前回の気づかず先ほど返信しました。すみません。(^^;


SellColor の2番目の色を clrNONE にしたら消えない?

同じファイルを動いているチャートとテスターとで試しましたが、テスターでは消えませんでした。

て、言うか条件が if ~ else しかないのになぜわざわざカラーバッファを立ててるのかそれが疑問。

著書の参考コードがそのように書かれていた為です。

 

ストラテジーテスターで矢印の出るインジケーターを動かしてみましたが何も異常はありません。

たぶんカラーバッファを削除して、プロパティで色を指定すれば問題ないはず。

 

お返事ありがとうございます。

質問したファイルを DRAW_ARROW で作り変えましたが、何故かラインが出てしまいました。

原因が不明です。(*_*)

両方ともコードを添付します、よろしければ今回の問題個所がありましたら添削お願いします。m(_ _)m

 
#property indicator_buffers 3 //6
//double         Cal[];  //削除
//SetIndexBuffer(3, Cal, INDICATOR_CALCULATIONS);  //削除
//ArraySetAsSeries(Cal, true);  //削除
//---
   ArraySetAsSeries(high, true);
   ArraySetAsSeries(low, true);
   ArraySetAsSeries(close, true);

//--- data creation データ作成
   int i, limit, count;

   if (prev_calculated == 0)
   {
      count = rates_total;
      limit = rates_total - MA_Period;
   }
   else
   {
      count = rates_total - prev_calculated + 1;
      limit = count;
   }
   //if(count==0)
   //   count++;
   CopyBuffer(hMA, 0, 0, count, MA);
   //CopyClose(NULL, 0, 0, count, Cal);
//---
   for (i = limit; i >= 0; i--)
   {
      if((close[i] > MA[i]) && (close[i + 1] < MA[i + 1]))
         Buy[i] = high[i];
      else
         Buy[i] = EMPTY_VALUE;

      if((close[i] < MA[i]) && (close[i + 1] > MA[i + 1]))
         Sell[i] = low[i];
      else
         Sell[i] = EMPTY_VALUE;
   }
//--- return value of prev_calculated for next call
   return(rates_total);
原因は for ~ loop がなかったことです。
 


ありがとうございます。そのままコピーペーストをして試しました。

それでもやっぱりラインが出てしまうようです。

何か他の原因かもしれないですね。

ファイル:
 

私のMT5では何も出てきません。

設定か何かが違うのでしょうけど、再現できないので分かりません。


データウィンドウに何か関係ないものがありませんか?


 

何度も確認していただきありがとうございました。

結局色々試しましたが、原因が解りませんでした。

データを削除し、データ復元後、再起動したら正常に動きました。

 
Nagisa Unada:

データウィンドウに何か関係ないものがありませんか?

Nagisaさんと同様の表示です。

 
了解です。結局何が起こったのか分かりません。
理由: