MT5 all candlestick pack
//+------------------------------------------------------------------+
//| Compleate Candlestick Pack.mq5 |
//| Copyright 2023, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
CTrade trade;
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
input int MagicNumber=12345;
input double lotsize=0.01;
input double TargetMultiplier=0.01;
input bool invertedHammer=true;
input bool Hammer=true;
input double Hammer_Wick_Multiplier = 2.5;
input double Hammer_Body_Percentage = 0.25;
input bool uptrend_downtrend=true;
input int trendlookback=50;
bool mabuy=false,masell=false;
enum stmode
{
OnHighBreak=1,
OnCandleFormation=2,
NextCandleClose=3,
};
string stgmodes;
input stmode StrategyMode = OnCandleFormation;
input string Info="Maribozu Candle";
enum canmode
{
NoWick=1,
BothWick=2,
Openwick=3,
Closewick=4,
};
string candlemode;
input canmode CandleMode = NoWick;
input double mari_greater_than=2;
input double mari_less_than=5;
input bool mariBullish=true;
input bool mariBearish=true;
input bool mariMaCondition=true;
input double MaPeriod1=20;
input double MaPeriod2=200;
enum matrig
{
OpenClose=1,
HighLow=2,
};
string MATRIGER;
input matrig TriggerMode = OpenClose;
input double mari_closingPercentage=80;
input string Info1="Engulfing Candle";
input double Engulfing_greater_than=2;
input double Engulfing_less_than=5;
input bool EngulfingBullish=true;
input bool EngulfingBearish=true;
input double Engulfing_closingPercentage=80;
input string Info2="Bullish Soldier Candle";
input bool Bullish_Soldier=true;
input double Soldier_greater_than=2;
input double Soldier_less_than=5;
input double Soldier_closingPercentage=80;
input string Info3="Bearish Crow Candle";
input bool Bearish_Crow=true;
input double Crow_greater_than=2;
input double Crow_less_than=5;
bool entryFormation=false;
double open1,high1,low1,close1,body,range,lowerWick,upperWick,currentClose,value,ask,bid,ma1,ma2;
bool HBUY=false,HSELL=false;
datetime entry=0,candletime=0,mentry=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Crow()
{
double o1,o2,o3,o4,h1,h2,h3,h4,l1,l2,l3,l4,c1,c2,c3,c4,size,cmp;
o1=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
o3=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,3),2);
o4=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,4),2);
h1=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
h3=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,3),2);
h4=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,4),2);
h1=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
l1=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
l3=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,3),2);
l4=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,4),2);
c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
c3=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,3),2);
c4=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,4),2);
cmp=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,0),2);
size= h1-l3;
if(StrategyMode==OnHighBreak)
{
stgmodes="OnHighBreak";
}
else
if(StrategyMode==OnCandleFormation)
{
stgmodes="OnCandleFormation";
}
else
if(StrategyMode==NextCandleClose)
{
stgmodes="NextCandleClose";
}
if(Bearish_Crow==true)
{
if(size>Soldier_greater_than && size<Soldier_less_than)
{
if(stgmodes=="OnCandleFormation")
{
if(c1<o1&&c2<o2&&c3<o3&&c1<c2&&c1<c3&&c2<c3&&mentry!=iTime(Symbol(),PERIOD_CURRENT,0)&&closing_Percentage_soldier()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Crow candle bearish OnCandleFormation @: "+ Symbol());
value=h1-l3;
value=value*TargetMultiplier;
value=l1-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h3,value,"OnCandleFormation");
}
}
if(stgmodes=="OnHighBreak")
{
if(c1<o1&&c2<o2&&c3<o3&&c1<c2&&c1<c3&&c2<c3&&mentry!=iTime(Symbol(),PERIOD_CURRENT,0)&&cmp<l1&&closing_Percentage_soldier()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Crow candle bearish OnHighBreak @: "+ Symbol());
value=h1-l3;
value=value*TargetMultiplier;
value=l1-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h3,value,"OnHighBreak");
}
}
if(stgmodes=="NextCandleClose")
{
if(c2<o2&&c3<o3&&c4<o4&&c2<c3&&c2<c4&&c3<c4&&mentry!=iTime(Symbol(),PERIOD_CURRENT,0)&&c1<l2&&closing_Percentage_soldier()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Crow candle bearish NextCandleClose @: "+ Symbol());
value=h2-l4;
value=value*TargetMultiplier;
value=l2-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h4,value,"NextCandleClose");
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Soldier()
{
double o1,o2,o3,o4,h1,h2,h3,h4,l1,l2,l3,l4,c1,c2,c3,c4,size,cmp;
o1=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
o3=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,3),2);
o4=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,4),2);
h1=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
h3=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,3),2);
h4=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,4),2);
h1=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
l1=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
l3=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,3),2);
l4=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,4),2);
c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
c3=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,3),2);
c4=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,4),2);
cmp=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,0),2);
size= h1-l3;
if(StrategyMode==OnHighBreak)
{
stgmodes="OnHighBreak";
}
else
if(StrategyMode==OnCandleFormation)
{
stgmodes="OnCandleFormation";
}
else
if(StrategyMode==NextCandleClose)
{
stgmodes="NextCandleClose";
}
if(Bullish_Soldier==true)
{
if(size>Soldier_greater_than && size<Soldier_less_than)
{
if(stgmodes=="OnCandleFormation")
{
if(c1>o1&&c2>o2&&c3>o3&&c1>c2&&c1>c3&&c2>c3&&mentry!=iTime(Symbol(),PERIOD_CURRENT,0)&&closing_Percentage_soldier()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Soldier candle bullish OnCandleFormation @: "+ Symbol());
value=h1-l3;
value=value*TargetMultiplier;
value=h1+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l3,value,"OnCandleFormation");
}
}
if(stgmodes=="OnHighBreak")
{
if(c1>o1&&c2>o2&&c3>o3&&c1>c2&&c1>c3&&c2>c3&&mentry!=iTime(Symbol(),PERIOD_CURRENT,0)&&cmp>h1&&closing_Percentage_soldier()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Soldier candle bullish OnHighBreak @: "+ Symbol());
value=h1-l3;
value=value*TargetMultiplier;
value=h1+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l3,value,"OnHighBreak");
}
}
if(stgmodes=="NextCandleClose")
{
if(c2>o2&&c3>o3&&c4>o4&&c2>c3&&c2>c4&&c3>c4&&mentry!=iTime(Symbol(),PERIOD_CURRENT,0)&&c1>h2&&closing_Percentage_soldier()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Soldier candle bullish OnHighBreak @: "+ Symbol());
value=h2-l4;
value=value*TargetMultiplier;
value=h2+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l4,value,"NextCandleClose");
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int highestcandle, lowestcandle;
double highvalue, lowvalue;
double High[], Low[];
bool isRangeCalculated = false;
bool isWaitingForBreakout = false;
int candleCounter = 0;
bool rangeBroken = false;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool closing_Percentage_soldier()
{
double o1=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
double h1=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
double l1=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double o3=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,3),2);
double h3=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,3),2);
double l3=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,3),2);
double c3=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,3),2);
double o4=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,4),2);
double h4=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,4),2);
double l4=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,4),2);
double c4=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,4),2);
double candlesize1=h1-l1,CandleBody1=MathAbs(c1-o1);
double candlesize2=h2-l2,CandleBody2=MathAbs(c2-o2);
double candlesize3=h3-l3,CandleBody3=MathAbs(c3-o3);
double candlesize4=h4-l4,CandleBody4=MathAbs(c4-o4);
double percentvalue1 = candlesize1*Soldier_closingPercentage*0.01;
double percentvalue2 = candlesize2*Soldier_closingPercentage*0.01;
double percentvalue3 = candlesize3*Soldier_closingPercentage*0.01;
double percentvalue4 = candlesize4*Soldier_closingPercentage*0.01;
if(StrategyMode==OnHighBreak)
{
stgmodes="OnHighBreak";
if(CandleBody1>=percentvalue1&&CandleBody2>=percentvalue2&&CandleBody3>=percentvalue3)
{return true; }
}
else
if(StrategyMode==OnCandleFormation)
{
stgmodes="OnCandleFormation";
if(CandleBody1>=percentvalue1&&CandleBody2>=percentvalue2&&CandleBody3>=percentvalue3)
{return true; }
}
else
if(StrategyMode==NextCandleClose)
{
stgmodes="NextCandleClose";
if(CandleBody4>=percentvalue4&&CandleBody2>=percentvalue2&&CandleBody3>=percentvalue3)
{return true; }
}
return false;
}
bool closing_Percentage_engulf()
{
if(StrategyMode==OnHighBreak)
{
stgmodes="OnHighBreak";
double o=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
double h=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
double l=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double c=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double candlesize=h-l,CandleBody=MathAbs(c-o);
double percentvalue = candlesize*Engulfing_closingPercentage*0.01;
if(CandleBody>=percentvalue)
{return true; }
}
else
if(StrategyMode==OnCandleFormation)
{
stgmodes="OnCandleFormation";
double o=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
double h=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
double l=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double c=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double candlesize=h-l,CandleBody=MathAbs(c-o);
double percentvalue = candlesize*Engulfing_closingPercentage*0.01;
if(CandleBody>=percentvalue)
{return true; }
}
else
if(StrategyMode==NextCandleClose)
{
stgmodes="NextCandleClose";
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double candlesize=h2-l2,CandleBody=MathAbs(c2-o2);
double percentvalue = candlesize*Engulfing_closingPercentage*0.01;
if(CandleBody>=percentvalue)
{return true; }
}
return false;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool closing_Percentage()
{
if(StrategyMode==OnHighBreak)
{
stgmodes="OnHighBreak";
double o=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
double h=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
double l=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double c=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double candlesize=h-l,CandleBody=MathAbs(c-o);
double percentvalue = candlesize*mari_closingPercentage*0.01;
if(CandleBody>=percentvalue)
{return true; }
}
else
if(StrategyMode==OnCandleFormation)
{
stgmodes="OnCandleFormation";
double o=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
double h=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
double l=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double c=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double candlesize=h-l,CandleBody=MathAbs(c-o);
double percentvalue = candlesize*mari_closingPercentage*0.01;
if(CandleBody>=percentvalue)
{return true; }
}
else
if(StrategyMode==NextCandleClose)
{
stgmodes="NextCandleClose";
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double candlesize=h2-l2,CandleBody=MathAbs(c2-o2);
double percentvalue = candlesize*mari_closingPercentage*0.01;
if(CandleBody>=percentvalue)
{return true; }
}
return false;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void engulfing()
{
double o1=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
double h1=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
double l1=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double cmp=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,0),2);
double size;
size=h1-l1;
if(StrategyMode==OnHighBreak)
{
stgmodes="OnHighBreak";
}
else
if(StrategyMode==OnCandleFormation)
{
stgmodes="OnCandleFormation";
}
else
if(StrategyMode==NextCandleClose)
{
stgmodes="NextCandleClose";
}
if(size>Engulfing_greater_than && size<Engulfing_less_than)
{
if(stgmodes=="NextCandleClose")
{
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double o3=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,3),2);
double h3=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,3),2);
double l3=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,3),2);
double c3=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,3),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double size;
size=h2-l2;
if(c2>o2&& c3<o3 && c2>h3&&c1>h2 && l2<l3 &&EngulfingBullish==true&&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage_engulf()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Engulfing candle bullish NextCandleClose @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=h2+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l1,value,"NextCandleClose");
}
}
if(c1>o1&& c2<o2 && c1>h2 && l1<l2 &&EngulfingBullish==true&& cmp>h1 &&stgmodes=="OnHighBreak"&&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage_engulf()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Engulfing candle bullish OnHighBreak @: "+ Symbol());
value=h1-l1;
value=value*TargetMultiplier;
value=h1+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l1,value,"OnHighBreak");
}
if(c1>o1&& c2<o2 && c1>h2 && l1<l2 &&EngulfingBullish==true&& stgmodes=="OnCandleFormation"&&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage_engulf()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Engulfing candle bullish OnCandleFormation @: "+ Symbol());
value=h1-l1;
value=value*TargetMultiplier;
value=h1+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l1,value,"OnCandleFormation");
}
if(stgmodes=="NextCandleClose")
{
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double o3=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,3),2);
double h3=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,3),2);
double l3=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,3),2);
double c3=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,3),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double size;
size=h2-l2;
if(c2<o2&&c3>o3 &&c2<l3&&h2>h3&& c1<l1 &&EngulfingBearish==true &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage_engulf()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Engulfing candle bearish NextCandleClose @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=l2-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h2,value,"NextCandleClose");
}
}
if(c1<o1&&c2>o2 &&c1<l2&&h1>h2&&cmp<l1&& stgmodes=="OnHighBreak"&&EngulfingBearish==true&&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage_engulf()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Engulfing candle bearish OnHighBreak @: "+ Symbol());
value=h1-l1;
value=value*TargetMultiplier;
value=l1-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h1,value,"OnHighBreak");
}
if(c1<o1&&c2>o2 &&c1<l2&&h1>h2&& stgmodes=="OnCandleFormation"&&EngulfingBearish==true&&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage_engulf()==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Engulfing candle bearish OnCandleFormation @: "+ Symbol());
value=h1-l1;
value=value*TargetMultiplier;
value=l1-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h1,value,"AlgosysGridEA- StopReverse");
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Maribozu()
{
double o=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,1),2);
double h=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,1),2);
double l=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double c=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double ct=iTime(Symbol(),PERIOD_CURRENT,0);
double cmp=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,0),2);
double size;
double ma1,ma2;
double MA_BUFF1[], MA_BUFF2[];
ma1= iMA(Symbol(),PERIOD_CURRENT,MaPeriod1,0,MODE_EMA,PRICE_CLOSE);
ma2= iMA(Symbol(),PERIOD_CURRENT,MaPeriod2,0,MODE_EMA,PRICE_CLOSE);
ArraySetAsSeries(MA_BUFF1,true);
CopyBuffer(ma1,0,0,3,MA_BUFF1);
ArraySetAsSeries(MA_BUFF2,true);
CopyBuffer(ma2,0,0,3,MA_BUFF2);
size=h-l;
if(StrategyMode==OnHighBreak)
{
stgmodes="OnHighBreak";
Comment("\n o: "+o+
"\n\n h: "+h+
"\n\n l: "+l+
"\n\n c: "+c+
"\n\n ct: "+ct+
"\n\n cmp:"+cmp+
"\n\n ask:"+ask+
"\n\n size:"+size+
"\n\n maBuy:"+mabuy+
"\n\n masell:"+masell
);
}
else
if(StrategyMode==OnCandleFormation)
{
stgmodes="OnCandleFormation";
Comment("\n o: "+o+
"\n\n h: "+h+
"\n\n l: "+l+
"\n\n c: "+c+
"\n\n ct: "+ct+
"\n\n cmp:"+cmp+
"\n\n ask:"+ask+
"\n\n size:"+size+
"\n\n maBuy:"+mabuy+
"\n\n masell:"+masell
);
}
else
if(StrategyMode==NextCandleClose)
{
stgmodes="NextCandleClose";
}
if(size>mari_greater_than && size<mari_less_than)
{
if(mariBullish==true)
{
if(CandleMode==NoWick)
{
candlemode="NoWick";
}
else
if(CandleMode==BothWick)
{
candlemode="BothWick";
}
else
if(CandleMode==Openwick)
{
candlemode="Openwick";
}
else
if(CandleMode==Closewick)
{
candlemode="Closewick";
}
}
if(mariMaCondition==false)
{
mabuy=true;
masell=true;
}
if(mariMaCondition==true)
{
if(TriggerMode==HighLow)
{
if(mariBullish==true)
{
if(stgmodes=="OnHighBreak" || stgmodes=="OnCandleFormation")
{
if(h<=MA_BUFF2[1]&&l<MA_BUFF2[1])
{
mabuy=false;
masell=false;
}
if(h>MA_BUFF2[1]&&l>=MA_BUFF2[1])
{
mabuy=false;
masell=false;
}
if(l<MA_BUFF1[1]&&l<MA_BUFF2[1]&&h>MA_BUFF1[1]&&h>MA_BUFF2[1])
{
mabuy=true;
masell=true;
}
}
if(stgmodes=="NextCandleClose")
{
if(h2<=MA_BUFF2[2]&&l2<MA_BUFF2[2])
{
mabuy=false;
masell=false;
}
if(h2>MA_BUFF2[2]&&l2>=MA_BUFF2[2])
{
mabuy=false;
masell=false;
}
if(l2<MA_BUFF1[2]&&l2<MA_BUFF2[2]&&h2>MA_BUFF1[2]&&h2>MA_BUFF2[2])
{
mabuy=true;
masell=true;
}
}
}
if(mariBearish==true)
{
if(stgmodes=="OnHighBreak" || stgmodes=="OnCandleFormation")
{
if(h<=MA_BUFF2[1]&&l<MA_BUFF2[1])
{
mabuy=false;
masell=false;
}
if(h>MA_BUFF2[1]&&l>=MA_BUFF2[1])
{
mabuy=false;
masell=false;
}
if(h>MA_BUFF1[1]&&h>MA_BUFF2[1]&&l<MA_BUFF1[1]&&l<MA_BUFF2[1])
{
mabuy=true;
masell=true;
}
}
if(stgmodes=="NextCandleClose")
{
if(h2<=MA_BUFF2[2]&&l2<MA_BUFF2[2])
{
mabuy=false;
masell=false;
}
if(h2>MA_BUFF2[2]&&l2>=MA_BUFF2[2])
{
mabuy=false;
masell=false;
}
if(h2>MA_BUFF1[2]&&h2>MA_BUFF2[2]&&l2<MA_BUFF1[2]&&l2<MA_BUFF2[2])
{
mabuy=true;
masell=true;
}
}
}
}
}
//////////////candle coding
if(candlemode=="BothWick")
{
if(o<c&&mariBullish==true)
{
if(stgmodes=="OnHighBreak")
{
double cwick=h-c;
double owick=o-l;
if(cwick>0 && owick>0 &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&& cmp>=h&&closing_Percentage()==true&&mabuy==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("BothWick Elephant candle bullish OnHighBreak @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=h+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
double cwick=h-c;
double owick=o-l;
if(cwick>0 && owick>0 &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage()==true&&mabuy==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("BothWick Elephant candle bullish OnCandleFormation @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=h+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="NextCandleClose")
{
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double low1=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double cwick=h2-c2;
double owick=o2-l2;
if(cwick>0 && owick>0 &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&c1>h2&&closing_Percentage()==true&&mabuy==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("BothWick Elephant candle bullish NextCandleClose @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=h2+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l2,value,"AlgosysGridEA- StopReverse");
}
}
}
if(o>c&&mariBearish==true)
{
if(stgmodes=="OnHighBreak")
{
double cwick=h-o;
double owick=c-l;
if(cwick>0 && owick>0 &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&cmp<l&&closing_Percentage()==true&&masell==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("BothWick Elephant candle bearish OnHighBreak @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=l-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
double cwick=h-o;
double owick=c-l;
if(cwick>0 && owick>0 &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage()==true&&masell==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("BothWick Elephant candle bearish OnCandleFormation @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=l-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h,value,"AlgosysGridEA- StopReverse");
}
}
}
if(stgmodes=="NextCandleClose")
{
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double cwick=h2-o2;
double owick=c2-l2;
if(cwick>0 && owick>0 &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&c1<l2&&closing_Percentage()==true&&masell==true)
{
mentry=iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("BothWick Elephant candle bearish NextCandleClose @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=l2-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h2,value,"AlgosysGridEA- StopReverse");
}
}
}
}
if(candlemode=="Closewick")
{
if(o<c&&mariBullish==true)
{
if(stgmodes=="OnHighBreak")
{
double cwick=h-c;
if(cwick>0 && o==l &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&& cmp>h&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Closewick Elephant candle bullish OnHighBreak @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=h+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
double cwick=h-c;
if(cwick>0 && o==l &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Closewick Elephant candle bullish OnCandleFormation @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=h+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="NextCandleClose")
{
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double low1=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double cwick=h2-c2;
if(cwick>0 && o2==l2 &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&c1>h2&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Closewick Elephant candle bullish NextCandleClose @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=h2+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l2,value,"AlgosysGridEA- StopReverse");
}
}
}
if(o>c&&mariBearish==true)
{
if(stgmodes=="OnHighBreak")
{
double cwick=c-l;
if(cwick>0 && o==h &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&cmp<l&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Closewick Elephant candle bearish OnHighBreak @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=l-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
double cwick=c-l;
if(cwick>0 && o==h &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Closewick Elephant candle bearish OnCandleFormation @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=l-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="NextCandleClose")
{
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double cwick=c2-l2;
if(cwick>0 && o2==h2&&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&c1>h2&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Closewick Elephant candle bearish NextCandleClose @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=l2-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h2,value,"AlgosysGridEA- StopReverse");
}
}
}
}
if(candlemode=="Openwick")
{
if(o<c&&mariBullish==true)
{
if(stgmodes=="OnHighBreak")
{
double owick=o-l;
if(owick>0 && c==h &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&cmp>h&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Openwick Elephant candle bullish OnHighBreak @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=h+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
double owick=o-l;
if(owick>0 && c==h &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Openwick Elephant candle bullish OnCandleFormation @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=h+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="NextCandleClose")
{
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double low1=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
double owick=o2-l2;
if(owick>0 && c2==h2 &&iTime(Symbol(),PERIOD_CURRENT,0) != mentry&& c1>h2&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Openwick Elephant candle bullish NextCandleClose @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=h2+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l2,value,"AlgosysGridEA- StopReverse");
}
}
}
if(o>c&&mariBearish==true)
{
if(stgmodes=="OnHighBreak")
{
double owick=h-o;
if(owick>0 &&c==l && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&& cmp>h&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Openwick Elephant candle bearish OnHighBreak @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=l-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
double owick=h-o;
if(owick>0 &&c==l && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Openwick Elephant candle bearish OnCandleFormation @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=l-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="NextCandleClose")
{
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double owick=h2-o2;
if(owick>0 &&c2==l2 && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&& c1<l2&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("Openwick Elephant candle bearish OnCandleFormation @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=l2-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h2,value,"AlgosysGridEA- StopReverse");
}
}
}
}
if(candlemode=="NoWick")
{
if(o<c&&mariBullish==true)
{
if(stgmodes=="OnHighBreak")
{
if(o==l && c==h && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&cmp>h&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("No wick Elephant candle bullish OnHighBreak @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=h+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
if(o==l && c==h && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("No wick Elephant candle bullish OnCandleFormation @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=h+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="NextCandleClose")
{
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
double low1=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,1),2);
if(o2==l2 && c2==h2 && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&c1>h2&&closing_Percentage()==true&&mabuy==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("No wick Elephant candle bullish NextCandleClose @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=h2+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),l2,value,"AlgosysGridEA- StopReverse");
}
}
}
if(o>c&&mariBearish==true)
{
if(stgmodes=="OnHighBreak")
{
if(o==h && c==l && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&cmp<l&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("No wick Elephant candle bearish OnHighBreak @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=l-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
if(o==h && c==l && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("No wick Elephant candle bearish OnCandleFormation @: "+ Symbol());
value=h-l;
value=value*TargetMultiplier;
value=l-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="NextCandleClose")
{
double h2=NormalizeDouble(iHigh(Symbol(),PERIOD_CURRENT,2),2);
double c2=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,2),2);
double l2=NormalizeDouble(iLow(Symbol(),PERIOD_CURRENT,2),2);
double o2=NormalizeDouble(iOpen(Symbol(),PERIOD_CURRENT,2),2);
double c1=NormalizeDouble(iClose(Symbol(),PERIOD_CURRENT,1),2);
if(o2==h2 && c2==l2 && iTime(Symbol(),PERIOD_CURRENT,0) != mentry&&c1<l2&&closing_Percentage()==true&&masell==true)
{
mentry= iTime(Symbol(),PERIOD_CURRENT,0) ;
Alert("No wick Elephant candle bearish OnCandleFormation @: "+ Symbol());
value=h2-l2;
value=value*TargetMultiplier;
value=l2-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),h2,value,"AlgosysGridEA- StopReverse");
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void highcal()
{
highvalue = iHigh(Symbol(),PERIOD_CURRENT,1);
for(int i = 1; i < trendlookback; ++i)
{
if(iHigh(Symbol(),PERIOD_CURRENT,i) > highvalue)
highvalue = iHigh(Symbol(),PERIOD_CURRENT,i);
ObjectDelete(0,"highvalue");
ObjectCreate(0, "highvalue", OBJ_HLINE, 0, 0, highvalue);
ObjectSetInteger(0, "highvalue", OBJPROP_COLOR, Blue);
ObjectSetInteger(0, "highvalue", OBJPROP_STYLE, STYLE_SOLID);
ObjectSetInteger(0, "highvalue", OBJPROP_WIDTH, 2);
ObjectSetInteger(0, "highvalue", OBJPROP_BACK, false);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//---
//+------------------------------------------------------------------+
//| |
//+---------------------------------------------------------------
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void entry_hammer()
{
double curentClose=iClose(Symbol(),PERIOD_CURRENT,0);
double previousClose=iClose(Symbol(),PERIOD_CURRENT,1);
if(StrategyMode==OnHighBreak)
{
stgmodes="OnHighBreak";
}
else
if(StrategyMode==OnCandleFormation)
{
stgmodes="OnCandleFormation";
}
else
if(StrategyMode==NextCandleClose)
{
stgmodes="NextCandleClose";
}
if(stgmodes=="NextCandleClose")
{
open1=iOpen(Symbol(),PERIOD_CURRENT,2);
high1=iHigh(Symbol(),PERIOD_CURRENT,2);
low1=iLow(Symbol(),PERIOD_CURRENT,2);
close1=iClose(Symbol(),PERIOD_CURRENT,2);
body = MathAbs(close1 - open1);
range = high1 - low1;
lowerWick = open1 > close1 ? close1 - low1 : open1 - low1;
upperWick = open1 > close1 ? high1 - open1 : high1 - close1;
if((close1 > open1 && lowerWick >= body * Hammer_Wick_Multiplier && upperWick <= range * Hammer_Body_Percentage ||
close1 < open1 && lowerWick >= body * Hammer_Wick_Multiplier && upperWick <= range * Hammer_Body_Percentage||
close1 == open1 && close1 != high1 && range >= (high1- close1) * Hammer_Wick_Multiplier &&
upperWick <= range * Hammer_Body_Percentage)&&
previousClose>high1&&entry!=iTime(Symbol(),PERIOD_CURRENT,0)&&
Hammer==true
)
{
entry=iTime(Symbol(),PERIOD_CURRENT,0);
buydraw();
value=curentClose-low1;
value=value*TargetMultiplier;
value=curentClose+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),low1,value,"AlgosysGridEA- StopReverse");
}
//short
if((close1 < open1 && upperWick >= body * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage||
close1 > open1 && upperWick >= body * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage||
close1 == open1 && close1 != low1 && range >= (close1 - low1) * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage)&&previousClose<low1&&entry!=iTime(Symbol(),PERIOD_CURRENT,0)&&invertedHammer==true)
{
entry=iTime(Symbol(),PERIOD_CURRENT,0);
selldraw();
value=high1-curentClose;
value=value*TargetMultiplier;
value=curentClose-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),high1,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnHighBreak")
{
if((close1 > open1 && lowerWick >= body * Hammer_Wick_Multiplier && upperWick <= range * Hammer_Body_Percentage ||
close1 < open1 && lowerWick >= body * Hammer_Wick_Multiplier && upperWick <= range * Hammer_Body_Percentage||
close1 == open1 && close1 != high1 && range >= (high1- close1) * Hammer_Wick_Multiplier && upperWick <= range * Hammer_Body_Percentage)&&curentClose>high1&&entry!=iTime(Symbol(),PERIOD_CURRENT,0)&&
Hammer==true)
{
entry=iTime(Symbol(),PERIOD_CURRENT,0);
buydraw();
value=curentClose-low1;
value=value*TargetMultiplier;
value=curentClose+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),low1,value,"AlgosysGridEA- StopReverse");
}
if((close1 < open1 && upperWick >= body * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage||
close1 > open1 && upperWick >= body * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage||
close1 == open1 && close1 != low1 && range >= (close1 - low1) * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage)&&curentClose<low1&&entry!=iTime(Symbol(),PERIOD_CURRENT,0)&&invertedHammer==true)
{
entry=iTime(Symbol(),PERIOD_CURRENT,0);
selldraw();
value=high1-curentClose;
value=value*TargetMultiplier;
value=curentClose-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),high1,value,"AlgosysGridEA- StopReverse");
}
}
if(stgmodes=="OnCandleFormation")
{
///buy
if((close1 > open1 && lowerWick >= body * Hammer_Wick_Multiplier && upperWick <= range * Hammer_Body_Percentage ||
close1 < open1 && lowerWick >= body * Hammer_Wick_Multiplier && upperWick <= range * Hammer_Body_Percentage||
close1 == open1 && close1 != high1 && range >= (high1- close1) * Hammer_Wick_Multiplier && upperWick <= range * Hammer_Body_Percentage)&&entry!=iTime(Symbol(),PERIOD_CURRENT,0)&&
Hammer==true)
{
entry=iTime(Symbol(),PERIOD_CURRENT,0);
buydraw();
value=curentClose-low1;
value=value*TargetMultiplier;
value=curentClose+value;
Alert("BUY @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Buy(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits),low1,value,"AlgosysGridEA- StopReverse");
}
//short
if((close1 < open1 && upperWick >= body * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage||
close1 > open1 && upperWick >= body * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage||
close1 == open1 && close1 != low1 && range >= (close1 - low1) * Hammer_Wick_Multiplier && lowerWick <= range * Hammer_Body_Percentage)&&entry!=iTime(Symbol(),PERIOD_CURRENT,0)&&invertedHammer==true)
{
entry=iTime(Symbol(),PERIOD_CURRENT,0);
selldraw();
value=high1-curentClose;
value=value*TargetMultiplier;
value=curentClose-value;
Alert("SELL @ "+Symbol());
close_sell_position();
close_buy_position();
trade.Sell(lotsize,Symbol(),NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits),high1,value,"AlgosysGridEA- StopReverse");
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CreateHorizontalLine(string lineName, double price, color lineColor, ENUM_LINE_STYLE style, int width)
{
// Create the horizontal line object
if(ObjectCreate(0, lineName, OBJ_HLINE, 0, 0, price))
{
ObjectSetInteger(0, lineName, OBJPROP_COLOR, lineColor);
ObjectSetInteger(0, lineName, OBJPROP_STYLE, style);
ObjectSetInteger(0, lineName, OBJPROP_WIDTH, width);
ObjectSetInteger(0, lineName, OBJPROP_BACK, false);
Print("Horizontal line created successfully.");
}
else
{
Print("Error creating horizontal line: ", GetLastError());
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
open1=iOpen(Symbol(),PERIOD_CURRENT,1);
high1=iHigh(Symbol(),PERIOD_CURRENT,1);
low1=iLow(Symbol(),PERIOD_CURRENT,1);
close1=iClose(Symbol(),PERIOD_CURRENT,1);
currentClose=iClose(Symbol(),PERIOD_CURRENT,0);
body = MathAbs(close1 - open1);
range = high1 - low1;
lowerWick = open1 > close1 ? close1 - low1 : open1 - low1;
upperWick = open1 > close1 ? high1 - open1 : high1 - close1;
// Comment("body: "+body+"\n\nrange: "+range+"\n\nlowerWick: "+lowerWick+"\n\nupperWick: "+upperWick);
//---
if(check_SELL_open_position()==0&&check_buy_open_position()==0)
{
entry_hammer();
Maribozu();
engulfing();
Soldier();
Crow();
}
Comment("check_SELL_open_position: "+check_SELL_open_position()+"\n\check_buy_open_position: "+check_buy_open_position()+"\n\closing_Percentage_soldier(): "+closing_Percentage_soldier());
//---
}
int check_buy_open_position()
{
int numberofbuyposition=0;
for(int i = PositionsTotal()-1;i>=0;i--)
{
string currencypair=PositionGetSymbol(i);
int position_direction=PositionGetInteger(POSITION_TYPE);
if(Symbol()==currencypair && position_direction == POSITION_TYPE_BUY)
{
numberofbuyposition=numberofbuyposition+1;
}
}
return numberofbuyposition;
}
int check_SELL_open_position()
{
int numberofSELLposition=0;
for(int i = PositionsTotal()-1;i>=0;i--)
{
string currencypair=PositionGetSymbol(i);
int position_direction=PositionGetInteger(POSITION_TYPE);
if(Symbol()==currencypair && position_direction == POSITION_TYPE_SELL)
{
numberofSELLposition=numberofSELLposition+1;
}
}
return numberofSELLposition;
}
//+------------------------------------------------------------------+
void buydraw()
{
ObjectCreate(Symbol(),"BUYSIGNAL"+iTime(Symbol(),PERIOD_CURRENT,0),OBJ_ARROW_BUY,0,iTime(Symbol(),PERIOD_CURRENT,1),iLow(Symbol(),PERIOD_CURRENT,1));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void selldraw()
{
ObjectCreate(Symbol(),"SELLSIGNAL"+iTime(Symbol(),PERIOD_CURRENT,0),OBJ_ARROW_SELL,0,iTime(Symbol(),PERIOD_CURRENT,1),iHigh(Symbol(),PERIOD_CURRENT,1));
}
//+------------------------------------------------------------------+
void close_sell_position()
{
for(int i=PositionsTotal()-1; i>=0; i--)
{
string currencypair=PositionGetSymbol(i);
int position_direction=PositionGetInteger(POSITION_TYPE);
int posmagic=PositionGetInteger(POSITION_MAGIC);
Alert("posmagic: "+posmagic);
Alert("MagicNumber: "+MagicNumber);
if(currencypair==Symbol() && position_direction == POSITION_TYPE_SELL&& int(posmagic) == int(MagicNumber))
{
Alert("MagicNumber: reaching");
ulong ticket=PositionGetTicket(i);
trade.PositionClose(ticket);
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void close_buy_position()
{
for(int i=PositionsTotal()-1; i>=0; i--)
{
string currencypair=PositionGetSymbol(i);
int position_direction=PositionGetInteger(POSITION_TYPE);
int posmagic=PositionGetInteger(POSITION_MAGIC);
Alert("posmagic: "+posmagic);
Alert("MagicNumber: "+MagicNumber);
if(currencypair==Symbol() && position_direction == POSITION_TYPE_BUY&& int(posmagic) == int(MagicNumber)
)
{
Alert("MagicNumber: reaching");
ulong ticket=PositionGetTicket(i);
trade.PositionClose(ticket);
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
Comments
Post a Comment