2018年5月30日水曜日

自身の商品以外でお薦めのEA

ご購入者様より以下のご質問を頂きましたので、その関連の記事となります。

「私に貴方の他の製品シリーズの中から、いくつかお薦めのEAを教えて貰えますか。(翻訳)」
(利大損小百花繚乱EURUSDをご購入下さった外国の方の質問となります)

こちらの方には返信にて自身のEAをお薦めさせて頂いたのですが、ブログでは既に「商品一覧」のページがありますので、この機会に"自身の商品以外で"お薦めのEAや気になっているEAを紹介させて頂きます。



■お薦めのEA
InstaFX
AI技術を応用した本格派EA 新世代EAであなたの生活が変わります
AI技術を応用した本格派EA 新世代EAであなたの生活が変わります?|?fx-on.com
3ヶ月間の収益率ランキングで、長い期間安定して最上位に載り続けているEAです。
収益率が高いだけでなく取引も活発ですので、常にポジションを持っていたい方でもお薦めできる実績を残しておられます。
制作者様は当方と同じくプログラマー・SE出身の様で、親近感を覚えます。
"プログラマー"と一言に行っても、「中学校で英語を習ったから私は翻訳家」と同レベルの場合も本当に多いのですが、ブログをWordPressかBloggerで開設するような方は、生粋のプログラマーである可能性が極めて高いです。
(結構有効な判別方法だったりします:-)

■気になっているEA
梓弓_USDJPY
毎日トレードするデイトレードEAで統計的データから優位性のある法則に基づく手法でトレードします
毎日トレードするデイトレードEAで統計的データから優位性のある法則に基づく手法でトレードします?|?fx-on.com
こちらは3ヶ月間の収益率ランキングでお見掛けして、戦略が面白かったので気になっているEAです。
毎日必ず特定の時間にエントリーをしており、そしてかなり優位性が確認できる結果を残しておられます。
当方のEAは相場の長期的な方向性が定まった上でボラティリティが高くないと積極的なエントリーを行えないものが多く、ポジション保持欲が高い方のご期待に答えられる取引回数とはなっておりません。
ですのでそういった要望が満たせる、こちらのEAの様に定期的にポジションを取って優位性を示せるようなEAもいつかは作ってみたいと考えております。

■全ての原点のEA
一本勝ち
トレーリングストップで幸せに一本勝ち
トレーリングストップで幸せに一本勝ち?|?fx-on.com
当方がEA制作を始める切っ掛けとなったEAです。
このEAと出会った事で勝てるEAも存在すると認識し、自身でも作ってみたいと思うようになりました。
フォワード計測が一年経過した時に、このEAに負けていない、勝っている成績のEAを世に送り出す事が自分の現在の目標となっています。
制作者様は恐らく外国出身の方の為、若干怪しい日本語であったり、商品ページも過剰な宣伝が目立ちますが、実力及び実績に関しては一切疑う余地の無い最高峰の開発者です。

2018年5月23日水曜日

1分足のバーが確定したタイミングで実行するコード

ご購入者様より以下のご質問を頂きましたので、その回答の記事となります。

「コミュニティにて1分足が確定したタイミングで判定していると記述されておりましたが、どういったコードで書けるのでしょうか。」
(EA開発の勉強をなされている方の質問となります)

「単純に一分毎に実行」するのではなく、「1分足のバーが確定したタイミングで実行」する為のコードは以下となります。


//! @class  GoodExample
class GoodExample
{
private:
    string mCurrencyPairName;
    datetime mBeforeBarCreationDateTime;

public:
    GoodExample(string currencyPairName)
    :   mCurrencyPairName(currencyPairName),
        mBeforeBarCreationDateTime(0)
    {
    }

    //! @brief  1分毎の処理。
    void On1Minute()
    {
        Print("On1Minute");
    }

    //! @brief  ティック毎の処理。
    void OnTick()
    {
        // 最新の1分足のバーの形成開始時刻を取得。
        datetime current = iTime(mCurrencyPairName, PERIOD_M1, 0);
        
        // 前のティックでの形成開始時刻と比較。
        if (current != mBeforeBarCreationDateTime)
        {
            // 違うならば前のバーが確定し新しいバーになった=1分毎の更新タイミング。
            On1Minute();

            // バーの形成開始時刻を更新。
            mBeforeBarCreationDateTime = current;
        }
    }
};

GoodExample gGoodExample(_Symbol);

void OnTick()
{
    gGoodExample.OnTick();
}


iTime()により1分足のバーの形成開始時刻を取得し、それが切り替わったタイミングで判定します。
このままですと、起動した一番最初に1分足が確定したタイミングとは別に一度実行されてしまいますので、不都合がある場合は以下の様にコンストラクタでしっかりと初期化しておくと更に良いです。

    GoodExample(string currencyPairName)
    :   mCurrencyPairName(currencyPairName)
    {
        mBeforeBarCreationDateTime = iTime(mCurrencyPairName, PERIOD_M1, 0);
    }
1分毎の処理、5分毎の処理、15分毎の処理…とそれぞれ用意しておくと便利かもしれません。

また、以下のコードでも同様の動作が行えそうに見えるのですが、こちらは良くない例です。

//! @class  BadExample
class BadExample
{
private:
    string mCurrencyPairName;
    int mBeforeCountOfBars;

public:
    BadExample(string currencyPairName)
    :   mCurrencyPairName(currencyPairName),
        mBeforeCountOfBars(0)
    {
    }

    //! @brief  1分毎の処理。
    void On1Minute()
    {
        Print("On1Minute");
    }

    //! @brief  ティック毎の処理。
    void OnTick()
    {
        // 最新の1分足のバーの数を取得。
        int current = iBars(mCurrencyPairName, PERIOD_M1);
        
        // 前のティックでの数と比較。
        if (current > mBeforeCountOfBars)
        {
            // 違うならば新しいバーが追加された=1分毎の更新タイミング。
            On1Minute();

            // バーの数を更新。
            mBeforeCountOfBars = current;
        }
    }
};

バーの数で判定しているのですが、バーの数はMT4の設定の「ヒストリー内の最大バー数」・「チャートの最大バー数」などによって最大値が決まっており、その値に達すると(確か)一定量古いバーを削除するので、減る場合があります。
「>」を「!=」に変えたらそれなりにうまくいくかも知れませんが、MT4側の挙動に振り回される為、基本的にiBars()を用いた判定は行わない方が良いです。
これはバックテストでは検出できず、実際の口座で動かしてから判明する不具合に繋がるので、結構怖い例だったりします。

2018年5月11日金曜日

myfxbook

TitanFX ブレード口座(サーバー:TitanFX-01)でのリアル口座フォワード(Myfxbook)となります。

・たけぐまシリーズ・ココペリシリーズ・Xenoblastシリーズ・StablePointGetterシリーズ同時運用

※複数のEAを同時に運用している為資産の推移についてはあまり参考になりませんが、「履歴」タブより各ポジションの詳細を確認できますので、同様のエントリーを行っているかどうかの確認が可能となっております。

TitanFX ブレード口座(サーバー:TitanFX-02)でのリアル口座フォワード(Myfxbook)となります。

・GigaGaruraUSDJPY


・GigaGaruraEURUSD


・BravePointGetterUSDJPY


・BravePointGetterEURUSD

※他のEAは初期証拠金1万円辺り0.01ロットで計測しているのですが、BravePointGetterEURUSDは手違いで10倍のリスクの0.1ロットで計測を始めてしまったので、Gainではなく獲得Pipsで比較した方が参考になります。

・利大損小百花繚乱USDJPY


・利大損小百花繚乱EURUSD