為替ロボットの作り方(FXCM用) プログラミング

kawarobo 2005年6月29日 12:37
【プログラミングをする】

式化したルールを、MetaQuoteLanguageⅡ(MQLⅡ)という言語でプログラミングしましょう。

MQLⅡについてはMQLⅡのページで少しずつ説明をしていきますので、ここではこんな感じのものかというのをつかむ程度でいいと思います。

プログラミングはSBFXのMetaEditorで行います。
SBFXのTools > MetaQuotes Language Editor からエディターを立ち上げ、 File>Newから新規エキスパートを作成して下さい。
(詳しくは「MetaEditor入門」)

以下のように記入します。

*1 長期線と短期線の期間を変更できるよう、「defines:」で、MALongPeriod(長期期間),MAShortPeriod(短期期間) という定数をセットしました。こうしておくと、後から期間を変更するのが容易になります。
*2 自分で決める変数(定数以外)は全て、「var:」で宣言しておく必要があります。(まとめて宣言する場合は「vars:」「( )」内は初期値でこれにより数値変数か文字列変数かが決定)参考:MQLⅡ簡易リファレンス
*3 iMA(期間,MODE_SMA,0)で現在の単純移動平均の値が出ます。最後の数字を1に変えると一本前の値、2にすると二本前の値が得られます。今回は終値ベースのため、一本前と二本前の値を使用します。
*4 close[0]で現在の値、close[1]でチャート上で1本前の終値(直近の終値)、close[2]だと2本前の終値。
*5 この部分は/*~*/で括られているので実行されません。デバッグ用に各値を出力したいときは/* */を外します。参考:MQLⅡ簡易リファレンスPrint
*6 TotalTradeは保有ポジションの数。(未約定のオーダーも含める)
ただし、異なる通貨も同時に運用していた場合、そのポジション数も全てカウントされてしまうので、現在の通貨のポジションだけを取り出して調べる。参考:If文For文
*7 OrderValue(ポジション番号,VAL_TYPE)で保有ポジションのタイプが得られる。買いはOP_BUY、売りはOP_SELL
*8 ポジションが無ければ、GC前、DC前でないかを調べて、条件が合えば注文を出す
*9 条件式は &(=and) や|(=or)で組み合わせが可能
*10 SetOrder()で売りや買い。
*11 ポジションがある場合、GC,DCでないかを調べる
*12 CloseOrder()でポジションを閉じる。

トラックバック(0)

http://kawarobo.com/mt/mt-tb.cgi/499

コメントを書く

PageTop

RSS

ヤフオク

おすすめFX口座

ひまわり証券【証券CFD取引】
FX 比較なら