LousokuMark

Author: Copyright(c) 2010 Masaru Sasaki
LousokuMark

This script is a technical analysis tool designed for the MetaTrader 4 platform. Its primary purpose is to identify and interpret specific candlestick patterns (Lousoku) by analyzing the relationship between price action, opening prices, closing prices, highs, and lows across consecutive candles.

Core Functionality

The script monitors the live market and evaluates the most recent completed candles to determine if they meet various criteria that suggest a potential shift in market sentiment. It categorizes these movements into two main types: Sell Signals (bearish pressure) and Buy Signals (bullish pressure).

How it Works

The logic operates by checking several specific geometric and price-movement conditions:

  • Pattern Recognition: The script looks for various configurations, such as "Engulfing" patterns (where one candle completely covers the previous one), "Hammer" or "Gravestone" shapes (identifiable by long wicks), and specific gaps between opening and closing prices.
  • Sentiment Identification: Depending on which conditions are met, the script flags the market as favoring a "Buy" or a "Sell." For example, it looks for signs of price exhaustion, trend reversals, or significant momentum shifts.
  • Customizable Filters: The user can enable two specific types of advanced alerts:
    • Upper Wick Analysis: Monitors if the "tail" at the top of a candle exceeds a certain size, which may indicate selling pressure.
    • Lower Wick Analysis: Monitors if the "tail" at the bottom of a candle exceeds a certain size, which may indicate buying support.
  • User-Defined Thresholds: The user can set specific point values (pips) to determine how large these wicks must be before they are considered significant enough to trigger a signal.

Output and Alerts

Once the logic identifies a pattern, it provides the user with feedback in one of two ways based on the settings:

  1. Expert Logs: The script can send a message to the internal system log (the "Experts" tab), which is useful for automated systems or retrospective auditing.
  2. On-Screen Comments: The script can display the information directly on the trading chart's visual interface, allowing for real-time monitoring.

The output includes both a general classification (Buy/Sell) and a specific descriptive label that identifies exactly which type of candlestick formation was detected (e.g., identifying a "Gravestone" vs. an "Engulfing" pattern).

10 Views
0 Downloads
0 Favorites
LousokuMark
//+------------------------------------------------------------------+
//|                                                  LousokuMark.mq4 |
//|                                  Copyright(c) 2010 Masaru Sasaki |
//|                                                                  |
//+------------------------------------------------------------------+
//
// u‹ÖŽ~Ž–€v
//  *‚±‚̃vƒƒOƒ‰ƒ€ƒ\[ƒXƒR[ƒh‚ð‚»‚Ì‚Ü‚Ü—¬—p‚µ‚½ƒ\ƒtƒg‚̔̔„“™‚ð
//   ˆêØ‹ÖŽ~’v‚µ‚Ü‚·B
// 
// u–Ɛӎ–€v
//  *‚±‚̃vƒƒOƒ‰ƒ€‚ÉŠî‚­sˆ×‚ÌŒ‹‰Ê”­¶‚µ‚½áŠQA‘¹Ž¸‚Ȃǂɂ‚¢‚Ä
//    ’˜ìŽÒ‚ÍˆêØ‚̐ӔC‚𕉂¢‚Ü‚¹‚ñB
//
// uà–¾v
//  *“®‚¢‚Ä‚¢‚郍[ƒ\ƒN‘«Œ»Ý’l‚Ì‚P‚‘O‚Æ‚Q‚‘O‚̃[ƒ\ƒN‘«Œ`ó‚É‚Ä
//   Žð“cŒÜ–@‚ð—p‚¢‚½”»’è‚ð‚µ‚Ä‚¢‚Ü‚·B
//   ‚½‚¾‚µA’·‚¢ã‚Ђ°A’·‚¢‰º‚Ђ°A‚ɂ‚¢‚Ă͕W€Ý’è‚ŃIƒt‚É
//   ‚µ‚Ä‚¢‚Ü‚·B
//   ——R‚Æ‚µ‚ẮA‰½pipsˆÈã‚ð’·‚¢‚ÆŠ´‚¶‚é‚̂ɑ΂µ‚Ȑl·‚ª‘å‚«‚¢ˆ×‚Å‚·B
//   ”»’茋‰Ê‚́A•W€Ý’è‚ł́AExpertsƒ^ƒu‚É•\ަ‚µ‚Ä‚¢‚Ü‚·B
//   1ˆÈŠO‚̐”’li—áF2jÝ’è‚ŁAƒ`ƒƒ[ƒg‚̍¶ã‚É•\ަ‚µ‚Ü‚·B
//   ƒ[ƒ\ƒN‘«‚݂̂ł̔»’è‚Å‚·‚̂ŁAÅ‚’lAÅˆÀ’lˆÊ’u‚̏oŒ»”»’è
//   ‚ð‚µ‚Ä‚¨‚è‚Ü‚¹‚ñB
//   ˆÚ“®•½‹Ïü‚âRSI“™‚Ì‘¼‚ÌŽw•W‚Æ‘g‚ݍ‡‚킹‚Ä‚²Žg—p‰º‚³‚¢B
//   ‚¿‚Ȃ݂ɁAŽð“cŒÜ–@‚̃[ƒ\ƒN‘«‚ªŠo‚¦‚«‚ê‚È‚¢‚̂ō쐬‚µ‚Ü‚µ‚½B^^;
//
//
// ŽQl‘ÐFFXƒƒ^ƒgƒŒ[ƒ_[“ü–å (PanRolling)
//           ‚¿‚á‚ñ‚Ɩׂ¯‚½‚¢l‚ÌŠ”‰¿ƒ`ƒƒ[ƒg•ªÍ‘å‘S  (Ž©—R‘–¯ŽÐ)
//           ‚±‚±‚܂Ŏg‚¦‚郍[ƒ\ƒN‘«ƒ`ƒƒ[ƒg (“ú–{ŒoÏV•·ŽÐ)
//
#property copyright "Copyright(c) 2010 Masaru Sasaki"
#property link      "http://www.metaquotes.net"

