Color Day インジケーターを使ったトレーディング手法

Mike 2017.01.18 18:27 10 0 0
添付ファイル

Color Day インジケーターは、上昇日と下降日を色分けして表示する便利なツールです。

日足の終値が始値を上回ると、設定でカスタマイズ可能な青色で表示されます。

input color UP = Blue;  // 上昇日の色

逆に、日足の終値が始値を下回ると、赤色で表示されます(こちらも設定でカスタマイズ可能です)。

input color DN = Red;  // 下降日の色

指定した日数Daysに対して、始値、終値、開場時間をコピーします:

CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

これを対応する配列に格納します:

datetime tm[];
double op[];
double cl[];

インジケーターをチャートにインストールする前に、配列のサイズを設定します:

int OnInit()
  {
//--- インジケーターバッファのマッピング
   Comment("");
   ArrayResize(tm,Days);
   ArrayResize(op,Days);
   ArrayResize(cl,Days);
//---
   return(INIT_SUCCEEDED);
  }

配列の値を変数に割り当て、日々の終値の時刻time1を決定します:

datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

PutRect() 関数を使って、日ごとの四角形を描画します:

void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr)
  {
   ObjectDelete(0,name);
//--- 指定された座標で四角形を作成
   ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2);
//--- 四角形の色を設定
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- 四角形の塗りつぶしモードを有効化(true)または無効化(false)
   ObjectSetInteger(0,name,OBJPROP_FILL,true);
  }

価格の動きに応じて色を付けます:

if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

指定したDaysのすべての日をループで処理します:

for(int i=0;i<=Days;i++)
     {
      CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

      datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

      if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

チャートからインジケーターを削除する際には、DeleteObjects() 関数を使用します:

void DeleteObjects()
  {
   for(int i=ObjectsTotal(0,0,OBJ_RECTANGLE)-1;i>=0;i--)
     {
      string name=ObjectName(0,i,0,OBJ_RECTANGLE);
      if(StringFind(name,"Rect",0)>=0) ObjectDelete(0,name);
     }
  }

作成したオブジェクトをチャートから削除します:

void OnDeinit(const int reason)
  {
   Comment("");
   DeleteObjects();
  }

設定:

input int   Days = 11;  // 計算に使用する日数
input color UP = Blue;  // 上昇日の色
input color DN = Red;   // 下降日の色

Fig. 1. チャート上のインジケーター


ヒント:

  • Color Day インジケーターは、視覚的トレーディングアシスタントです。
リスト
コメント 0