//+------------------------------------------------------------------+ //| LousokuMark.mq4 | //| Copyright(c) 2010 Masaru Sasaki | //| | //+------------------------------------------------------------------+ // // 「禁止事項」 // *このプログラムソースコードをそのまま流用したソフトの販売等を // 一切禁止致します。 // // 「免責事項」 // *このプログラムに基づく行為の結果発生した障害、損失などについて // 著作者は一切の責任を負いません。 // // 「説明」 // *動いているローソク足現在値の1つ前と2つ前のローソク足形状にて // 酒田五法を用いた判定をしています。 // ただし、長い上ひげ、長い下ひげ、については標準設定でオフに // しています。 // 理由としては、何pips以上を長いと感じるのに対して個人差が大きい為です。 // 判定結果は、標準設定では、Expertsタブに表示しています。 // 1以外の数値(例:2)設定で、チャートの左上に表示します。 // ローソク足のみでの判定ですので、最高値、最安値位置の出現判定 // をしておりません。 // 移動平均線やRSI等の他の指標と組み合わせてご使用下さい。 // ちなみに、酒田五法のローソク足が覚えきれないので作成しました。^^; // // // 参考書籍:FXメタトレーダー入門 (PanRolling) // ちゃんと儲けたい人の株価チャート分析大全 (自由国民社) // ここまで使えるローソク足チャート (日本経済新聞社) // #property copyright "Copyright(c) 2010 Masaru Sasaki" #property link "http://www.metaquotes.net" #property indicator_chart_window // ローソク足判定結果表示位置 #define PRN_EXPERTS 1 // Expertsタブ #define PRN_COMMENT 2 // チャート左上 // 長い上ひげ on/off フラグ extern bool Hige_ue_long_flag = false; // 長い上ひげサイズ指定 pips extern int Hige_ue_long_size = 20; // 長い下ひげ on/off フラグ extern bool Hige_sita_long_flag = false; // 長い下ひげサイズ指定 pips extern int Hige_sita_long_size = 20; // ローソク足判定結果表示位置の選択 標準設定:Expertsタブ extern int SELECT_PRN = PRN_EXPERTS; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); bool buyLousokuMark = false, sellLousokuMark = false; string s1hantei = "ローソク判定--> "; string s2hantei = ""; if( Close[2] > Open[2] && Close[1] < Open[1] && Close[2] > Open[1] && Open[2] < Close[1] ){ sellLousokuMark = true; s2hantei = "陰のはらみ線でした。"; } else if( Close[2] > Open[2] && Close[1] < Open[1] && Close[2] < Open[1] && Open[2] > Close[1] ){ sellLousokuMark = true; s2hantei = "陰のつつみ線でした。"; } else if( Close[3] < Open[3] && Close[2] < Open[2] && Close[1] < Open[1] && Close[3] > Close[2] && Close[2] > Close[1]){ sellLousokuMark = true; s2hantei = "三羽ガラスでした。 相場の転換点又は、"; } else if( Close[2] > Open[2] && Close[1] < Open[1] && Close[2] == Close[1] && Close[2] < Open[1] ){ sellLousokuMark = true; s2hantei = "出会い線でした。"; } else if( Close[2] > Open[2] && Close[1] < Open[1] && Close[2] < Open[1] && Close[2] > Close[1] && Open[2] < Close[1] ){ sellLousokuMark = true; s2hantei = "かぶせ線でした。"; } else if( Close[2] > Open[2] && Close[1] < Open[1] && Close[2] > Open[1] && Open[2] < Open[1] && Open[2] > Close[1] ){ sellLousokuMark = true; s2hantei = "たすき線でした。"; } else if( Close[2] > Open[2] && Close[1] < Open[1] && Open[2] == Open[1] ){ sellLousokuMark = true; s2hantei = "振り分け線でした。"; } else if( Close[2] > Open[2] && Close[1] > Open[1] && Close[1] == High[1] && Open[1] > Low[1] ){ sellLousokuMark = true; s2hantei = "陽のカラカサ線でした。"; } else if( Close[2] > Open[2] && Close[1] < Open[1] && Open[1] == High[1] && Close[1] > Low[1] ){ sellLousokuMark = true; s2hantei = "陰のカラカサ線でした。"; } else if( Close[2] < Open[2] && Close[2] < Close[1] && Open[2] > Open[1] && Close[1] == Open[1] ){ buyLousokuMark = true; s2hantei = "陰の寄引同時線はらみ足でした。"; } else if( Close[2] < Open[2] && Close[1] > Open[1] && Open[2] > Close[1] && Close[2] < Open[1] ){ buyLousokuMark = true; s2hantei = "陽のはらみ線でした。"; } else if( Close[2] < Open[2] && Close[1] > Open[1] && Open[2] < Close[1] && Close[2] > Open[1] ){ buyLousokuMark = true; s2hantei = "陽のつつみ線でした。"; } else if( Close[3] > Open[3] && Close[2] > Open[2] && Close[1] > Open[1] && Close[3] < Close[2] && Close[2] < Close[1]){ buyLousokuMark = true; s2hantei = "赤三兵でした。 相場の転換点又は、"; } else if( Close[2] < Open[2] && Close[1] > Open[1] && Close[2] == Close[1] && Close[2] > Open[1] ){ buyLousokuMark = true; s2hantei = "出会い線でした。"; } else if( Close[2] < Open[2] && Close[1] > Open[1] && Close[2] < Open[1] && Open[2] > Open[1] && Open[2] < Close[1] ){ buyLousokuMark = true; s2hantei = "たすき線でした。"; } else if( Close[2] < Open[2] && Close[1] > Open[1] && Open[2] == Open[1] && Open[2] < Close[1] ){ buyLousokuMark = true; s2hantei = "振り分け線でした。"; } else if( Close[2] < Open[2] && Close[1] > Open[1] && Low[2] > Open[1] && (((Open[2] - Close[2])/2)+Close[2]) < Close[1] ){ buyLousokuMark = true; s2hantei = "切り込み線でした。"; } else if( Close[1] == Open[1] ){ buyLousokuMark = true; sellLousokuMark = true; s2hantei = "寄引同時線でした。相場の転換点か?"; } else if( Hige_ue_long_flag == true ){ double lusize = Hige_ue_long_size * Point; if( Close[1] > Open[1] && (High[1] - Close[1]) >= lusize ){ sellLousokuMark = true; s2hantei = "陽線の長い上ひげでした。"; } if( Close[1] < Open[1] && (High[1] - Open[1]) >= lusize ){ sellLousokuMark = true; s2hantei = "陰線の長い上ひげでした。"; } } else if( Hige_sita_long_flag == true ){ double lssize = Hige_sita_long_size * Point; if( Close[1] < Open[1] && (Close[1] - Low[1]) >= lssize ){ buyLousokuMark = true; s2hantei = "陰線の長い下ひげでした。"; } if( Close[1] > Open[1] && (Open[1] - Low[1]) >= lssize ){ buyLousokuMark = true; s2hantei = "陽線の長い下ひげでした。"; } } else { // ローソク判定不可 sellLousokuMark = false; buyLousokuMark = false; s1hantei = "ローソク判定できませんでした。"; s2hantei = ""; } // ローソク判定結果を表示。 if( sellLousokuMark == true && buyLousokuMark == false) { if( SELECT_PRN == PRN_EXPERTS ) Print(s1hantei+s2hantei+"最高値圏なら売りシグナル"); else Comment(s1hantei+s2hantei+"最高値圏なら売りシグナル"); } else if( buyLousokuMark == true && sellLousokuMark == false) { if( SELECT_PRN == PRN_EXPERTS ) Print(s1hantei+s2hantei+"最安値圏なら買いシグナル"); else Comment(s1hantei+s2hantei+"最安値圏なら買いシグナル"); } else { if( SELECT_PRN == PRN_EXPERTS ) Print(s1hantei+s2hantei); else Comment(s1hantei+s2hantei); } return(0); } //+------------------------------------------------------------------+