2015年12月18日金曜日

一分足に五分足を表示させよう!! 無料ソースコード公開!!

先ほどソースを書いている時にUSD/JPY急上昇が来ました。
腐っていたLONGをすべて引き払ってくれました。
おおきにの一言です。(関東ではかたじけないっていうのかな...)

しかし私はこの引き金となった日銀なんたら会合結果公表を全く知りませんでした。
いつも「[みんかぶ」と「経済指標通知」というiPhoneアプリそしてGMOの経済カレンダーで見ているのですが、今日はプログラムを書きたくてみんかぶだけチェックしていたのですが... やはり複数確認しないといけませんね反省の限りです。

さて本題! いつも超高速トレードをしているのですが、
一分足と五分足そして十五分足が同じ動きをしている気がしません。
別々のチャートでみるとまったく別の通貨を見ている気にさえなってしまいます。
BARの幅も違うしなかなか理解できないところですね。
そこで一分足に五分足を表示させることにしました。
上は一分足、薄い色は五分足! 
下は五分足の拡大です。
にほんブログ村 為替ブログ システムトレード 自作EA派へ
にほんブログ村
五分足は0分5分10分とキリのいいところでスタートするのですが、
現在から1分前のクローズ、6分前のオープンで区切っています。
その方がリアルタイムかと思いまして...
PCに高負荷をかけるのでバーは100本(500分/8.3時間)にしています。


以下ソースコードです。
例によってコピペで使えます。
もうすこし関数をまとめてさっぱりさせろとおしかりを頂きそうですが
Hu-BASIC派の私の限界です。かんにんしてやぁ~



//  Cost Moving  2015/12/18    
#property copyright "TACA"
#property link "mt4kyoto.blogspot.jp"
#property indicator_chart_window
int counts=100;
int HighNum[30];
int LowNum[30];
void deinit()
{DelObj();}
void start()
{
ArrayResize(HighNum,counts);
ArrayResize(LowNum,counts);
DelObj();MakeObj();
for(int i=0;i<counts;i++)
  {
  HighNum[i]=iHighest(NULL,0,MODE_HIGH,5,1+i*5);
  LowNum[i]=iLowest(NULL,0,MODE_LOW,5,1+i*5);
  if (Open[5+i*5]>Close[1+i*5])
  {
    ObjectSet("objOC"+i, OBJPROP_COLOR,PowderBlue);
    ObjectSet("objH"+i, OBJPROP_COLOR,PowderBlue);
    ObjectSet("objL"+i, OBJPROP_COLOR,PowderBlue);
    ObjectMove("objH"+i, 0, Time[2+i*5],High[HighNum[i]] );
    ObjectMove("objH"+i, 1, Time[4+i*5],Open[5+i*5]);
    ObjectMove("objL"+i, 0, Time[2+i*5],Close[1+i*5]);
    ObjectMove("objL"+i, 1, Time[4+i*5],Low[LowNum[i]]);
  }
  else
  {
    ObjectSet("objOC"+i, OBJPROP_COLOR,Pink);
    ObjectSet("objH"+i, OBJPROP_COLOR,Pink);
    ObjectSet("objL"+i, OBJPROP_COLOR,Pink);
    ObjectMove("objH"+i, 0, Time[2+i*5],High[HighNum[i]] );
    ObjectMove("objH"+i, 1, Time[4+i*5],Close[1+i*5]);
    ObjectMove("objL"+i, 0, Time[2+i*5],Open[5+i*5]);
    ObjectMove("objL"+i, 1, Time[4+i*5],Low[LowNum[i]]);
  }
  ObjectMove("objOC"+i, 0, Time[5+i*5], Close[1+i*5]);
  ObjectMove("objOC"+i, 1, Time[1+i*5], Open[5+i*5]);
 }
}

void DelObj(){for(int i=0;i<counts;i++){
  ObjectDelete("objOC"+i);
  ObjectDelete("objH"+i);
  ObjectDelete("objL"+i);}}
void MakeObj(){for(int i=0;i<counts;i++){
  ObjectCreate("objOC"+i,OBJ_RECTANGLE,0,0,0);
  ObjectCreate("objH"+i,OBJ_RECTANGLE,0,0,0);
  ObjectCreate("objL"+i,OBJ_RECTANGLE,0,0,0);}}

0 件のコメント:

コメントを投稿