Bidの下にラインを引く。

haru 2010/04/20 22:15
はじめまして、haruと申します。
最近トレードしてて思ったことがあるのですが、
自分の損切りは必ず5pipsと決めているのですが、
Bid、Askラインの上下にさらに自分の決めた損切りラインを表示させたいのですが、
そんな事って出来るのでしょうか?


水平ラインオブジェクトを作れば可能です。チャート上にオブジェクトを作る時は、オブジェクト名に外部変数(extern変数)を含めるのがポイントです。このようにしないと、チャート内に複数の設定の異なるラインインジケータを置いても1本しか表示されません。

#property indicator_chart_window
extern bool  UseAsk    = false;
extern int   pips      = -5;
extern color LineColor = DeepPink;
string objname;

int init()
{
   //↓オブジェクト名に color 型や bool 型変数も繋いでいる
   objname = "HaruLine_"+pips+"_"+LineColor+"_"+UseAsk;
   ObjectCreate(objname,OBJ_HLINE,0,0,Bid + pips*Point);
   ObjectSet(objname,OBJPROP_COLOR,LineColor);
   return(0);
}
int deinit()
{
   ObjectDelete(objname);
   return(0);
}
int start()
{
   double price = Bid;
   if(UseAsk) price = Ask;
   ObjectSet(objname,OBJPROP_PRICE1,price + pips*Point);
   return(0);
}

↑ちなみに、このサンプルのように init() 内のみで ObjectCreate すると、チャート上でうっかりラインを選択削除してしまった場合に、ラインが消えたままになってしまいます。なので、本来は start()内で ObjectFind して、見つからなければ ObjectCreate するのが普通(過去記事参照)ですが、逆に選択削除だけでラインが消せる(!)と考えることもできます。この辺りは好みで作りこむのが良いでしょう..。


閑話休題

最近みつけたEAクリエイターさん(商用)が、ここ。過去記事を見ると、MT4 初心者向けに動画で解説していてマメだなぁと思ったので紹介しておきます。