ワールド・トレーディング・エッジ
シストレブログ人気ランキング  

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

 

広告

2008年01月31日(木)

(EA)時刻を指定した自動売買(2) [MetaTrader]

前回紹介したプログラムの解説を行っていきましょう。
念のため再度プログラムを掲載しておきます。

画像(320x226)・拡大画像(673x477)

上から順に見ていきます。

#include

これは以前に説明したライブラリを利用するためのインクルード文です。
ポジションのクローズと注文のキャンセルをする関数 ClosePositionsAndCancelOrders を使用するために宣言しています。

// 売買開始時刻
extern datetime StartTime = D'';
// 売買終了時刻
extern datetime EndTime = D'';

// 現在価格からのピップ数
extern int OffsetPips = 10;

パラメータとして、売買開始時刻・終了時刻と、現在価格からのピップ数を用意しています。
開始・終了時刻については前回説明したとおりです。
現在価格からのピップ数については、ストップ注文を送信するとき、そのときの価格(Bid, Ask)からこのピップ数だけ外側にストップ価格を設定するようにしています。

次にstart関数の中身について見ていきます。

まず最初に現在時刻を取得しています。
現在時刻が売買開始価格より前、または売買終了時刻より後の場合はポジションのクローズ・注文のキャンセルを行います。
ポジション・注文ともにない場合は、ClosePositionAndCancelOrders関数は何もしないので問題ありません。
この関数の呼び出しの後、returnによってstart関数を抜けるので、注文送信は行いません。

売買開始時刻になると、OrdersTotalによってポジション・注文の数を取得します。
このとき、ポジション・注文ともにない場合、買いと売りのストップ注文を送信します。
次にstart関数が実行されたときには、OrdersTotalが2(もしくはそれ以上)を返すはずですので、注文の送信は行いません。
注文が約定してポジションになったときにも、注文とポジションの合計数は変わりませんので、注文は送信されないことになります。

売買終了時刻になると、最初のif文でポジションのクローズ・注文のキャンセルが行われます。

ちなみに、このプログラムをコンパイルすると2つのwarning(警告)が表示されますが、特に実行には問題ありません。

画像(264x119)

datetime型の変数に D'' を設定すると、パラメータの入力時(実際にEAを動かすとき)に現在の日付・時刻が自動的に挿入されるので、私は好んで使用しています。
(もしかすると、もっとスマートな方法があるかもしれません。)

Posted at 21時15分 パーマリンク

2008年01月26日(土)

(EA)時刻を指定した自動売買 [MetaTrader]

前回はライブラリの説明をしましたが、売買プログラムを早く書きたい!という方にはちょっと退屈な内容だったかもしれません。
(それでも便利な機能なのでご紹介しました。)

そんな方たちのために、久しぶりに具体的な売買ストラテジーのプログラムを紹介したいと思います。
今回作成する売買ストラテジーは以下になります。

 ・あらかじめ指定した開始時刻になったとき、買いと売りのストップ注文(逆指値注文)を送信する。
 ・あらかじめ指定した終了時刻になったとき、注文の取り消しとポジションのクローズを行う。


これは、重要な経済指標の発表時などに使えるのではないかと思います。
例えば、アメリカの雇用統計の発表時に相場が大きく動くことは周知の事実ですが、発表の少し前に売り/買いのストップ注文をおいておけば、その動いた方向についていくことができます。
設定した終了時刻になると、約定していないストップ注文はキャンセルされ、約定してポジションになったものはクローズされます。

実際にプログラムを作成してみましょう。
MetaEditorのExpert Advisor WizardからExpert Advisorを作成します。名前は何でもかまいません。
作成したプログラムを以下に掲載します。

画像(320x226)・拡大画像(673x477)

プログラムの解説は次回行います。

Posted at 13時12分 パーマリンク

2008年01月22日(火)

ライブラリの利用(4) [MetaTrader]

