豊嶋久道の「メタトレーダー実践日記」
|
「入門」と「実践」の流儀の違い 10月22日
10月14日に「FXメタトレーダー実践プログラミング」が出版されました。
おそらく「実践」を購入された方の多くは、以前に「FXメタトレーダー入門」もご覧になったことがあるかと思います。
この2冊は同じ著者が書いたものなので、同じ流儀で書かれるべきところですが、わけあってプログラミングの流儀に関して多少違う点があります。以下に簡単に説明しておきます。
■カスタム指標プログラムの指標表示の範囲
カスタム指標プログラムでは、
for(int i=limit-1; i>=0; i--)
として limit-1 から 0 の範囲で指標を表示させています。ここで、limit = Bars-IndicatorCounted() とすることで、チャートの最初からカスタム指標が表示されるようになります。
但し、カスタム指標の種類によっては、ある程度データがたまってからでないと正しい指標値が計算できない場合があります。
「入門」の方では、チャートの描き始めの部分から正しい指標値が表示されるよう、
if(limit == Bars) limit -= MA_Period-1;
などのように limit の値を修正する記述を追加しています。
これにより、チャートの描き始めの部分に変な指標値が出なくなるのですが、実際、チャートの描き始めの部分はそれほど重要ではありません。
そういうことから、「実践」の方では、特にlimitの値を修正する記述は追加していません。厳密さには欠けますが、実践上問題ないということでご理解ください。
■エキスパートプログラムでの最初のチェック
「入門」では、エキスパートプログラムの最初に「バーの始値でトレード可能か」をチェックするため、
if(Volume[0]>1 || IsTradeAllowed()==false) return(0);
という行が入っています。これは、バーの確定時にトレードを行うための「おまじない」として理解されている方も多いかと思います。
しかし、「実践」の方では、このような行は入っていません。
IsTradeAllowed()のチェックについては、トレード関数のエラー処理の部分に書かれているので、プログラムの最初にチェックする必要はなくなっています。
もう一つ、Volume[0]>1のチェックについては、実践上問題が起きるケースがあるので、記述しないようにしました。
というのも、Volume[0]>1の場合 return するということは、実際にトレードが実行されるのが、Volume[0]=1の場合、つまりバーが確定して、新しいバーができた瞬間に限られてしまうのです。
すべてのtickでエキスパートプログラム通りにトレードが行われるのであれば問題ありませんが、実践上、サーバーとの通信エラーなどにより、シグナルが出てもトレードが行われないケースが起こり得ます。
そういうエラーを防ぐために、Volume[0]>1のチェックは外して、その代わり、現在のポジション状況からトレードを確実に行えるようにしてあるのです。
■エキスパートプログラムで利用するシグナル指標
「入門」では、売買ロジックをエキスパートプログラムとして作成する前に、シグナルの発生場所を示すシグナル指標をカスタム指標プログラムとして作成することを推奨しています。
これは、エキスパートプログラムをストラテジーテスターでバックテストした際に、売買のポイントを示すチャートにシグナル指標を挿入して、ロジックが正しくプログラムされているかどうか確認することが目的でした。
一方、「実践」の方では、特にシグナル指標プログラムについては触れていません。
これは、掲載したエキスパートプログラム数が多いということもありますが、単純にシグナルで売買するだけでなく、トレイリングストップなど、シグナルによらない手仕舞いなどがあり、シグナル指標だけでは対応できないケースも多いからです。
またエキスパートプログラム中に組み込みテクニカル指標関数を利用することで、バックテスト時の売買ポイントを示すチャートにテクニカル指標が同時に表示されるので、ロジックが正しいかどうかは、それである程度判断できると考えました。
このように実践面を考えると、どうしても「入門」とはプログラミングの流儀が変わってしまいました。「入門」から「実践」への補足としてご理解いただけると幸いです。
コメント投稿
「FXメタトレーダー入門」正誤表 10月03日
「FXメタトレーダー入門」も増刷を重ねて第7刷となりました。
ここで第1刷からの修正点についてまとめておきます。
■184ページ11行目のiMAOnArray()のパラメーターの説明のところ。
(誤)applied_price 適用する価格
(正)(削除)
iMAOnArray()は、配列に適用する移動平均なので、PRICE_OPEN(始値)やPRICE_CLOSE(終値)などを指定するためのパラメータ applied_price は不要です。
■278ページ14行目
「本書を書いている時点でのメタトレーダーのバージョンでは、この画面で日本語の項目名が実際の項目とずれているのです。」
とありますが、2008年2月にリリースされたBuild213以降では、メールの設定画面の日本語の項目名は正しいものに修正されています。この注意書きは無視されて結構です。
■346ページ メタトレーダー採用業者
FX業者の移り変わりは激しいもので、第1刷で紹介した業者のうち、なくなってしまったり、会社名が変わってしまった業者がいくつかあります。第7刷では以下のような業者の紹介となっています。
ODL Japan
http://www.odls.co.jp/
英国系業者の日本法人。CFDにも対応。金融庁に金融先物取引業者として登録されています。
121証券
http://fx.121sec.com/
日本語対応。主要カバー先は米系のMB Trading社。金融庁に金融先物取引業者として登録されています。
ゲインキャピタル・ジャパン(フォーチュンキャピタル)
http://www.fortune-capital.co.jp/
米国系業者と提携。金融庁に金融先物取引業者として登録されています。
FXCM
http://www.fxcm.com/
米国系。世界最大級のFX業者。
FXDD(FXDirectDealer)
http://www.fxdd.com/
米国系。サーバー上での完全自動売買サービス(FXDDAuto)を提供しています。
Interbank FX
http://www.interbankfx.com/
米国系。100通貨単位から取引できます。
MIG Investments
http://www.migfx.ch/
スイス系。主要通貨ペアのスプレッドは2pipsです。
コメント投稿
↑ページのトップへ
|
|
|
|