基礎から学ぶシステムトレード
シストレブログ人気ランキング  

シストレ徹底攻略シストレマスターへの道ワールド・トレーディング・エッジ基礎から学ぶシステムトレードシストレニュースシストレツールシストレナビTOPへ

 

2012年02月21日(火)

コピートレードのプログラミング(6) [MQL5]



今回は、コピー元がMT5の場合のプログラムを紹介します。

MT4とMT5ではプログラミングの作法で結構違うところがあるのですが、ポジションをファイルに出力するプログラムでは、オープンポジションのロット数を算出するところ以外はそれほど大きな違いはありません。

MT5でロット数を算出する部分は次のように書けます。

double lots = 0.0;
if(PositionSelect(_Symbol))
{
lots = PositionGetDouble(POSITION_VOLUME);
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) lots = -lots;
}

まずは、関数PositionSelect()でポジションを選択するのですが、MT4のようにポジションを1個ずつ選択するのではなく、通貨ペア単位でまとめて選択します。

PositionSelect(_Symbol)で、挿入したチャート上の通貨ペアを選択し、それが成功すれば、PositionGetDouble(POSITION_VOLUME)で、その通貨ペアの合計ロット数を求めます。

但し、このロット数はプラスの値なので、買いポジションなのか、売りポジションなのかわかりません。そこで、その次の行で、売りポジションの場合にlotsの符号をマイナスにします。

これで、MT4の場合と同じくファイル出力用のロット数をlotsに求めることができます。

あとは、ちょっとした修正を施せばMT5用のプログラムが完成です。

void OnTick()
{
// ロット数を保存するための変数
static double oldlots = 0;

// オープンポジションの合計ロット数
double lots = 0.0;
if(PositionSelect(_Symbol))
{
lots = PositionGetDouble(POSITION_VOLUME);
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) lots = -lots;
}
// ロット数に変化がない場合
if(lots == oldlots) return;

// ファイルへ出力
int hFile = FileOpen(_Symbol+".txt", FILE_WRITE|FILE_CSV|FILE_ANSI);
if(hFile == -1) return;
FileWrite(hFile, lots);
FileClose(hFile);
// ロット数を更新
oldlots = lots;
}

修正箇所は、最初の行で「int start()」の代わりに「void OnTick()」と書くこと、FileOpen()の最後のパラメータに「FILE_ANSI」を追加すること、「return(0)」の代わりに、単に「return」とだけ書くことです。

これをコンパイルしてEAとしてチャートに挿入すると、MT4と同様にポジションをファイルに出力させることができます。


>>“基礎から学ぶシステムトレード”全記事バックナンバーはこちらから




Posted at 13時54分


ページのトップへ ページのトップへ

Sponsor AD

2012/2

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

プロフィール

豊嶋久道

2003年よりFX取引を始め、システムトレードの道へ。最近ではFXオプション取引も含めたトレーディングシステムの研究を行っている。システムトレードを基礎から正しく理解するための情報を発信する予定。

PHOTO

ランダムウォークとランダムトレード(4)

ランダムウォークとランダムトレード(4)

カテゴリーリスト

最近の記事

検索


当サイトコメントについて

当コメントは情報提供のみを目的として作成されたものであり、投資に関してはご自身でご判断くださいますようお願い致します。また、当資料は著作物であり著作権法により保護されております。無断で全文または一部を転載することはできません。

RSS1.0

[Login]


powered by a-blog
Copyright (C) 2008 PhiConcept,Inc. All rights reserved.