#property indicator_chart_window

// ƒ[ƒ\ƒN‘«”»’茋‰Ê•\ަˆÊ’u
#define PRN_EXPERTS 1  // Expertsƒ^ƒu
#define PRN_COMMENT 2  // ƒ`ƒƒ[ƒg¶ã


// ’·‚¢ã‚Ђ° on/off ƒtƒ‰ƒO
extern bool Hige_ue_long_flag = false;

// ’·‚¢ã‚Ђ°ƒTƒCƒYŽw’è pips
extern int Hige_ue_long_size = 20;

// ’·‚¢‰º‚Ђ° on/off ƒtƒ‰ƒO
extern bool Hige_sita_long_flag = false;

// ’·‚¢‰º‚Ђ°ƒTƒCƒYŽw’è pips
extern int Hige_sita_long_size = 20;

// ƒ[ƒ\ƒN‘«”»’茋‰Ê•\ަˆÊ’u‚Ì‘I‘ð  •W€Ý’èFExpertsƒ^ƒu
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 = "ƒ[ƒ\ƒN”»’è--> ";
      string s2hantei = "";
       
      if( Close[2] > Open[2] && Close[1] < Open[1] && Close[2] > Open[1] && Open[2] < Close[1] ){
          sellLousokuMark = true;
          s2hantei = "‰A‚̂͂ç‚ݐü‚Å‚µ‚½B";
      }
      else if( Close[2] > Open[2] && Close[1] < Open[1] && Close[2] < Open[1] && Open[2] > Close[1] ){
          sellLousokuMark = true;
          s2hantei = "‰A‚̂‚‚ݐü‚Å‚µ‚½B";
      }
      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 = "ŽO‰HƒKƒ‰ƒX‚Å‚µ‚½B ‘Šê‚Ì“]Š·“_–”‚́A";
      }
      else if( Close[2] > Open[2] && Close[1] < Open[1] && Close[2] == Close[1] && Close[2] < Open[1] ){
          sellLousokuMark = true;
          s2hantei = "o‰ï‚¢ü‚Å‚µ‚½B";
      }
      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 = "‚©‚Ô‚¹ü‚Å‚µ‚½B";
      }
      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 = "‚½‚·‚«ü‚Å‚µ‚½B";
      }
      else if( Close[2] > Open[2] && Close[1] < Open[1] && Open[2] == Open[1] ){
          sellLousokuMark = true;
          s2hantei = "U‚蕪‚¯ü‚Å‚µ‚½B";
      }
      else if( Close[2] > Open[2] && Close[1] > Open[1] && Close[1] == High[1] && Open[1] > Low[1] ){
          sellLousokuMark = true;
          s2hantei = "—z‚̃Jƒ‰ƒJƒTü‚Å‚µ‚½B";
      }
      else if( Close[2] > Open[2] && Close[1] < Open[1] && Open[1] == High[1] && Close[1] > Low[1] ){
          sellLousokuMark = true;
          s2hantei = "‰A‚̃Jƒ‰ƒJƒTü‚Å‚µ‚½B";
      }
      else if( Close[2] < Open[2] && Close[2] < Close[1] && Open[2] > Open[1] && Close[1] == Open[1] ){
          buyLousokuMark = true;
          s2hantei = "‰A‚ÌŠñˆø“¯Žžü‚Í‚ç‚Ý‘«‚Å‚µ‚½B";
      } 
      else if( Close[2] < Open[2] && Close[1] > Open[1] && Open[2] > Close[1] && Close[2] < Open[1] ){
          buyLousokuMark = true;
          s2hantei = "—z‚̂͂ç‚ݐü‚Å‚µ‚½B";
      }
      else if( Close[2] < Open[2] && Close[1] > Open[1] && Open[2] < Close[1] && Close[2] > Open[1] ){
          buyLousokuMark = true;
          s2hantei = "—z‚̂‚‚ݐü‚Å‚µ‚½B";
      }
      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 = "ÔŽO•º‚Å‚µ‚½B ‘Šê‚Ì“]Š·“_–”‚́A";
      }
      else if( Close[2] < Open[2] && Close[1] > Open[1] && Close[2] == Close[1] && Close[2] > Open[1] ){
          buyLousokuMark = true;
          s2hantei = "o‰ï‚¢ü‚Å‚µ‚½B";
      }
      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 = "‚½‚·‚«ü‚Å‚µ‚½B";
      }
      else if( Close[2] < Open[2] && Close[1] > Open[1] && Open[2] == Open[1] && Open[2] < Close[1] ){
          buyLousokuMark = true;
          s2hantei = "U‚蕪‚¯ü‚Å‚µ‚½B";
      }
      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 = "Ø‚荞‚ݐü‚Å‚µ‚½B";
      }
      else if( Close[1] == Open[1] ){
          buyLousokuMark = true; sellLousokuMark = true;
          s2hantei = "Šñˆø“¯Žžü‚Å‚µ‚½B‘Šê‚Ì“]Š·“_‚©H";
      }
      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 = "—zü‚Ì’·‚¢ã‚Ђ°‚Å‚µ‚½B";
            }
            if( Close[1] < Open[1] && (High[1] - Open[1]) >= lusize ){
                sellLousokuMark = true;
                s2hantei = "‰Aü‚Ì’·‚¢ã‚Ђ°‚Å‚µ‚½B";
            }
      }
      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 = "‰Aü‚Ì’·‚¢‰º‚Ђ°‚Å‚µ‚½B";
            }
            if( Close[1] > Open[1] && (Open[1] - Low[1]) >= lssize ){
                buyLousokuMark = true;
                s2hantei = "—zü‚Ì’·‚¢‰º‚Ђ°‚Å‚µ‚½B";
            } 
      }
      else {
          // ƒ[ƒ\ƒN”»’è•s‰Â
          sellLousokuMark = false; buyLousokuMark = false;
          s1hantei = "ƒ[ƒ\ƒN”»’è‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"; s2hantei = "";

      }
      
      // ƒ[ƒ\ƒN”»’茋‰Ê‚ð•\ަB 
      if( sellLousokuMark == true && buyLousokuMark == false)
      {
         if( SELECT_PRN == PRN_EXPERTS )
            Print(s1hantei+s2hantei+"Å‚’lŒ—‚Ȃ甄‚èƒVƒOƒiƒ‹");
         else
            Comment(s1hantei+s2hantei+"Å‚’lŒ—‚Ȃ甄‚èƒVƒOƒiƒ‹");
      }
      else if( buyLousokuMark == true && sellLousokuMark == false)
      {
         if( SELECT_PRN == PRN_EXPERTS )
            Print(s1hantei+s2hantei+"ÅˆÀ’lŒ—‚Ȃ甃‚¢ƒVƒOƒiƒ‹");
         else
            Comment(s1hantei+s2hantei+"ÅˆÀ’lŒ—‚Ȃ甃‚¢ƒVƒOƒiƒ‹");
      }
      else
      {
         if( SELECT_PRN == PRN_EXPERTS )
            Print(s1hantei+s2hantei);
         else
            Comment(s1hantei+s2hantei);
      }
           
   return(0);
  }
//+------------------------------------------------------------------+

Comments