MT4でiCustomからインジケータの値を取得できないときは、オブジェクトかも
2016年9月30日
![コード](https://auto-ts.net/wp-content/uploads/2016/09/スクリーンショット-2016-09-30-17.12.36.png)
最近、久々にMT4のExpertAdvisorの受託を受け、カタカタとMetaEditorを叩いておりました。
どんなEAかというと、ある海外産のインジケータをもとに売買する、というEAです。インジケータから値さえ取得できれば非常に簡単なEAです。
通常、インジケータから値を取得するにはiCustom関数を使います。
double iCustom(string symbol, int timeframe, string name, …, int mode, int shift);
こんな本もあるくらいなので、非常に有名な関数だと思います。
iCustom(アイカスタム)で変幻自在のメタトレーダー (Modern Alchemists Series)
Amazonでチェックする楽天で購入Yahoo!ショッピング
ですが、世の中にはiCustomではデータが取得できないインジケータもあります。例えばOANDAのオープンオーダーですが、これはiCustomからは取得できません。
さて、そんなOANDAのオープンオーダーからデータ値を取得するにはどうすればいいのでしょうか。
こういう場合、たいていチャート上にObjectが生成され、その中に文字列が入っていることが多いですので、オブジェクト内の文字列を読む方法を紹介します。
MT4でオブジェクトの値を読むには
まずはオブジェクトがあるのか確認してみましょう。
いろいろな方法がありますが一番簡単な方法で。インジケータがセットされたチャート上で右クリックし、「表示中のライン等」をクリックし、
表示された次のウインドウに何かあればオブジェクトがあります。
OANDAオープンオーダーインジケータは何も表示されませんね・・・、ではプログラムから見てみましょう。
超シンプルですが、このようなコードを書いて実行してみます。
for(int i=0;i<ObjectsTotal();i++){
string name = ObjectName(i);
Print(name);
}
ObjectsTotal()にはチャート上のオブジェクト総数(int)が入っていますので、この数までforをブン回し、
オブジェクトの名前をObjectName()で取得します。
するとたくさん出てきました、OANDAオープンオーダーインジケータの中身です。
中身のテキストを取得するために今度はこんなコードを書いてみました。
for(int i=0;i<ObjectsTotal();i++){
string name = ObjectName(i);
Print(getText(name));
}string getText(string objectName){
if(ObjectType(objectName)==OBJ_TEXT || ObjectType(objectName)==OBJ_LABEL){
return ObjectDescription(objectName);
} else {
return “";
}
}
ObjectDescription()ではオブジェクトの中身の文字列を取得できます。ただし、オブジェクトには矢印とか水平線とか、文字列じゃないものも沢山ありますので、
if(ObjectType(objectName)==OBJ_TEXT || ObjectType(objectName)==OBJ_LABEL)
をくっつけて、テキストかラベルのものしか反応しないようにしています。
するとこんな感じで文字列が取得できます。
厚めの買い注文(100.75-100.80)
厚めの売り注文(101.75-101.80)
これでプログラムからOANDAオープンオーダーインジケータの値が取得できるようになりました。
あとはStringFindで「買い」とか「売り」の部分文字列検索して、その値でOrderSendしてやれば、EAができちゃいますね!(^o^)
Posted by auto-ts.net
関連記事
![Thumbnail of related posts 027](https://auto-ts.net/wp-content/uploads/2017/01/33987ba550454ba8da2b9409bb2f78a7-100x100.gif)
自動売買ポータルサイト、fx-onでの自動売買プログラムEAの購入方法
fx-onは、数多くの自動売買トレーダーが愛用する「自動売買ポータルサイト」です ...
![Titan](https://auto-ts.net/wp-content/uploads/2016/12/76ff5821166d6107a09ca4d6a3d08903-100x100.png)
低スプレッド・高レバレッジな海外FX業者 Titan FX Bladeの口座開設、入金から取引まで解説
今回は、海外FX業者の中でも最近かなり日本人に対して有名になりつつあるTitan ...
![ユーロ](https://auto-ts.net/wp-content/uploads/2016/09/bank-note-209104_640-100x100.jpg)
MT4対応FX会社の選び方!国内業者と海外業者の違いなどをまとめました
MT4でFX自動売買を始めるには、MT4対応の業者の口座を開く必要があります。 ...
![ブレイクスキャルシステム](https://auto-ts.net/wp-content/uploads/2017/01/e0c059823b9d13ffcd1ee53da08b7ee8-100x100.png)
話題の安定収益EA、ブレイクスキャルシステムを購入しました
今回はブレイクスキャルシステムというEAを購入しました。 FXを経験した方なら必 ...
![TMAバンド](https://auto-ts.net/wp-content/uploads/2017/03/170127takagi1L-100x100.png)
TMAバンド(三角移動平均)とバブルバンドを使ったFX自動売買戦略の検証
先日、こんなFX売買戦略の記事が私の目にとまりました。 ブラッドリーさん(その2 ...