超シンプルな自動売買プログラム(14) ハル移動平均線
公開日:
:
最終更新日:2023/07/26
マネー
久々に「超シンプルな自動売買プログラム」シリーズを再開しますか。
ハル移動平均線
HUL移動平均線(HMA、Hull Moving Average) はアラン・ハル(Alan Hull)という人によって開発された移動平均線です。
ソースを見ると、このあたりがキモですね。
vect[x]=2*WMA(x, period/2) – WMA(x, period);
WMA は”終値の LWMA” を示し、vect は直近半分の期間の2倍から直近の値を引いたもので、これで直近の半分(後半)を重視する重み付けをしていますね。
period/2 って、デフォルトは period=15 なんで整数にならなくてもいいんですね?
で、最終的に計算される HMA ってのは vect のさらに LWMA(線形荷重移動平均線)を取ったものです。
LWMA ってのはそもそも直近を重視するものなんですが、それを2回も行って、その間に独自の直近の後半部重み付けを加えるという、「歪んだ2枚のバンズで崩れたパテを挟んだ」ような状態になったものがハル移動平均線ですね。
はんぱない加重方法ですネ。
で、表示するとこんなの。
上昇トレンドでは緑、下降トレンドでは赤に切り替わって表示されるように工夫されています。
ローソク足によくまとわりついていますね。
period が 15 と大きいのに、トレンド切り替えのタイムロスがほとんどありませんねぇ。
すごい・・・
ダウンロード> HMA.mq4
HMA を使った自動売買プログラム
さて、EA化しましょう。
超シンプルに、終値が HMA を上抜きしたら買い、下抜きしたら売りにします。
これだけだとドテンになってしまうので、私お得意の HLバンドトレーリングストップ、暴落対策、固定ロスカット、クラウドフィルタ、タイムフィルタをゴテゴテにつけます。
え、シンプルじゃない?
まあ、いいでしょ。
EURUSD 1時間足 2015/3/9-31
トレンディな相場ではなかなかいいですね。
そうでないときは・・・地獄?
補足
もっとシンプルにしますか。
クラウドフィルタとタイムフィルタを除いたらこうなります。
取引数が4倍に増えましたね。ただし、総損益は 1.5倍どまり。
関連記事
超シンプルな自動売買プログラム(13) 前週の平均値と順張り 時間特性
プログラムソース
// // yasciiHMA01.mq4 // HMA 使用(Downloadsフォルダに HMA.mq4 が必要) // //マジックナンバーの定義 #define MAGIC 46001 //パラメーターの設定// extern double Lots = 1.0; //取引ロット数 extern int Slip = 10; //許容スリッページ数 extern string Comments = "HMA01"; //コメント extern int Fast_period = 14 ; extern double margin = 0.0 ; int HL_Period = 14 ; extern double ILC = 10.0 ; extern int in_time = 10; // 取引開始時間 extern int out_time = 20; // 取引停止時間 int Tenkan_sen=9; int Kijun_sen=26; double Senkou_span_b=52; //変数の設定// int Ticket_L = 0; //買い注文の結果をキャッチする変数 int Ticket_S = 0; //売り注文の結果をキャッチする変数 int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数 int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数 int OS1 ; int OS2 ; double OOPL; double OOPS; int start(){ if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ; double dir1 = iCustom(NULL, 0, "Downloads\\HMA",15,3,0,2,1); double dir2 = iCustom(NULL, 0, "Downloads\\HMA",15,3,0,2,2); double cla1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 3, Kijun_sen); double clb1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 4, Kijun_sen); double HH2 = Low[iHighest(NULL, 0, MODE_LOW, HL_Period, 2)]; double LL2 = High[iLowest(NULL, 0, MODE_HIGH, HL_Period, 2)]; double lc = ILC; if(( Digits ==3 ) ||(Digits ==5)) lc = lc*10.0 ; //買いポジションのエグジット OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET); OOPL = OrderOpenPrice(); if( ((Close[1] < dir1 && Close[2] > dir2) || ( OOPL - lc*Point >= Close[1] ) || Close[1] < HH2) && ( Ticket_L != 0 && Ticket_L != -1 )) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } //売りポジションのエグジット OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); OOPS = OrderOpenPrice(); if( ((Close[1] > dir1 && Close[2] < dir2) || ( OOPS + lc*Point <= Close[1] ) || Close[1] > LL2) && ( Ticket_S != 0 && Ticket_S != -1 )) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S ==1 ) {Ticket_S = 0;} } //買いエントリー if( Close[1] > dir1 && Close[2] < dir2 && ( Close[1] > cla1 && Close[1] > clb1 ) && ( Hour() >= in_time && Hour() <= out_time ) && ( Ticket_L == 0 || Ticket_L == -1 ) && ( Ticket_S == 0 || Ticket_S == -1 )) { Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red); } //売りエントリー if( Close[1] < dir1 && Close[2] > dir2 && ( Close[1] < cla1 && Close[1] < clb1 ) && ( Hour() >= in_time && Hour() <= out_time ) && ( Ticket_S == 0 || Ticket_S == -1 ) && ( Ticket_L == 0 || Ticket_L == -1 )) { Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue); } return(0); }
###
関連記事
-
オシレーターの解釈(数値判定)について
オシレーター系の評価には、「基準となる数値をどうとるか」 や「順張りととらえるかあるいは逆張
-
外貨預金より外貨建てMMF
銀行で扱っている外貨預金ですが、利用している人はいるのでしょうか。 私はやったことがありません
-
ふるさと納税3回め / イチゴ 玄海町
以前の記事「ふるさと納税2回め / 液晶ディスプレィ XU2390HS-B1」でズにのった私は続
-
本日アメリカの社債を売りました
本日アメリカの社債を全部売りました(先日は米国債を全部売りました)。 今月8日の利払日が過ぎた
-
[FX] 裁量トレードと自動売買プログラムによるトレード
FX のトレードには、裁量トレードと自動売買プログラムによるトレードがあります。 裁量トレード
-
新生銀行 ATM使用料無料
* みなさんのお住まいのところは銀行は近いのでしょうか。 もし遠ければ新生銀行の口座でも作られてはい
-
【FX】Fintokei トレードページは公開できる
またまた、ドハマリしている Fintokei の話題ですが、トレーダー個別のページ内の成績をウェブサ
-
ど素人がはじめるFXの本 / 羊飼い
ど素人がはじめるFXの本 「羊飼いの外国為替証拠金取引FXブログ」管理人 羊飼
-
超シンプルな自動売買プログラム(12) 前週の平均値と逆張り 時間特性
1時間だけのトレード 以前の記事「超シンプルな自動売買プログラム(11) 前週の平均値と逆張り