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

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

 

著書のご紹介

2012年12月10日(月)

MT5でDDEサーバー [MetaTrader5]

今回もMQL5コミュニティからの情報です。

MT4では、MT4自身にDDEサーバーの機能があるので、FXの価格をリアルタイムでExcelなどのDDEクライアントに表示させることができます。

しかし、この機能はMT5ではサポートされていません。

そこで、MT5のデータをDDEクライアントで表示できるようにするという記事が

http://www.mql5.com/en/code/1246

に掲載されています。

と言っても、MT5自身にDDEサーバーの機能を追加するわけではありません。

MT5とは別にDDEサーバーのプログラムを起動しておいて、MT5では、そのDDEサーバーにデータを送るEAを起動することで、DDEサーバーとして利用できるようにするものです。

その方法を簡単に紹介します。

まず、上の記事のページから「dde_example.mq5」と「dde-server-mfc-application.zip」をダウンロードします。

dde_example.mq5は、MT5のファイルメニューから「データフォルダを開く」で開いたフォルダの「MQL5」−「Experts」サブフォルダにコピーします。

dde-server-mfc-application.zipは、解凍すると、DDE-Server-MFC applicationというフォルダの下に、「DDE Server.exe」と「ddesrv.dll」というファイルができます。

このDDE Server.exeを実行すると、次のような画面が現れます。

画像(450x239)・拡大画像(519x276)

なお、インターネットからダウンロードした実行ファイルは、ウィルススキャンなどを行ってから実行することをお薦めします。

次に「DDE_Example.mq5」をメタエディターでコンパイルした後、適当なチャートに挿入します。

このEAは外部のDLL(Windows標準のもの)を利用するので、「DLLの使用を許可する」をチェックしておきます。

すると、先ほどのDDEサーバーの画面に図のような項目が表示されます。

画像(450x239)・拡大画像(519x276)

これで、MT5とDDEサーバーが接続されたことになります。

ここで、Excelのセルに「=MT4DDE|TIME!Value」などと書くと、それに対応する値がそのセルに表示され、随時更新されるようになります。

但し、実際の通貨ペアのレートなどを表示させたい場合には、DDE_Example.mq5を修正する必要があります。

DDEサーバーに送る項目は、DDE_Example.mq5のOnTimer()関数中に記述されています。

例えば、EURUSDのBidとAskの値をサーバーに渡したい場合、

if(!CheckItem("BID","EURUSD")) AddItem("BID","EURUSD");
if(!CheckItem("ASK","EURUSD")) AddItem("ASK","EURUSD");

MqlTick tick;
SymbolInfoTick("EURUSD", tick);
SetItem("BID","EURUSD",DoubleToString(tick.bid,5));
SetItem("ASK","EURUSD",DoubleToString(tick.ask,5));

を追加します。コンパイルしてチャートに挿入すると、下図のようにDDEサーバーにEURUSDの項目が追加されます。

画像(450x239)・拡大画像(519x276)

すると、Excelで

=MT4DDE|BID!EURUSD
=MT4DDE|ASK!EURUSD

と書いたセルが、MT5のEURUSDのBid、Askに置き換わることになります。

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


2012年10月15日(月)

MT5の仮想ポジションについて雑感 [MetaTrader5]

前回まで「MT5で両建てシステム」というタイトルで続けてきたコラムについて雑感です。

タイトルには「両建てシステム」と付いていましたが、実際にはMT5で「仮想ポジション」のプログラミングをすることが目的だったわけです。

今回の一連の記事では成行オーダーに限定しましたが、成行オーダーだけでなく、指値や逆指値のペンディングオーダーに対応させるということも考えられます。

ペンディングオーダーに対応させるためには、次のように考えればなんとかできるかと思います。

ポジションの初期化として既存のペンディングオーダーがあれば、それを復元します。これは履歴リストではなく、現在の取引リストから探すので、ディールの検索とは別プログラムとなります。

また、ペンディングオーダーが約定したときに、ディール情報をポジション用の構造体に保存するために、約定の有無を常時チェックする必要があります。これはOnTick()関数でもできますが、トレードイベント時だけチェックすればよいのであれば、OnTrade()という関数中に記述することもできます。

もう1点、対応したいところがオーダーに付加する損切りオーダーと利食いオーダーです。

ところが損切りオーダーと利食いオーダーが付加できるは、実在するポジションに対してです。残念ながら仮想ポジションのような幽霊みたいなポジションに付加することはできません。

