前回
TrimPips MT5対応 価格をPIPSに換算する(MQL4からMQL5へ)
TrimPips MT5対応 価格をPIPSに換算する(MQL4からMQL5へ)
今回は、チャート画面に表示するPIPSの実現です。
チャート画面にpipsの描画をする際に
Time[0]やClose[0]を使用していたのですが、
1 2 3 4 5 6 7 |
ObjectCreate(i_chart_id, obj_name, // オブジェクト作成 OBJ_LABEL, // オブジェクトタイプ 0, // サブウインドウ番号 Time[0], // 1番目の時間のアンカーポイント Close[0] // 1番目の価格のアンカーポイント ); こ |
これがコンパイルエラーになってしまう
これは後回しにして
決め打ちで表示させてみる
おー、表示した。
でもマウスでPIPS表示をドラッグできない(´・ω・`)
しかも、既存のロジックに通すと描画されない。
1 2 3 4 5 |
if(ObjectSetString(i_chart_id, obj_name, OBJPROP_TEXT, strpips) == false) // 表示するテキスト { Drawlbel(pobj_name, npips_y_pos); //ないので作成する ObjectSetString(i_chart_id, obj_name, OBJPROP_TEXT, strpips); } |
こんな風にやっていたのだが、常に
ObjectSetString()がtrueで返るらしく、描画されない。
調べるとObjectSetStringが非同期のため
この関数自体は、オブジェクトの有無に
関わらず、「true」で返却されるのだ。
したがって、判別に使用できない。
と、ありました。それ用の関数(ObjectFind())が、
1 2 3 4 5 |
if(ObjectFind(CHARTID, obj_name) <0) //描画済み? { Drawlbel(pobj_name, npips_y_pos); //ないので作成する ObjectSetString(CHARTID, obj_name, OBJPROP_TEXT, strpips); }こ |
これは、いい感じです。
と思いきや、左下のポッチでドラッグするらしい。
※集中しないとドラッグできません^^
うーん、これは、PIPS整理機能をもう少し充実させたいところ。
なので、座標を取得できないかやってみた。
1 2 3 4 |
Print("OBJPROP_XDISTANCE = ",ObjectGetInteger(CHARTID,obj_name,OBJPROP_XDISTANCE,0)); Print("OBJPROP_YDISTANCE = ",ObjectGetInteger(CHARTID,obj_name,OBJPROP_YDISTANCE,0)); Print("OBJPROP_XOFFSET = ",ObjectGetInteger(CHARTID,obj_name,OBJPROP_XOFFSET,0)); Print("OBJPROP_YOFFSET = ",ObjectGetInteger(CHARTID,obj_name,OBJPROP_YOFFSET,0));ざ |
残念どれも0が返ってきた
なので、PIPS整理のカスタマイズは
スルーします。