goo blog サービス終了のお知らせ 

トレード備忘録 & MT4/MT5インディケータ及びEAの開発

日々のトレード備忘録及びMT4/MT5に関する事項

石原順(西山孝四郎)最新ビデオセミナー

2021-11-19 14:57:32 | 投資

 石原順講師の最新のセミナーがFXプライムによりビデオ放映されています。(2021年11月17日収録)

 バフェット指数200%に代表される未曽有の世界的金融バブルを、講師特有のファンダメンタル的視点から分析するとともに、主要FX、株式指標、商品相場銘柄のテクニカル分析(転換点ボラティリティー分析及びメガトレンド分析)を通じてこれから年末にかけての相場を占ってくれています。

ビデオ公開のURL:

https://players.brightcove.net/5237767225001/QOahBaP9Ed_default/index.html?videoId=6282510995001

手許資料:

https://info.fxprime.com/isle/information/pdf/211117.pdf

(追記)西山孝四郎(石原順)講師がセミナーで提唱されてきた、順張り手法である転換点ボラティリティトレードとメガトレンドフォロートレードに係るインディケータの全てをMT4インディケータとしてこちらで公開中。

 


EAにトレイリングストップを追加したい

2021-11-14 15:33:47 | 投資

 しばしば、「Trailing Stop(以下TS)を自作のEAに追加する方法が知りたい」というご質問を受けることがあります。筆者は、MT Studio21の一員でもありますので、同機能を付加する際にはMT5への対応を考えなくてはなりません。そのために、結構複雑な関数を用意しているのですが、ここではMT4 EAのための関数を記してみたいと思います。MT4には、便利な関数群が用意されていますが、TSに関する関数は存在しません。MT4画面から手動により個別に設定できるため、特に必要と判断されていないのかもしれません。

まず、パラメータに「TS機能を利用するか否か」の選択をするフラッグを用意します。この例では、input bool UseTrailingStop = false; としています。デフォルトの設定は、原則TS機能は使わないことになっています。もし利用したい場合は、falseをtrueとすればTS機能利用することを選択することになります。

 下記の例は、ライブラリーを利用しない一般的なコーディング例です。EA作成時には、そのまま使えると思います。この例では、関数SetTrailingStop( )はOnTick()終了の後で定義されていますが、外部パラメータの上や下で定義されても結構です。EAのフォーマットの最後に記載し、メモ化しておくと、実際に利用する際にはメモを外すだけで使うことができます。

// 外部パラメータ

sinput int Magic = 123;

input bool UseTrailingStop = false;

input double TSPips = 15;

 

//

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

//---

       if(UseTrailingStop == true) SetTrailingStop(TSPips, Magic);

  

  }

//+------------------------------------------------------------------+

 

void SetTrailingStop(double tspips, int magic)

{

  if(_Digits == 3 || _Digits == 5) tspips *= 10;

 

  for(int i=0; i<OrdersTotal(); i++)

  {

     if(OrderSelect(i, SELECT_BY_POS) == false) break;

     if(OrderSymbol() != _Symbol || OrderMagicNumber() != magic) continue;

    

     if(OrderType() == OP_BUY)

     {

        double newsl = Bid - tspips*Point;

        if(newsl >= OrderOpenPrice() && newsl > OrderStopLoss()){

        int ticket = OrderModify(OrderTicket(), 0, newsl, 0, magic);}

       

        break;

     }

    

     if(OrderType() == OP_SELL)

     {

        double newsl = Ask + tspips*Point;

        if(newsl <= OrderOpenPrice() && (newsl < OrderStopLoss() || OrderStopLoss() == 0)){

        int ticket = OrderModify(OrderTicket(), 0, newsl, 0, magic);}

       

        break;

     }

  }

}

       

 


トラリピEA Half & Half 間もなくお届けします

2021-11-11 13:17:59 | 投資

MT Studio21のお客様からかねてよりご要望の多かったトラリピのハーフアンドハーフ、同社のTrapTradeSystemをご利用の皆様には、間もなく無償にてお届けします。

Half & Halfとは、一定価格より上のゾーンでは「売りトラリピ」を、そしてその価格を下回るゾーンでは「買いトラリピ」を行う運用方法です。従来の方法でも同じ通貨ペアのMT4チャートを2個開いて、それぞれのチャートで異なるマジックナンバーを設定することにより、同様の運用ができました。今回はそれらを1個のEAに仕立て上げたものです。

現在のところ、MT4のEAは完成し(β版)、引き続きMT5での調整を行っているところです。

