Wizard In The Market
システムトレードの魔術師

*

■超直感!MT4プログラミング講座■ 第38回 ブレイクアウトシステムのEA作成

公開日: : 最終更新日:2015/01/13 MT4(MQL4)プログラミング講座

おはようございます。キリンです。
脱サラしたことがついに親に発覚し、昨日電話かかってくると思ったらきませんでした。
親は話したいこといっぱいあるんだろうけど、こっちにはないから困るんですよね。
しっかり話し聞くよう心がけます。


第38回 ブレイクアウトシステムのEA作成(3)

■ブレイクの判断の方法
■実際のプログラム

■ブレイクの判断の方法

前回は、実際に直近までの安値・高値をLowやHighを用いて導出し、
それが現在の終値に対してブレイクしているか?ということを判断しました。
ですが、iLowest()やiHighest関数の特徴を使えば別に価格の比較をする必要がないんですね。
iLowest関数を次のように引数を割り当てたとしましょう。
lowestBar = iLowest(NULL, 0, MODE_LOW, LongSpan ,0)
前回との違いは最後の引数を1から0にしたということですね。
すると、最新のローソク足が最安値を記録したときに、この関数の戻り値が0になります。
ということで、安値のブレイクを「iLowestが0になったとき」という風に考えてもいいわけです。
・・・ですが、この方法ではあまり融通を利かすことができません。
例えば、「安値を5pips以上更新したとき」という判断をしたい場合などは、
iLowest関数の戻り値0になるだけでは判断できないですよね。
僕の場合は最新のローソク足をiLowest()関数の中に含めずに、
Low[]安値を算出し、現在の値と比較するほうが好きです。
■実際のプログラム
こんな感じに作ってみました。
※豊嶋先生の本から、ライブラリーをお借りしています。
[ 参考文献 ]
FXメタトレーダー実践プログラミング (現代の錬金術師シリーズ)/豊嶋久道

¥2,940Amazon.co.jp
BreakOutSystem.mq4
中身は前回の講座を見ていただければと思います。
ただ、サブルーチンの説明が必要だと思うので、簡単に説明させていただきます。
詳しくは豊嶋先生の著書をご覧ください。
▼bool MyOrderSend(int type, double lots, double price, int slippage, double sl, double tp, string comment, int magic);
注文をします。基本的にはOrderSendと変わりませんが、
エラー処理が含まれていて便利です。
▼double MyCurrentOrders(int type, int magic);
ポジションがあるかを確認します。
▼bool MyOrderClose(int slippage, int magic);
指定マジックナンバーのポジションを決済します。
プログラムの中身を見て分からない点などありましたら、
お声をおかけいただければと思います。
今日もお読みいただきまして、ありがとうございます!

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 52 follow us in feedly

関連記事

no image

■超直感!MT4プログラミング講座■ 第17回 iMA()に慣れよう

こんばんは!キリンです。 今日、鮒谷さんのかの有名なメルマガ、平成進化論において面白い話が載っていました。 簡単にご紹介

記事を読む

no image

■超直感!MT4プログラミング講座■ 第25回 発注スプリクトの作成

おはようございます。キリンです。 今日から引越しの準備です。 今週はあまり仕事が進んでないです・・・。 引越しの準備とか

記事を読む

no image

■超直感!MT4プログラミング講座■ 第16回 インディケーターの実働部分

こんばんは。キリンです。 先ほどHey!Hey!Hey!の大阪の歌特集をやっていました。 Dreams Come Tru

記事を読む

no image

■超直感!MT4プログラミング講座■ 第2回 変数を覚えよう!

こんばんは。キリンです。 この講座の第1回で、非常に大きな反響をいただけました。 MT4のプログラミングに興味持っている

記事を読む

no image

■超直感!MT4プログラミング講座■ 第34回 決済スプリクトをサブルーチン化する

こんにちは。キリンです。 自立ってそんなに難しくないと思うんですが、 自律は大変ですよね。 自立できれば自律を目指さなけ