前回は作成したライブラリを使用して、実際にスクリプト中からライブラリの関数を呼び出すことができました。
これで一応ライブラリは使用することができるようになりましたが、インクルードファイルというものを使用すると、ライブラリの利用がもっと便利になります。
今回はこのインクルードファイルの作成方法、利用方法について説明したいと思います。

いつものように、MetaEditorの「File」-「New」でExpert Advisor Wizardを起動します。
起動したら、上から5つ目の「Include(*.MQH)」を選択して、「次へ」をクリックします。

画像(320x193)・拡大画像(619x374)

次はインクルードファイルの名前を入力します。
今回は「Trade」としておきます。
入力が終わったら「完了」ボタンをクリックします。

画像(320x193)・拡大画像(619x374)

次はインクルードファイルの名前を入力します。
今回は「Trade」としておきます。
入力が終わったら「完了」ボタンをクリックします。

画像(320x193)・拡大画像(619x374)

Wizardが閉じられ、プログラムコードの雛形が表示されます。

画像(320x294)・拡大画像(481x443)

親切なことに、インクルードファイルの作成方法がコメントで表示されています。
書き方はこのとおりです。
とりあえず全て削除して、前回作成したライブラリを使用するコードを入力します。

画像(320x157)・拡大画像(497x244)

書き方は、前回スクリプトに追加した部分と全く同じです。
どのライブラリを使用するかと、どの関数を使用するかを記述します。
コンパイルが成功したら完了です。
これでインクルードファイルが作成できました。

これをスクリプト側から使用するようにしてみましょう。
変更したプログラムは以下になります。

画像(320x214)・拡大画像(507x340)

インクルードファイルの使用方法は

 #include <インクルードファイル名>

になります。
インクルードファイルは、.mqhという拡張子になりますので、これを指定するようにします。

コンパイルすると問題なく成功すると思います。
これでインクルードファイルを使用して、ライブラリ中の関数を使用することに成功しました。

前回とあまり大差がないプログラムですので、「わざわざインクルードファイルを作成する意味があるの?」と思われる方もいらっしゃるかもしれません。

今回は1つのライブラリの1つの関数を使用するのみでしたのでありがたみがわからないかもしれませんが、これが複数のライブラリ・関数になったときには、非常に有効になります。
例えばライブラリ中にたくさんの関数を用意して、これをいつでも必要なときに使いたいという場合、インクルードを使用しないと毎回その関数の宣言をしないといけません。
ライブラリ中に関数が100個あったとすると、プログラムの先頭に毎回100行を追加することになります。
インクルードファイルを使用すると、インクルードファイル内に1度関数の宣言をしておけば、使用するプログラム側では、インクルードの1行だけを追加すればよいことになります。
また、1つのインクルードファイル中で複数のライブラリを指定することも可能ですので、頻繁に使用するライブラリは1つにまとめておけば使い勝手が向上するでしょう。

今回は以上になります。

Posted at 20時46分 パーマリンク

2008年01月19日(土)

ライブラリの利用(3) [MetaTrader]

前回はライブラリを作成することができました。
今回はこのライブラリを実際に使用してみたいと思います。

まずは、スクリプトを作成します。
ちろん売買ストラテジー(EA)でもライブラリは使用できますが、今回は説明をわかりやすくするためにスクリプトにしておきます。

start関数の中から、ライブラリ内で作成した関数 ClosePositionAndCancelOrders を呼び出します。

画像(320x159)・拡大画像(475x237)

この時点でコンパイルしてみましょう。
次のようなエラーが表示されたと思います。

'ClosePositionsAndCancelOrders' - function is not defined

「この関数は定義されていませんよ」というエラーです。

実はライブラリを作成しただけではライブラリ内の関数を使用することはできません。
その関数がどのライブラリの中にあるのかを把握して、そのライブラリを使用することを宣言しなければならないのです。

今回は ClosePositionsAndCancelOrders という関数を使用したく、その関数は Trade というライブラリに入っています。
よって、「Trade ライブラリを使用しますよ」という宣言を追加します。
追加したプログラムは以下になります。