Half & Half (β版)で、仮に下記のような設定をしてEAを稼働中させるとその下のチャートのように展開されます。

MaxOrderPriceとMinOrderPriceの中間値(113.00)より上のゾーンでは売りトラリピ、中間値より下のゾーンでは買いトラリピとなります。トラップ幅35 pips、利確幅40 pipsの通常トラリピの設定です。

上記と同じ設定で2021.07.01 ~ 2021.11.11のバックテストを行ったものが、次の画像です。設定は「当てずっぽう」ですので、効果的な運用ではありませんが、正しく稼働しています。トラリピは、時間軸に拘わらず運用できますが、全体像が把握しやすいように、ここでは日足チャートを示しておきました。

前述しましたように、MT4及びMT5のEA作成を完了するまでには、今少し時間がかかる見込みです。MT4のみのβ版でよろしければ、TrapTradeSystemのご購入者には本日からお届けすることができます。ご希望者は info@mtstudio21.com まで。ただし、係員のご本人確認のため、過去に購入されたTrapTraSystem EAをコピーしてメールに添付していただくよう、同社より要請がありました。ご利用はΒ版につき、自己責任にてお願いします。


MT4インディケータ作成の作法 - 不要な売買シグナルを消す方法

2021-11-09 09:48:07 | 投資

 相場が時々刻々変動している中で、プログラムがここぞ大きな節目であると判断すると矢印等によりシグナルを発してくれる便利なインディケータが存在する。例えば過去10本のローソク足の最高値では下向きの矢印を、同じく最安値では上向きの矢印を表示させるといった場合である。

矢印を表示させたい場合のMT4で用意されている関数は、SetIndexBuffer( )、SetIndexStyle( )、SetIndexArrow( )の3個の関数が使われる。データを保管する入れ物を用意し、描くのが矢印であり、そして矢印の種類と色を指定するというのが、主な流れである。例えば、過去ローソク足10本中の最高値に矢印を出す場合には、パソコンで過去から現在に至るまでの条件に合った高値を選び出して、該当ローソク足の高値の上に配置する。

問題点点が二つある。

1)最高値、最安値を連続更新した場合

 1本前のローソク足で高値となり矢印が出た直後に、現在の足で高値を連続して更新した場合である。もはや、直前の矢印は無意味なものとなるが、世上出回っているインディケータの中には、無用なシグナルがチャート上あちらこちらに残されていて、誠に目障りとなる。中には、時間軸を変えてまた元に戻せば正常になると説明している有料のインディケータまで出てくる始末で嘆かわしい。高値が連続して不要な足の数値にEMPTY_VALUEを入れておくだけでことが済むことである。

2)矢印の座標位置

 MT4チャートの高値、安値そのものの位置にシグナルを配置すると、これまたチャートが窮屈に見えてしまう。そこで、インディケータのパラメータに調整項目を設けて、例えばUSDJPYの日足の場合に「高値の20ピップス上」(High[ ]+0.20)と指定する必要がある。チャートを5分足に切り替えると、5分足の高値の20ピップス上はとんでもなく高値から離れた場所となるか、あるいはチャート外に飛び出して見えなくなってしまう。パラメータにはもっと小さな数値を打ち込んでやる必要がある。工夫をすれば、時間軸を変更した場合でも調整を必要としない方法もある。前のブログで紹介したインディケータでも、別途方策を講じているので、時間軸ごとに設定し直す必要はない


江守哲氏監修インディケータの全面的改善とEA化を達成

2021-11-05 20:22:39 | 投資

 掲題のプロジェクトに挑戦をするに至ったのは、筆者提携先のお客様からの1通のメールによる相談が契機となりました。EMORI Indicator for ATRに追加機能を付加してほしいとの要望でしたが、同EAのソースコードは当然のことながら公開されておりません。また、その利用にはプログラム上口座制限というプロテクトが課されているため、チャートへの描画は購買者である相談者以外のチャートでは表示することさえできません。

 やむなく、相談者からMT4画面のスクリ-ンショットを送付いただき、このインディケータの分析に入りました。総力をあげましたところ、インディケータの論理式は比較的短時間で解明することができました。相談者からのリクエストであるアラートの機能追加も終わり、完成した第一段階のチャートをMT4に表示させてみたところ、スクリーンショットのオリジナルの画像とほぼ同一のインディケータが出来上がっていました。

