Appendix

プロファイル

ドン底の今はハヤテ君
ナギちゃんまで、後1,000FXP
イスミさんまで、後1,500FXP
ヒナギクさんまで、後2,500FXP
マリア様まで、後5,500FXP

収支曲線グラフ

全収支曲線
2008.08
2008.07
2008.06

E-Gold 換金サービス

ACR WEB

ブログパーツ

World Clock

AEST(GMT+10) JST(GMT+9) WET(GMT) EST(GMT-5)

Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
    • コメント : -

    当然ですが、この記事の内容は、必ずしも、目にした方にとって都合がいいとは限りません。
    全てに言えることですが、使える使えない、は、自分のスタイルに合うか否か、に著しく依存します。
    また、それなりに調査をしたりもしていますが、99.89%、当方の主観に基づいている可能性があります。
    更に、アフィリエイトへのインセンティブ、労力に対する寄付など、一切の例外なく第三者からの「対価」を得る行為への流用の一切を禁じます。

    -件のコメント

    [C885] MetaTrader4 の プログラミングについて

    大変失礼なのですが、質問させてください。

    「MetaTrader4 の プログラミング」について教えてください。
    MetaTrader4 の MetaEditor を使い、システムトレードのプログラミングをしています。

    下記のことがどうしてもわかりません。
    プログラムにしたら、ほぼ1行なんですが・・・・。

    int start()
    {
    Print( IndicatorCounted() );
    return(0);
    }

    の上のプログラムをコンパイルし、strategy tester を使い実行すると、
    「操作履歴」のタブのメッセージに、

    M1:-1

    という出力結果がずらっとでます。
    IndicatorCounted() は
    インジケータが起動して以降、変化していないローソク足の数を返す関数ですので、結果がもっと大きな値になるとの認識なんですが、実際は-1 と表示されてしまいます。
    このエラーを解決したいので、ご意見頂けないでしょうか。

    今作ろうとしている平均足のプログラム作成が進みません。

    よろしくお願いいたします。
    • 2009-02-11 22:56:51
    • ゆうきら
    • URL
    • 編集

    [C886] ゆうきら さん>

    こんにちわ^^
    IndicatorCounted()が値を返しませんか^^;
    不思議に思ってちょっと試していたんですが、EAに記述していませんか?
    だとすれば正常ですよ。
    と言うのも、IndicartorXXXX()系の関数はカスタムインジケータ用なので、カスタムインジケータでしか使えません。
    どうしてもEAで使いたい、って場合は、

    int a;

    int init()
    {
    a = -1;
    return(0);
    }

    int start()
    {
    if(a == -1) a = Bars;
    int ind_cnt = Bars - (a - 1);
    return(0)
    }

    で同じ感じになるかと。
    ただ、この場合は、インジケータが起動してから、ではなく、EAが起動した最初のイベントから何足更新されたか、になりますが。
    上手く文意を読み取れてなくて、あさっての方向だったら、そうじゃねぇよ、って返してくれると助かります^^;
    • 2009-02-12 11:35:14
    • takiguchi
    • URL
    • 編集

    [C887]

    突然の書き込みに対して、ご丁寧にご回答いただき、
    本当にありがとうございます。とてもよく理解できました。
    EAでは無理なんですね・・・あさっての方向を向いていたのは私でした。
    試しに、カスタムインジゲータで同じプログラムを書くと、
    正しく表示することができました。

    実は、平均足を指標にして自動売買のプログラムを作成しようと考えていて、
    平均足はiMAなどの関数がないため、自分で計算しなければ!!と思い、
    今回のIndicatorCounted()をEAで使用し色々と計算するつもりでいました。

    EAの中でIndicatorCounted()の使用が無理であれば、
    悩む必要がありそうです・・・まだまだ勉強不足です。

    本当に今回はコメントありがとうございました。
    • 2009-02-13 00:22:06
    • ゆうきら
    • URL
    • 編集

    [C888] ゆうきら さん>

    あさっての方向でなくて一安心^^;
    人間が大スランプ中なのでorz

    EAで計算した方がいいのか、それとも、インジケータを作って、iCustom() で呼び出した方がいいのか、は、考え方によると思いますが・・・
    個人的には、手っ取り早く、iCustom()で呼び出したほうがいいかと^^
    インジケータ部の修正だけ、とかもしやすいですしね。
    ただその場合は、カスタムインジケータのコールタイムがが意外と…と^^;

    EA作成、頑張ってくださいね
    • 2009-02-14 19:41:16
    • takiguchi
    • URL
    • 編集

    コメントの投稿

    投稿フォーム
    アダルト系サイトへの誘導やそう思わせるコメントは無条件で不許可です。
    同時に、意図や内容の如何に関わらず、プロバイダに通報します。
    投稿した内容は管理者にだけ閲覧出来ます

    この記事に対してトラックバックを送信する(FC2ブログユーザー)
    http://investers.blog36.fc2.com/tb.php/866-f11970ca

    -件のトラックバック

    バックテストについて

    非常にクセのあるMT4のバックテストについてです。

    バックテストをするためには、最低でも、以下のことは行ってください。
    以下の例では EUR/USD のデータを使っての説明ですが、メジャーな通貨ペアであれば問題ありません。
    が、メジャーな通貨ペア以外は諦めてください。

    1. [Tools] → [Options] → [Charts] の [Max bars in history] と [Max bars in chart] に 99999999999 と大きな数字を入力、[OK] で閉じます。
    2. MetaTrader4 を再起動後、EURUSD の 1分足のチャートを開きます。
    3. チャートが表示されたら、マウスのホイールや、[Page Up] /{Left] 等のキーを使って、過去のチャートを表示できるだけ表示させます。
      ほぼ24時間取引のある通貨ペアであれば、直近から約46日分のデータまでは業者のデータとして取得可能です。
    4. [F2] 押下や [Tools] → [History Center] で、[History center] が開くので、[EURUSD] → [1minutes (M1)] と辿って、EURUSD 1分足のヒストリを出します。
    5. リストの一番下を表示させて、もっとも下にある、日替わり直後のデータから下のデータを削除します。
      可能なら、もっとも下にある週初めのデータから下のデータを削除します。
      削除は、リストを選択している状態で [Delete] をクリックしてください。
    6. 削除後、[Export] をクリックして、「Ascii text (*.csv)」でデータを書き出します。
      この時、一番下の日時をメモしてください。
    7. [Download] をクリックして、MetaQuotes 提供のデータをダウンロードします。
      時間がかかるので、のんびり泊まっていてください。
    8. ダウンロードが完了すると、1999年1月4日のデータまで遡れるようになるので確認してください。
      もし、なにも出ていなければ、MT4のメモリが確保できていないだけなので、MT4を再起動、History Center を開きなおしてください。
    9. 確認できたら、一番上のデータからダウンロード前に確認した日付までを削除します。
    10. 削除後、[Import] をクリック、開いたダイアログから [Brows...] をクリックして、Export したファイルを選択、パラメタはそのままで [OK] をクリックします。
    11. すこしすると、Import が完了するので、[OK] をクリックして History Center を閉じます。
    12. [File] → [Open Offline] で EURUSD の 1分足のチャートを開きます。
    13. [Navigator]の枠から[Scripts]を開き、period_converter を EURUSD のチャートで実行します。
      パラメタの入力画面が出てくるので、ExtPeriodMultiplier には、作成する時間足の分数を入れます。
      5分足なら5、15分足なら15、30分足なら30、1時間足なら60、4時間足なら240.日足なら1440 を入れて [OK] を押します。
    14. 暫くして、[Terminal] 枠の [Experts] に「xxx record(s) written」と言うメッセージか出たら、指定した時間足のヒストリデータの生成が完了したと言うメッセージです。
      そのメッセージを確認したら、日足までのデータを同じ手順で作成してください。
      同じチャート上で2回目から実行しようとすると、「period_convertが実行中だ」類のメッセージと、[はい(Y)] [いいえ(N)] と言う応答ボタンがが出てくるので、[はい(Y)] をクリックします。
    15. 以上で1つの通貨ペアの作業は終了です。
      続けて必要な通貨ペアの作業を行ってください。
      ただし、繰り返し行っているとメモリ不足になるので、「0 record(s) written」と言うメッセージが出たらMT4を再起動しなおして、もう一度その通貨ペアの作業は最初からやり直します。

    上記手順では、その時点で入手可能な業者のデータとヒストリセンターのデータのマージをしました。
    同様に業者からヒストリデータをダウンロードできるなら、そのデータを入手、インポートをして同じようにして足りない過去のデータのみヒストリセンターから補充する、としたほうがいいかもしれません。
    ちなみに僕は、FXDD のデータは昨年から自力でためている、自力で業者サーバから取得したデータを(A)、FXDD の提供のヒストリカルデータを(B)、Alpari のデータを(c)、ヒストリセンターを(D)とランク付けして、以下のようにマージしたデータも使ってます。
    どのみち、完全なデータが入手できない、なら、少しでもマシなデータを多く使おう、と言う考え方ですね。
    HistoryData_000.gif

    思ったより時間がかかったので、AsianTimeTrader2 の参考パラメタ他は、夕方~夜にかけて記事にします。

    スポンサーサイト

    当然ですが、この記事の内容は、必ずしも、目にした方にとって都合がいいとは限りません。
    全てに言えることですが、使える使えない、は、自分のスタイルに合うか否か、に著しく依存します。
    また、それなりに調査をしたりもしていますが、99.89%、当方の主観に基づいている可能性があります。
    更に、アフィリエイトへのインセンティブ、労力に対する寄付など、一切の例外なく第三者からの「対価」を得る行為への流用の一切を禁じます。

    4件のコメント

    [C885] MetaTrader4 の プログラミングについて

    大変失礼なのですが、質問させてください。

    「MetaTrader4 の プログラミング」について教えてください。
    MetaTrader4 の MetaEditor を使い、システムトレードのプログラミングをしています。

    下記のことがどうしてもわかりません。
    プログラムにしたら、ほぼ1行なんですが・・・・。

    int start()
    {
    Print( IndicatorCounted() );
    return(0);
    }

    の上のプログラムをコンパイルし、strategy tester を使い実行すると、
    「操作履歴」のタブのメッセージに、

    M1:-1

    という出力結果がずらっとでます。
    IndicatorCounted() は
    インジケータが起動して以降、変化していないローソク足の数を返す関数ですので、結果がもっと大きな値になるとの認識なんですが、実際は-1 と表示されてしまいます。
    このエラーを解決したいので、ご意見頂けないでしょうか。

    今作ろうとしている平均足のプログラム作成が進みません。

    よろしくお願いいたします。
    • 2009-02-11 22:56:51
    • ゆうきら
    • URL
    • 編集

    [C886] ゆうきら さん>

    こんにちわ^^
    IndicatorCounted()が値を返しませんか^^;
    不思議に思ってちょっと試していたんですが、EAに記述していませんか?
    だとすれば正常ですよ。
    と言うのも、IndicartorXXXX()系の関数はカスタムインジケータ用なので、カスタムインジケータでしか使えません。
    どうしてもEAで使いたい、って場合は、

    int a;

    int init()
    {
    a = -1;
    return(0);
    }

    int start()
    {
    if(a == -1) a = Bars;
    int ind_cnt = Bars - (a - 1);
    return(0)
    }

    で同じ感じになるかと。
    ただ、この場合は、インジケータが起動してから、ではなく、EAが起動した最初のイベントから何足更新されたか、になりますが。
    上手く文意を読み取れてなくて、あさっての方向だったら、そうじゃねぇよ、って返してくれると助かります^^;
    • 2009-02-12 11:35:14
    • takiguchi
    • URL
    • 編集

    [C887]

    突然の書き込みに対して、ご丁寧にご回答いただき、
    本当にありがとうございます。とてもよく理解できました。
    EAでは無理なんですね・・・あさっての方向を向いていたのは私でした。
    試しに、カスタムインジゲータで同じプログラムを書くと、
    正しく表示することができました。

    実は、平均足を指標にして自動売買のプログラムを作成しようと考えていて、
    平均足はiMAなどの関数がないため、自分で計算しなければ!!と思い、
    今回のIndicatorCounted()をEAで使用し色々と計算するつもりでいました。

    EAの中でIndicatorCounted()の使用が無理であれば、
    悩む必要がありそうです・・・まだまだ勉強不足です。

    本当に今回はコメントありがとうございました。
    • 2009-02-13 00:22:06
    • ゆうきら
    • URL
    • 編集

    [C888] ゆうきら さん>

    あさっての方向でなくて一安心^^;
    人間が大スランプ中なのでorz

    EAで計算した方がいいのか、それとも、インジケータを作って、iCustom() で呼び出した方がいいのか、は、考え方によると思いますが・・・
    個人的には、手っ取り早く、iCustom()で呼び出したほうがいいかと^^
    インジケータ部の修正だけ、とかもしやすいですしね。
    ただその場合は、カスタムインジケータのコールタイムがが意外と…と^^;

    EA作成、頑張ってくださいね
    • 2009-02-14 19:41:16
    • takiguchi
    • URL
    • 編集

    コメントの投稿

    投稿フォーム
    アダルト系サイトへの誘導やそう思わせるコメントは無条件で不許可です。
    同時に、意図や内容の如何に関わらず、プロバイダに通報します。
    投稿した内容は管理者にだけ閲覧出来ます

    この記事に対してトラックバックを送信する(FC2ブログユーザー)
    http://investers.blog36.fc2.com/tb.php/866-f11970ca

    0件のトラックバック

    Appendix

    カレンダー

    07 | 2017/08 | 09
    - - 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 - -

    特別リンク

    PTR/PTC/ASP

    LuxuryMail

    検索エンジン

    Google

    ブログ検索

    BeGood

    OrangeAd

    メールフォーム

    名前:
    メール:
    件名:
    本文:

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。