記事を読む

no image

■超直感!MT4プログラミング講座 第37回 ブレイクアウトシステムのEA作成(2)

おはようございます。キリンです。 日本、負けてしまいましたね。 でも、すごい感動しました。 すごい夢をもらいました。 優

記事を読む

no image

■超直感!MT4プログラミング講座■ 第27回 発注スプリクトの作成(3)

こんにちは!キリンです。 今日、ついに大阪の地に降り立ちました。 5年ぶりの大阪。あの頃とはまったく気持ちが違いますね。

記事を読む

no image

■超直感!MT4プログラミング講座■ 第4回 関数の定義方法

おはようございます。キリンです。 「パソコンを付けたら、まずブログを書く!」というマイルール作ってみました。 実践せねば

記事を読む

no image

■超直感!MT4プログラミング講座■ 第7回 インディケーター表示のために

没になった回です。 内容が雑なため、第8回へ移動していただければと思います。 興味のある方はご覧いただければと思います。

記事を読む

no image

■超直感!MT4プログラミング講座■ 第13回 MQL基本関数・変数を覚えよう!

こんばんは!キリンです。 昨日、faiさん(とあるMetaTraderの備忘秘録)にブログで私の講座を紹介していただきま

記事を読む

Comment

  1. ごんた より:

    SECRET: 0
    PASS:
    親御さんには、内緒でしたか心配…
    と言うより若いし技術があるのだから頑張って欲しいです(^-^)b
    良い、インジケータやEAを開発すれば必ず社会の役に立ちます!!
    私も、早くFXの技術を磨き、早期退社したものの、まだ仕事が見つかってない同僚に教えてあげたいです!!
    その為にも良いインジケータを期待してます
    同じ本買いましたがちんぷんかんぷんでした(>へ<)

  2. junky より:

    SECRET: 0
    PASS:
    実践編を買わないといけないんですね(笑)
    宝の持ち腐れにならなければいいのですが・・・

  3. SECRET: 0
    PASS:
    >ごんたさん
    コメントありがとうございます!
    実績で示すしかないと思っているので、
    親には説明をやめてしまいました。
    (散々説明してきたんですけどね^^;)
    同じ本に至るまでの下地を着けるための超直感プログラミング講座だったつもりです。
    講座を一通り見ていただければ、
    理解も早くなると思いますよ!
    分からないところがあればお気軽にご質問いただければと^^

  4. SECRET: 0
    PASS:
    >junkyさん
    実践編にのっている内容を載せると、
    豊嶋さんに悪いのでその当たりの説明ができないんですよね^^;
    今までの講座をお読みいただいていれば、
    間違いなく理解できると思います!
    ぜひぜひチャレンジしてみていただければと^^
    コメントありがとうございます!

  5. junky より:

    SECRET: 0
    PASS:
    3ヶ月も経過しちゃいましたが、やっと実践編を入手しました(笑)
    このプログラムを改良して、自分の思うようなモノを作りたいと思います。
    が、言語の理解が進んでおらず、色々とアドバイスをお願いしたいのですが・・・

  6. SECRET: 0
    PASS:
    >junkyさん
    お久しぶりです^^
    おお。実践編を購入されたのですね!
    どんなアドバイスがいりますか?

  7. junky より:

    SECRET: 0
    PASS:
    このEAを叩き台にしてですが・・・
    先ずは、N日の高値・安値を取得するのはこのままでOKですよね。
    で、高値・安値を5pips越えたら逆指値でエントリー、10pipsで利確又は損切り。
    非常にシンプルに出来そうなんですが・・・
    よろしくご指導願いますm(__)m

  8. SECRET: 0
    PASS:
    >junkyさん
    内容が簡単ですので、一度チャレンジしてみてはいかがでしょうか。
    多分、中身を理解できれば10分かからない改造です・・・。
    それで分からなければ質問していただければと^^

  9. junky より:

    SECRET: 0
    PASS:
    コレを最初に追加。
    extern int SLpips = 10; //ストップロスの幅pips
    extern int RKpips = 10; //利益確定の幅pips
    extern int ORpips = 5; //エントリーの幅pips
    で、発注部分を
    if(Close[0] – ORpips*Point <= longLowestPrice && s.pos == 0){
    MyOrderSend(OP_SELL, Lots, Bid, Slippage, Bid + SLpips * Point, Bid – RKpips * Point, COMMENT, MAGIC);
    }
    if(Close[0] + ORpips*Point >= longHighestPrice && b.pos == 0){
    MyOrderSend(OP_BUY, Lots, Ask, Slippage, Ask – SLpips * Point, Ask + RKpips * Point, COMMENT, MAGIC);
    }
    逆指値にしようと思ったんですが、そのまま成行で。
    これでコンパイルしたところエラーはなく、早速テストしてみたんですが、約定が一つもナシで・・・
    どうしたものでしょうか?

  10. junky より:

    SECRET: 0
    PASS:
    上のは、実践編を見て失敗だとわかりました(笑)
    メンドウになったので、
    #include <MyLib.mqh>
    を使いました。
    で、これを追加。
    extern int SLpips = 100; // 損切り値幅(pips)
    extern int TPpips = 200; // 利食い値幅(pips)
    extern int ORpips = 5; // ブレイク後に何pips上下でエントリーするか
    スタート関数の改造。
    if(Close[0] – ORpips*Point <= longLowestPrice && s.pos == 0){
    MyOrderSendSL(OP_SELL, Lots, Bid, Slippage, SLpips, TPpips, COMMENT, MAGIC);
    }
    if(Close[0] + ORpips*Point >= longHighestPrice && b.pos == 0){
    MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips, TPpips, COMMENT, MAGIC);
    }
    最後にキモのコレを。
    // オーダー送信関数(損切り・利食いを値幅で指定)
    bool MyOrderSendSL(int type, double lots, double price, int slippage, int slpips, int tppips, string comment, int magic)
    {
    int mult=1;
    if(Digits == 3 || Digits == 5) mult=10;
    slippage *= mult;
    if(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult *= -1;
    double sl=0, tp=0;
    if(slpips > 0) sl = price-slpips*Point*mult;
    if(tppips > 0) tp = price+tppips*Point*mult;
    return(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic));
    }
    一応、意図するように動いています。

  11. SECRET: 0
    PASS:
    >junkyさん
    MyOrderSendSLいいですよねー。
    それ自体をmqhにほりこんじゃいました^^
    解決できてよかったです
    あの本いいですよねー。

  12. ko-san より:

    はじめまして。
    FXのEAに興味を持ち、超直感!MT4プログラミング講座を進めてきましたが、第38回にある
    BreakOutSystem.mq4が
    404 not foundで確認できません。
    参照できるようにならないでしょうか?
    ずいぶん前のブログなのに申し訳ありません。

    • Fx-Kirin pgkireek より:

      確かにリンク切れしてますね・・・。
      原因は分からないですが、残念ながらもうソースも残ってないです orz

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

システムトレードを始める前に知っておきたかったこと

今日の勉強会で発表してきました。nbviewer に共有しておきます。 システムトレードを始め

chmod で やらかしてしまったときの対処法

メモ書きです。 find | xargs とかを普通にやってしまうと、すぐに argument

AMD Ryzen & Nvidia GTX 1080 BTO PC 構成・組立と Ubuntu インストール

まだググっても、構成例とか出てないので参考になるんじゃないかなと。機械学習用ですが、全然ゲーム用

Windows のデスクトップアプリをSSHクライアントから再起動する

シェルスプリクト一発で、システムトレードの設定を一括で更新して、MT4を再起動したいとかそういう

UX21A のディスプレイが壊れたので修理

UX21A のディスプレイがぶっ壊れた。 画面にラインが入ったり、ディスプレイが揺れたりするよ

→もっと見る

PAGE TOP ↑