一、インディケータ Parabolic ATR

 第一段階の完成前β版をバックテストにかけてみますと、様々な疑問が湧いてきました。もう少し改善すべきところがあるのではないかとの疑問です。疑問となったこれら諸点の検討と問題解決の過程を経てParabolic ATR_v7が最終完成いたしました。

1)売買シグナルの発生時点を改善

 インディケータのバックテストを観察すると、売買のシグナルが発せられるポイントが必ずしもベストではないということです。買いの取引を例にとると高値からかなり落ち込んだところで決済し、その低い価格で途転の売り注文が入る確率が高いことになっています。絵柄だけを見ていると、利確したように見えますが、実は損切りに終わっていることが多いことに気づきます。原因はEMORI式の細いパラボリックラインはローソク足の上下変動に連動して細かく動くことにあります。次のチャートで1が今回改善したインディケータの買いの決済と新規売りのシグナルが発生するローソク足、一方EMORI式では2の時点で買い決済と新規売りシグナルが発生します。足の数6本遅れで相当相場が落ち込んだところで、買いの決済と新規売り注文が出されることになります。改善策として、ローソク足の上または下に表示されるパラボリックに似た曲線にトレイリングストップの考え方を取り入れた結果、この最大の問題は解決できました。

赤と青の太い線:今回の改善したパラボリック、橙と緑の細い線:EMORI式パラボリック

両者のパラメータは同一の数値に設定しています。シグナルの矢印と帯は混在するので、表示していません。

2)ダマシのシグナルの処置

 シグナルはザラ場でも発生しますから、ダマシに終わった場合にはそのままではチャートに残ってしまいます。改善版ではそのような場合、次のローソク足の始値でダマシ矢印を自動的に消去するように変更しました。

3)パラメータの追加設定

 EMORI式でパラメータとして外部変更可能なものは、ATRの数値とメール通知機能の選定に限られています。Parabolic ATRでは次の機能を追加しました。

① SoundAlert: リクエストのあった機能。メール機能もEMORI式同様装備

② Mult: これはローソク足の上下に表示されるパラボリックラインとローソク足との間隔を調整するパラメータ。銘柄や時間軸を選定するにあたり、これを事前にテストし、最適値を選定することとなります。このインディケータと後述するEAとは不可分の関係です。

③ 逆にEMORI式では、チャートの時間軸ごとに売買シグナル(矢印)の位置をパラメータ Signal Adjustmentにより変更設定しなければなりません。例えば、4時間足に相応しい位置に矢印を設定した後に、時間軸5分のチャートに切り替えると、そのままでは、矢印がチャート外に飛び出して見えなくなってしまいます。Parabolic ATRでは、時間軸に拘わらず、ローソク足の上下のパラボリクラインの位置に常時設置されますので、チャートを切り替えるたびに別途数値を打ち込む必要はありません。

4)その他細部への説明は省略しますが、完成品はParabolic ATR_v7と銘打っているところからも、推敲の過程を想像していただけると思います。

二、EA(自動売買プログラム)Parabolic ATR_MT4EA

 完成したインディケータParabolic ATRに忠実に従ったEAを作成し、2011/08.01 ~ 2021.10.31期間にて各種銘柄、時間軸についてバックテストを行ってみたところ、各パラメータの事前テストなしには、裁量取引にせよ自動売買取引にせよ安定的なトレードを行うことは危険であることが判明しました。例えば、JP225 1時間足ではパラメータがデフォルトのままでも優秀な損益が期待されますが、その他銘柄や時間軸では必ずしもそうとは限りません。JP225とUSDJPYのテスト事例をその設定画面とともに示しておきます。

① JP225 設定画面とテスト結果

② USDJPYの設定画面とテスト結果

 USDJPYについては、ATRperiod 5に変更してテストしてみました。パラメータを10から5に変化させるとバックテストの結果は良くなりました。

三、その他

 本インディケータとEAはパラメータの設定を誤ると、裁量取引であれ自動取引であれ、決して好結果を期待することができません。事前にMT4 Testerにてその銘柄や時間軸に適合したパラメータを選択する必要があります。また、一般的なテストの結果が芳しくなくても、シグナルの表示が適正であれば、StopLosssやTakeProfitを設定することにより意外な利益となる結果を得ることも可能となります。

 上述のように、このパラボリック戦略では、インディケーとEAは一体化していますので、今回は各々別個の公開はせず、両者で一式として近日MT Studio21にて公開されることが決定いたしました。

(追記):完成版はインディケータに自動売買ソフト(EA)がパッケージされたParabolic ATR Indicator &EAとしてMT Studio21.comにて公開されました。