なので、これに対応させるには、損切りオーダーを独立した逆指値オーダー、利食いオーダーを独立した指値オーダーとして発注し、それを元の仮想ポジションと関連付けるという処理が必要となります。

これらのプログラムは結構複雑となってしまい、ここのコラムで取り上げるには量も多くなってしまいました。

そういうことで、今回の連載では扱いませんでしたが、また機会があれば紹介したいと思います。

しかし、システムトレーダーにとっては、売買システムのロジックをどうするかが重要な部分なので、プログラミングにはあまり手間をかけたくないはずです。

MQL4からMQL5への移行には、明らかに手間と時間がかかってしまうので、MT5がすぐには普及しないわけです。

手間がかかっても移行したいと思うのは、新し物好きのプログラマ(兼トレーダー)くらいじゃないかな、と思います。

以上、ちょっとした感想でした。

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


2012年06月19日(火)

売買システムの最適化(7) [MetaTrader5]

前回の記事では、売買システムの最適化を行う際に、組合せの数を減らす方法についてお話ししました。

ただ、削減努力というのも限界があるので、それでも組合せの数が多い場合はどうすればよいでしょうか?すべての組合せを試していくと何日もかかってしまうこともざらにあります。

そういう場合でも何とか最適化ができるようにするために、MT4/MT5には遺伝的アルゴリズムという手法が組み込まれています。

MT4だとストラテジーテスターの「Expert properties」のボタンを押した画面の「Testing」タブに「Genetic algorithm」というチェックボックスがあるので、これをチェックします。

画像(450x194)・拡大画像(667x288)

MT5の場合、ストラテジーテスターの画面の「オプティマイズ」の項目で「遺伝的アルゴリズム」を選択します。

画像(450x110)・拡大画像(800x197)

遺伝的アルゴリズム、英語でGenetic Algorithmと言い、その頭文字をとって、よく「GA」と略されます。

これは多くの組合せの中から最適解を探すための組合せ最適化アルゴリズムの一つです。他にも色々な手法があるのですが、GAは色々な最適化問題に対して、そこそこに最適化を行うことができるということで、最もポピュラーなものです。

しかし、色々な問題に適用できるということは、システムの最適化に特別に強いというわけではないことに注意が必要です。要はGAを過信してはいけないということです。パラメータの組合せをランダムに試していいものを探すランダムサーチと比べてましだという程度と考えた方がよいでしょう。

ランダムサーチよりましだというのは、複数のパラメータのセットの中で結果がよいものを残しやすくすること、二つのパラメータセットの一部を入れ替える、一部をわずかに変える、など少しずつ結果がよくなるように探していくメカニズムがあるからです。

そうは言っても、基本的に乱数を使ってランダムに選ぶ部分が多いので、最適化した結果は毎回変わります

もし、毎回の結果のばらつきが大きい場合は要注意です。そのシステム自身見直した方がいいかもしれません。

と言うのも、毎回の最適化ではそれなりに評価のよいパラメータセットを求めているのですが、それは局所解と言って特定のパラメータセットの近辺だけ評価がよくなる部分を探しているのです。

それが毎回違うということは、局所解がたくさん存在することを意味します。

本当に最適なパラメータセットがたくさんあればいいのですが、一般にそのような局所解は、テストした期間でたまたまできた可能性が高いです。つまり、そのパラメータはいわゆるカーブフィッティングされたものでしかないかもしれません。

そういう意味でGAによる最適化は1回だけではなく、何度もやってみて、出てきたパラメータセットのばらつきも評価してやる必要があるかと思います。

ただ、そうなってくると、結局最適化に時間がかかってしまうことになりますけどね。

Posted at 14時26分 パーマリンク


過去の記事へ

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

Sponsor AD

シストレナビモバイル

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

プロフィール

豊嶋久道

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

活動状況・Website

ToyolabFX
Toyolab FX-手ぶらで為替取引
FXトレーディング研究所。
FXメタトレーダー入門
FXメタトレーダー入門
最先端システムトレードソフト使いこなし術。
FXメタトレーダー実践プログラミング
FXメタトレーダー実践プログラミング
システム開発過程を段階的に学ぶ。

2017/8

    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 30 31    

PHOTO

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

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

カテゴリーリスト

最近の記事

スポンサードリンク

検索


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

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

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

RSS1.0

[Login]


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