画像(320x220)・拡大画像(557x383)

ここでコンパイルすると、問題なくコンパイルが成功します。

追加した2行について説明します。

まず1行目は、どのライブラリを使用するか、その宣言です。
ライブラリの指定は、

 #import ライブラリ名

という書き方をします。

ライブラリの名前のあとに、「.ex4」という拡張子がついていますが、これがライブラリの実体になります。

MetaTraderで作成したプログラムは「〜.mq4」というファイルに保存されます。
このファイルは人間が読むことのできるファイルです(一般にテキストファイルと呼ばれます)。
このファイルをコンパイルすることによって、「〜.ex4」というファイルが生成されます。
このファイルはコンピュータ(MetaTrader)が読むことのできるファイルです(一般にバイナリファイルと呼ばれます)。
プログラム中ではこちらの .ex4 のファイル名でライブラリを指定することになっています。

2行目では、今回使用する関数の宣言をしています。
関数の実体はライブラリ中にありますので、関数名と引数(今回はなし)を書いた後、;(セミコロン)で文を終わらせます。

これでライブラリを使用することができるようになりました。

ちなみに、一般的なdllファイルも同じようにして使用することができます。
WindowsのWinAPI(user32.dll)や、自作のDLLを使用することも可能です。
自作のDLLを使用できるということは、MQL4だけでは作成できないような複雑なプログラムを書くことも可能だということです。
MetaTraderの拡張性の高さを感じます。

Posted at 08時01分 パーマリンク

2008年01月16日(水)

ライブラリの利用(2) [MetaTrader]

今回から実際にライブラリを作成していきます。

以前に作成した注文取消しとポジションクローズのスクリプトを、ライブラリを使うように変更しようと思います。

まずはMetaEditorでFile-Newを選択し、Expert Advisor Wizardを起動します。

画像(320x193)・拡大画像(619x374)

上から4つめのLibraryを選択し、次へをクリックします。

画像(320x193)・拡大画像(619x374)

Nameにライブラリの名前を入れて、完了ボタンをクリックします。
名前はわかりやすいものであれば何でもいいです。
今回はTradeとしておきます。
完了ボタンをクリックすると、ライブラリの雛形が表示されます。

画像(320x197)・拡大画像(540x333)

ここにコメントでライブラリの作成方法が書かれています。
何も難しいことはなく、いつもと同じように関数を記述するだけです。
今回は注文取消しとポジションクローズをする関数ClosePositionsAndCancelOrdersを記述します。

画像(320x278)・拡大画像(609x530)

コンパイルをして、エラーが検出されなければ成功です。

これでライブラリの作成が完了しました。
ライブラリの作成自体は非常に簡単です。
次回はこのライブラリの利用方法についてご説明しようと思います。

Posted at 00時19分 パーマリンク

過去の記事へ

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

Sponsor AD

シストレナビモバイル

シストレナビモバイル
ケータイでバーコードを読み取りアクセス(詳細はこちら

プロフィール

株式会社MKリサーチ

代表取締役

小山 満

大学のころから先物取引を始め個人投資家として5年間自己資金運用のみで生活、その後自己ディーラーに転身。現在も海外マーケットで運用する某取引員のプロディーラーを兼務。現在得意とするマーケットはDAXと為替。非常に短期の売買を繰り返すデイトレーダー。

プロディーラーとして活動と同時にMKリサーチ代表取締役としてシステムトレードの開発を行い、自社資金のシステム運用も行っている。個人投資家に代わり厳しくシステムをチェックし、優良なストラテジーを紹介すると同時に個人投資家でも機関投資家と同じようにシステムトレードを行えるよう海外サービスを日夜リサーチして最新の情報を届けています。

2017/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        

カテゴリーリスト

最近の記事

スポンサードリンク

検索


上記の検索結果のRSS情報です RSS1.0

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

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

RSS1.0

[Login]


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