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:
- 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.
- 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).
//+------------------------------------------------------------------+
//| LousokuMark.mq4 |
//| Copyright(c) 2010 Masaru Sasaki |
//| |
//+------------------------------------------------------------------+
//
// uÖ~v
// *±ÌvO\[XR[hð»ÌÜܬpµ½\tgÌÌð
// êØÖ~vµÜ·B
//
// uÆÓv
// *±ÌvOÉîÃs×Ìʶµ½áQA¹¸ÈÇÉ¢Ä
// ìÒÍêØÌÓCð¢Ü¹ñB
//
// uà¾v
// *®¢Ä¢é[\N«»ÝlÌPÂOÆQÂOÌ[\N«`óÉÄ
// ðcÜ@ðp¢½»èðµÄ¢Ü·B
// ½¾µA·¢ãаA·¢ºÐ°AÉ¢ÄÍWÝèÅItÉ
// µÄ¢Ü·B
// RƵÄÍA½pipsÈãð·¢Æ´¶éÌÉεÄÂl·ªå«¢×Å·B
// »èÊÍAWÝèÅÍAExperts^uÉ\¦µÄ¢Ü·B
// 1ÈOÌliáF2jÝèÅA`[g̶ãÉ\¦µÜ·B
// [\N«ÌÝÅÌ»èÅ·ÌÅAÅlAÅÀlÊuÌo»»è
// ðµÄ¨èܹñB
// Ú®½ÏüâRSI̼ÌwWÆgÝí¹Ä²gpº³¢B
// ¿ÈÝÉAðcÜ@Ì[\N«ªo¦«êÈ¢ÌÅ쬵ܵ½B^^;
//
//
// QlÐ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 tO
extern bool Hige_ue_long_flag = false;
// ·¢ãаTCYwè pips
extern int Hige_ue_long_size = 20;
// ·¢ºÐ° on/off tO
extern bool Hige_sita_long_flag = false;
// ·¢ºÐ°TCYwè 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 = "OHKXŵ½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ÌJJTüŵ½B";
}
else if( Close[2] > Open[2] && Close[1] < Open[1] && Open[1] == High[1] && Close[1] > Low[1] ){
sellLousokuMark = true;
s2hantei = "AÌJJTüŵ½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ÈçèVOi");
else
Comment(s1hantei+s2hantei+"ÅlÈçèVOi");
}
else if( buyLousokuMark == true && sellLousokuMark == false)
{
if( SELECT_PRN == PRN_EXPERTS )
Print(s1hantei+s2hantei+"ÅÀlÈç¢VOi");
else
Comment(s1hantei+s2hantei+"ÅÀlÈç¢VOi");
}
else
{
if( SELECT_PRN == PRN_EXPERTS )
Print(s1hantei+s2hantei);
else
Comment(s1hantei+s2hantei);
}
return(0);
}
//+------------------------------------------------------------------+
Comments