gryps2/EA-code/TNK/MSZ-006_Asasukya_Logic.mq4

1507 lines
100 KiB
MQL4
Raw Permalink Normal View History

2025-05-30 14:58:21 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| MSZ-006.mq4 |
//| Copyright 2021, TNK.Co.,Ltd.|
//| https://note.com/tnk_system |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, TNK"
#property link "https://note.com/tnk_system"
#property version "3.1" //<EFBFBD>)R_j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Y<EFBFBD>f
#property strict
#include <stdlib.mqh>
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0eQ<EFBFBD>R(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//<EFBFBD>W,g-<EFBFBD><EFBFBD>[
string Basic_setting = "<00>W,g-<2D><>["; // <EFBFBD>%<EFBFBD>%<EFBFBD>% <EFBFBD>W,g-<EFBFBD><EFBFBD>[ <EFBFBD>%<EFBFBD>%<EFBFBD>%
input double Lots = 0.2; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>XS)RK<EFBFBD>(uBf <EFBFBD>
enum MM_Select{
Fixed, // 0<EFBFBD>XS)R/<EFBFBD>V<EFBFBD>[
FreeMargin, // 1<EFBFBD><EFBFBD>)R/YOpR<<EFBFBD><EFBFBD>
Balance, // 2<EFBFBD><EFBFBD>)R/<EFBFBD>
};
input MM_Select MM_ON = Fixed; // <EFBFBD>)R_j<EFBFBD><EFBFBD><EFBFBD>0:XS)R/1:YOpR<<EFBFBD><EFBFBD>/2:<EFBFBD> <EFBFBD>
input double MM_Risk = 1.0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>YOpR<<EFBFBD><EFBFBD>/<EFBFBD>kؚn0UO%K0 <EFBFBD>
input double MaxSpread_pips = 5.5; // 1<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Pips <EFBFBD>
input int Slippage = 10; // 1<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Point <EFBFBD>
input int TakeProfit_pips = 20; // )R<EFBFBD>xc$P<EFBFBD>Pips <EFBFBD>
input int StopLoss_pips = 50; // dR<EFBFBD>c$P<EFBFBD>Pips <EFBFBD>
input bool WR_MODE = true; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>'`7_S<EFBFBD>0<EFBFBD>0<EFBFBD>0
enum Week_Select{
Nomal, // 0<EFBFBD><EFBFBD>8^<EFBFBD>g^<EFBFBD>(g <EFBFBD>
Wednesday, // 1<EFBFBD>4l<EFBFBD>f<EFBFBD>e!q
Thursday, // 2<EFBFBD>(g<EFBFBD>f<EFBFBD>e!q
Wednesday_Thursday, // 3<EFBFBD>4l,(g<EFBFBD>f<EFBFBD>e!q
};
input Week_Select WS_MODE = Nomal; // 23Bf<EFBFBD>S<EFBFBD>f<EFBFBD>e6R<EFBFBD>_<EFBFBD>0:g^<EFBFBD>(g/1:4l!q/2:(g!q/3:4l(g!q <EFBFBD>
input bool NG0_MODE = false; // 0Bf<EFBFBD>S<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0!qW0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//input bool WS_MODE = true; // 0Bf<EFBFBD>S<EFBFBD>0(g<EFBFBD>f<EFBFBD>e<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0!qW0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input int MagicNumber = 1980617; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>NEAh0͑<EFBFBD> N<EFBFBD>S <EFBFBD>
input int GMT = 2; // GMT<EFBFBD><EFBFBD>QBf<EFBFBD><EFBFBD> <EFBFBD>
input int Summertime = 1; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>1:s|/2:<EFBFBD><EFBFBD>/0:!qW0 <EFBFBD>
input string _Comment = "MSZ-006"; // <EFBFBD><EFBFBD>w(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//<EFBFBD>Q<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD>[
int Maxposition = 1; // g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int CandleMargin_Pips = 1; // 1,gMR<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>B}$Ph0<EFBFBD>s(W<EFBFBD>O<hn0<EFBFBD>]pips
int CandleCloseHour = 9; // 7_6RzlnY0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O gBf<EFBFBD><EFBFBD>
bool Buy_Entry = true; // <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool Sell_Entry = true; // <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool WeekendClose = true; // 1<EFBFBD>+g<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool YearendClose = true; // 12/25~1/3<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00g0<z<EFBFBD>P<EFBFBD> 0true 0
bool CandleStartStartingEntry = false; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool CandleStartStartingTrailing = true; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool CandleStartStartingExit = false; // zln
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0AhT<EFBFBD>0[0<EFBFBD>0Bf<EFBFBD><EFBFBD>6R<EFBFBD>_(u
int xBarsEntry = 0, xBarsExit = 0, xBarsTrailing = 0;
int xBars=0, xxBars=0;
double xpoint;
int xTime, xxTime, yTime;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype
int WilliamsPR_Gyakubari_period = 42; // EnEx_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0%Rn0<EFBFBD><EFBFBD>{g<EFBFBD><EFBFBD>
int WilliamsPR_Line1 = -95; // <EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>W<EFBFBD>nh0j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>D0 <EFBFBD>
int WilliamsPR_Line2 = -5; // <EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>W<EFBFBD>nh0j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>X<EFBFBD>0 <EFBFBD>
int WilliamsPR_BuyExit_Line = -10; // <EFBFBD>5_<EFBFBD>0zlnn0<EFBFBD>W<EFBFBD>nh0j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>D0 <EFBFBD>
int WilliamsPR_SellExit_Line = -90; // <EFBFBD>5_<EFBFBD>0zlnn0<EFBFBD>W<EFBFBD>nh0j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>X<EFBFBD>0 <EFBFBD>
int RSI_period = 9; // EnEx_RSIn0<EFBFBD><EFBFBD>{g<EFBFBD><EFBFBD>
int RSI_Gyakubari_Line1 = 30; // <EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>W<EFBFBD>nh0j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>D0 <EFBFBD> / 25~35 / 1
int RSI_Gyakubari_Line2 = 70; // <EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>W<EFBFBD>nh0j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>X<EFBFBD>0 <EFBFBD> / 65~75 / 1
int RSI_BuyExit_Line = 70; // RSIzln<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>D0 <EFBFBD>
int RSI_SellExit_Line = 30; // RSIzln<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>X<EFBFBD>0 <EFBFBD>
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double BBMargin = 8.0; // F7_BBE^pips
int CandleCheckCount = 48; // F8_HL<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>UO,gMR~0g0<EFBFBD>
int HL_Margin_pips = 100; // F8_ؚ$P<EFBFBD>[$Pn0<EFBFBD>]pips
int RSI_JUNBARI_TF = 2;
int RSI_Junbari_Filter_Line = 30; // F10_RSI<EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>W<EFBFBD>nh0j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int MACD_TF = 5;
int ADX_TF = 7; // ADX<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int ADX_value = 50; // ADX<EFBFBD>0<EFBFBD>0<EFBFBD>0
//zln<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype
//bL<EFBFBD>zln
int Rikaku_pips1 = 4; // Ex_bL<EFBFBD>)R<EFBFBD>x<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Pips
//int Songiri_pips = 1000; // bL<EFBFBD> dR<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Pips / 50~300 / 10
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//bool Modify = false;
//int TrailingTakeProfitStart_pips = -40; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y d<EFBFBD>vPips / -80~-10 / 10
//int TrailingTakeProfit_pips = -10; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0<EFBFBD>wgMAK0<EFBFBD>0n0$PE^Pips / -10~20 / 5
//1<EFBFBD>+gzln<EFBFBD><EFBFBD>e,gBf<EFBFBD><EFBFBD> <EFBFBD>
bool GMT_Kadou_NG = false; // 1<EFBFBD>+g<z<EFBFBD>P
bool PositionClose = false; // 1<EFBFBD>+gzln
int EntryNG_StartTime1 = 1; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-NbkBf<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y <EFBFBD> / 0~4(<Time_W) / 1
int EntryNG_EndTime1 = 7; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-NbkBf<EFBFBD><EFBFBD><EFBFBD>B}<EFBFBD>N <EFBFBD>
int EntryNG_DayOfWeek1 = 6; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-Nbk<EFBFBD>f<EFBFBD>e
int PositionClose_Time_W = 5; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zlnBf<EFBFBD><EFBFBD> / 0~5 / 1
int PositionClose_DayOfWeek1 = 6; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln<EFBFBD>f<EFBFBD>e
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>kn0Bf<EFBFBD><EFBFBD>rR<EFBFBD>0/c<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD> <EFBFBD>
bool Logic1_Time = true; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01Bf<EFBFBD><EFBFBD>/^
int EntryOK_StartTime1 = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD><EFBFBD>YBf<EFBFBD><EFBFBD>1
int EntryOK_EndTime1 = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01B}<EFBFBD>NBf<EFBFBD><EFBFBD>1
int EntryOK_StartTime2 = 23; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD><EFBFBD>YBf<EFBFBD><EFBFBD>2
int EntryOK_EndTime2 = 23; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01B}<EFBFBD>NBf<EFBFBD><EFBFBD>2
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u<EFBFBD>0<EFBFBD>0<EFBFBD>0R<EFBFBD>f
bool BacktestMode = false; // 0Bf<EFBFBD>Szln!qW0
bool ROTime = false; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD>
//<EFBFBD>,n(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool Measurement = true; // <EFBFBD>,n<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int err, fp, j;
double Yakujyou_Price;
double Open_Spread, Close_Spread;
double Open_Slippage, Close_Slippage;
uint OpenLatency, CloseLatency;
string filename;
double profitpips;
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| tester function |
//+------------------------------------------------------------------+
/*double OnTester()
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(NormalizeDouble(TesterStatistics(STAT_PROFIT) / TesterStatistics(STAT_EQUITY_DD), 2));
// <EFBFBD>R<EFBFBD>s
// return(NormalizeDouble(100*TesterStatistics(STAT_PROFIT_TRADES) / TesterStatistics(STAT_TRADES), 2));
}*/
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if (StringSubstr(Symbol(), 0, 6) == "AUDCAD")
{
ADX_value = 70; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "CHFJPY")
{
ADX_value = 35; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "EURAUD")
{
ADX_value = 40; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "EURCAD")
{
ADX_value = 60; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "EURJPY")
{
ADX_value = 45; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "GBPAUD")
{
ADX_value = 70; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "GBPCAD")
{
ADX_value = 65; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "GBPCHF")
{
ADX_value = 40; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "GBPJPY")
{
ADX_value = 70; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "GBPUSD")
{
ADX_value = 70; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "USDCHF")
{
ADX_value = 40; // ADX$P
}
if (StringSubstr(Symbol(), 0, 6) == "USDJPY")
{
ADX_value = 65; // ADX$P
}
// \pe<EFBFBD>p<EFBFBD>N Nn0Ahpek0<EFBFBD>_X0f0Pipsn0$P<EFBFBD>0<EFBFBD><EFBFBD>teY0<EFBFBD>0
xpoint = Point();
if (Digits() == 3 || Digits() == 5)
{
xpoint = xpoint * 10;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
string LotsComment;
if (MM_ON == Fixed) LotsComment = DoubleToStr(Lots,2);
else LotsComment = //DoubleToStr(CalculateLots(MM_Risk, StopLoss_pips),1)
" (" + DoubleToStr(MM_Risk,1) +"%)";
Comment(DoubleToStr(MagicNumber,0) +
" Lots<1A>" + LotsComment +
" MM<1A>" + (string)MM_ON +
"\n" +
"Sp<1A>" + DoubleToStr(MaxSpread_pips, 1) +
" TP/SL<1A>" + DoubleToStr(TakeProfit_pips,0) + "/" + DoubleToStr(StopLoss_pips,0) +
"\n" +
"WR<1A>" + (string)WR_MODE +
" WS<1A>" + (string)WS_MODE +
" NG0<1A>" + (string)NG0_MODE
);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if (BacktestMode == true)
{
EntryOK_StartTime1 = 23;
EntryOK_EndTime1 = 23;
}
// O(uW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>h<EFBFBD>:yk0Y0<EFBFBD>0
HideTestIndicators(true);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RRgS<EFBFBD>Qt
if (Measurement == true)
{
filename = AccountCompany() + "_SlippageLog.csv";// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 T<EFBFBD>0zl<EFBFBD>0<EFBFBD>0
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
if(fp==INVALID_HANDLE)
{
err = GetLastError();
printf("Error occured: [%d] %s", err, ErrorDescription(err));
return(0.0);
}
FileWrite(fp, "OpenTime", "CloseTime", "OpenPrice", "ClosePrice", "OrderType", "ProfitPips",
"OpenSpread", "OpenSlippage", "OpenLatency",
"CloseSpread", "CloseSlippage", "CloseLatency", "CurrencyPair", "ExpertName");
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>X0<EFBFBD>0
FileClose(fp);
}
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>te<EFBFBD>0Bf<EFBFBD><EFBFBD>6R<EFBFBD>_
GetSummertimeShift();
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
PositionClose();
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// Trailing();
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
PositionOpen();
// TP, SLn0<EFBFBD>Q-<EFBFBD><EFBFBD>[
SetTPSL();
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
string LotsComment;
if (MM_ON == Fixed) LotsComment = DoubleToStr(Lots,2);
else LotsComment = DoubleToStr(CalculateLots(MM_Risk, StopLoss_pips),2)
+ " (" + DoubleToStr(MM_Risk,1) +"%)";
Comment(DoubleToStr(MagicNumber,0) +
" Lots<1A>" + LotsComment +
" MM<1A>" + (string)MM_ON +
"\n" +
"Sp<1A>" + DoubleToStr(MaxSpread_pips, 1) +
" TP/SL<1A>" + DoubleToStr(TakeProfit_pips,0) + "/" + DoubleToStr(StopLoss_pips,0) +
"\n" +
"WR<1A>" + (string)WR_MODE +
" WS<1A>" + (string)WS_MODE +
" NG0<1A>" + (string)NG0_MODE
);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| ܈ck<EFBFBD><EFBFBD>pe |
//+------------------------------------------------------------------+
void GetSummertimeShift()
{
int MON, SUN_day, xGMT;
//int xTime, xxTime, yTime;
int summertime_shift = 0;
datetime gmtadjusted;
//0GMT+9<EFBFBD>0<EFBFBD>W<EFBFBD>nk00i0<EFBFBD>0`0Q0Z0<EFBFBD>0f0D0<EFBFBD>0K0<EFBFBD>0<EFBFBD>{<EFBFBD>QY0<EFBFBD>0------------------------
MON = TimeMonth(TimeCurrent()); // UOg<EFBFBD>
SUN_day = TimeDay(TimeCurrent()) - TimeDayOfWeek(TimeCurrent()); // ]0n01<EFBFBD>n0<EFBFBD>e<EFBFBD>f<EFBFBD>eo0UO<EFBFBD>e<EFBFBD>
if (Summertime == 2) // <EFBFBD><EFBFBD><EFBFBD>V_n04XT
{
if ((MON == 3 && SUN_day >= 25) || (MON >= 4 && MON <= 9) || (MON == 10 && SUN_day <= 24))
//3gg00]0n01<EFBFBD>n0<EFBFBD>e<EFBFBD>f<EFBFBD>eL025<EFBFBD>e<EFBFBD>N
N/4g^<EFBFBD>9g/10gg00]0n01<EFBFBD>n0<EFBFBD>e<EFBFBD>f<EFBFBD>eL023<EFBFBD>e<EFBFBD>N N
{
summertime_shift = 1;
}
else
{
summertime_shift = 0;
}
}
else if (Summertime == 1) // s|<EFBFBD>V_n04XT
{
if ((MON == 3 && SUN_day >= 8) || (MON >= 4 && MON <= 10) || (MON == 11 && SUN_day <= 0))
//3gg00]0n01<EFBFBD>n0<EFBFBD>e<EFBFBD>f<EFBFBD>eL08<EFBFBD>e<EFBFBD>N
N/4g^<EFBFBD>10g/11gg00]0n01<EFBFBD>n0<EFBFBD>e<EFBFBD>f<EFBFBD>eL0X[(WW0j0D0
{
summertime_shift = 1;
}
else
{
summertime_shift = 0;
}
}
else // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0!qW0n04XT
{
summertime_shift = 0;
}
xGMT = GMT - 9 + summertime_shift;//GMT+9<EFBFBD>0<EFBFBD>W<EFBFBD>nk0
//GMT+9<EFBFBD>W<EFBFBD>ng0i0<EFBFBD>0`0Q0Z0<EFBFBD>0f0D0<EFBFBD>0K0<EFBFBD>0<EFBFBD>{<EFBFBD>QY0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>--------------------
//+------------------------------------------------------------------+
//| Bf<EFBFBD><EFBFBD>6R<EFBFBD>_ |
//+------------------------------------------------------------------+
//---- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>SBf<EFBFBD><EFBFBD>n0$R<EFBFBD>[ ----
xTime = TimeHour(TimeCurrent()) - xGMT; // <EFBFBD>e,gBf<EFBFBD><EFBFBD>
xxTime = TimeHour(TimeCurrent()) - (GMT - 2); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>{j0W0 <EFBFBD>
yTime = TimeMinute(TimeCurrent()); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0R
gmtadjusted = TimeCurrent() - 60 * 60 * xGMT;
if (xTime < 0)
{
xTime = xTime + 24;
}
else if (xTime > 23)
{
xTime = xTime - 24;
}
if (xxTime < 0)
{
xxTime = xxTime + 24;
}
else if (xxTime > 23)
{
xxTime = xxTime - 24;
}
// 1<EFBFBD>+g<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if ((xTime == PositionClose_Time_W
&& TimeDayOfWeek(gmtadjusted) == PositionClose_DayOfWeek1
&& WeekendClose == true)
)
{
PositionClose = true;
}
else
{
PositionClose = false;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0NGBf<EFBFBD><EFBFBD>
if ( // 1<EFBFBD>+gzln<EFBFBD><EFBFBD>e,gBf<EFBFBD><EFBFBD> <EFBFBD>
(xTime >= EntryNG_StartTime1 && xTime <= EntryNG_EndTime1 //01<EFBFBD>+gzln(u<EFBFBD><EFBFBD>e,gBf<EFBFBD><EFBFBD> <EFBFBD>
&& TimeDayOfWeek(gmtadjusted) >= EntryNG_DayOfWeek1 // 1<EFBFBD>+gzln<EFBFBD>f<EFBFBD>e<EFBFBD><EFBFBD>e,gBf<EFBFBD><EFBFBD> <EFBFBD>
&& WeekendClose == true)
)
{
GMT_Kadou_NG = true;
}
else
{
GMT_Kadou_NG = false;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD>
if (((xxTime == 23 && yTime >= 55 && TimeDayOfWeek(TimeCurrent()) != 5)
|| (xxTime == 23 && yTime >= 50 && TimeDayOfWeek(TimeCurrent()) == 5)
|| (xxTime == 0 && yTime <= 9))
&& BacktestMode == true)
{
ROTime = true;
}
else
{
ROTime = false;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0OKBf<EFBFBD><EFBFBD>
if ( (xxTime >= EntryOK_StartTime1 && xxTime <= EntryOK_EndTime1) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD><EFBFBD>Bf<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD> <EFBFBD>
|| (xxTime >= EntryOK_StartTime2 && xxTime <= EntryOK_EndTime2)) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD><EFBFBD>Bf<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD> <EFBFBD>
{
Logic1_Time = true;
}
else
{
Logic1_Time = false;
}
// S0S0~0g00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0o00<EFBFBD>S_Bf<EFBFBD><EFBFBD>k0<EFBFBD><EFBFBD><EFBFBD>Oj0O0<EFBFBD>[<EFBFBD>eY0<EFBFBD>0
//---- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>SBf<EFBFBD><EFBFBD>n0$R<EFBFBD>[<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD> ----
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
void PositionClose()
{
int i;
double profit;
bool res;
int OrderOpenCandleCount;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00<z<EFBFBD>P<EFBFBD>x<EFBFBD><EFBFBD>b_ <EFBFBD>n04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if(Bars != xBars || CandleStartStartingExit == false)
{
xBars = Bars;
// @b gW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<EFBFBD><EFBFBD>b(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderSymbol() != Symbol()) continue;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderMagicNumber() != MagicNumber) continue;
OrderOpenCandleCount = iBarShift(NULL, 0, OrderOpenTime()); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>,gpe
if (OrderType() == OP_BUY)
{
profit = Bid - OrderOpenPrice(); // <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<EFBFBD>v<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0b<EFBFBD>0L<EFBFBD>M0zlnY0<EFBFBD>0
if
(ROTime == false &&
(profit >= Rikaku_pips1 * xpoint
|| (Exit2(false) == 2 && Ask - Bid <= MaxSpread_pips * xpoint)
|| (Exit2(false) == 2 && Ask - Bid > MaxSpread_pips * xpoint && profit > 0)
|| PositionClose == true
|| OrderOpenCandleCount >= CandleCloseHour * 12)
)
{
double CSpread = Ask - Bid;//0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
uint OrderCloseTimestamp = GetTickCount();// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
double Close_Price = Bid;// zln<EFBFBD>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<EFBFBD>0<EFBFBD>0<EFBFBD>O<h
res = OrderClose(OrderTicket(), OrderLots(), Bid, NULL, Green);
if (res == true && Measurement == true)
{
CloseLatency = GetTickCount() - OrderCloseTimestamp; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) //e\tk<EFBFBD>0x<EFBFBD><EFBFBD>b
{
Print("Access to history failed with error (",GetLastError(),")");
return;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0_04XTo00!kn0<EFBFBD>Qtx02<EFBFBD><EFBFBD>0
if (OrderSymbol() == Symbol())
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0_04XTo00!kn0<EFBFBD>Qtx02<EFBFBD><EFBFBD>0
if (OrderMagicNumber() == MagicNumber)
{
Close_Price = NormalizeDouble(Close_Price, Digits); // <EFBFBD>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>O<h<EFBFBD>0ck<EFBFBD><EFBFBD>S
Yakujyou_Price = NormalizeDouble(OrderClosePrice(), Digits); // <EFBFBD>[<EFBFBD><EFBFBD>}<EFBFBD>[W0_0<EFBFBD>O<h
Close_Slippage = NormalizeDouble(Yakujyou_Price - Close_Price, Digits) / xpoint; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<EFBFBD>0[0
Close_Spread = NormalizeDouble(CSpread, Digits) / xpoint; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<EFBFBD>0[0
profitpips = NormalizeDouble((OrderClosePrice() - OrderOpenPrice()) / xpoint, 1);
/*Print("Slippage = ", DoubleToString(Close_Slippage, Digits),
" Latency = ", CloseLatency,
" OOT = ", OrderOpenTime(),
" OCT = ", OrderCloseTime(),
" OOP = ", OrderOpenPrice(),
" YJP = ", Yakujyou_Price,
" OSp = ", Open_Spread,
" OSl = ", Open_Slippage,
" CSp = ", Close_Spread,
" CSl = ", Close_Slippage);
*/
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
if (fp != INVALID_HANDLE)
{
FileSeek(fp, 0, SEEK_END);
FileWrite(fp, OrderOpenTime(), OrderCloseTime(), OrderOpenPrice(), Yakujyou_Price,
"buy", profitpips, Open_Spread, Open_Slippage, OpenLatency,
Close_Spread, Close_Slippage, CloseLatency, Symbol(), WindowExpertName());
FileClose(fp);
}
}
}
}
}
}
if (OrderType() == OP_SELL)
{
profit = OrderOpenPrice() - Ask; // <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<EFBFBD>v<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0b<EFBFBD>0L<EFBFBD>M0zlnY0<EFBFBD>0
if
(ROTime == false &&
(profit >= Rikaku_pips1 * xpoint
|| (Exit1(true) == 1 && Ask - Bid <= MaxSpread_pips * xpoint)
|| (Exit1(true) == 1 && Ask - Bid > MaxSpread_pips * xpoint && profit > 0)
|| PositionClose == true
|| OrderOpenCandleCount >= CandleCloseHour * 12)
)
{
double CSpread = Ask - Bid;//0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
uint OrderCloseTimestamp = GetTickCount();// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
double Close_Price = Ask;// zln<EFBFBD><EFBFBD>D0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<EFBFBD>0<EFBFBD>0<EFBFBD>O<h
res = OrderClose(OrderTicket(), OrderLots(), Ask, NULL, Green);
if (res == true && Measurement == true)
{
CloseLatency = GetTickCount() - OrderCloseTimestamp; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) //e\tk<EFBFBD>0x<EFBFBD><EFBFBD>b
{
Print("Access to history failed with error (",GetLastError(),")");
return;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0_04XTo00!kn0<EFBFBD>Qtx02<EFBFBD><EFBFBD>0
if (OrderSymbol() == Symbol())
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0_04XTo00!kn0<EFBFBD>Qtx02<EFBFBD><EFBFBD>0
if (OrderMagicNumber() == MagicNumber)
{
Close_Price = NormalizeDouble(Close_Price , Digits); // <EFBFBD><EFBFBD>D0<EFBFBD>l<EFBFBD>e<EFBFBD>O<h<EFBFBD>0ck<EFBFBD><EFBFBD>S
Yakujyou_Price = NormalizeDouble(OrderClosePrice(), Digits); // <EFBFBD>[<EFBFBD><EFBFBD>}<EFBFBD>[W0_0<EFBFBD>O<h
Close_Slippage = NormalizeDouble(Close_Price - Yakujyou_Price, Digits) / xpoint; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<EFBFBD>0[0
Close_Spread = NormalizeDouble(CSpread, Digits) / xpoint; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<EFBFBD>0[0
profitpips = NormalizeDouble((OrderOpenPrice() - OrderClosePrice()) / xpoint, 1);
/*Print("Slippage = ", DoubleToString(Close_Slippage, Digits),
" Latency = ", CloseLatency,
" OOT = ", OrderOpenTime(),
" OCT = ", OrderCloseTime(),
" OOP = ", OrderOpenPrice(),
" YJP = ", Yakujyou_Price,
" OSp = ", Open_Spread,
" OSl = ", Open_Slippage,
" CSp = ", Close_Spread,
" CSl = ", Close_Slippage);
*/
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
if (fp != INVALID_HANDLE)
{
FileSeek(fp, 0, SEEK_END);
FileWrite(fp, OrderOpenTime(), OrderCloseTime(), OrderOpenPrice(), OrderClosePrice(),
"sell", profitpips, Open_Spread, Open_Slippage, OpenLatency,
Close_Spread, Close_Slippage, CloseLatency, Symbol(), WindowExpertName());
FileClose(fp);
}
}
}
}
}
}
} // @b gW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
} //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00<z<EFBFBD>P<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
/*void Trailing()
{
int i;
double profit;
bool res;
double MA_fast1 = iMA(NULL, MA_TF, MA_period_fast, 0, MODE_EMA, PRICE_CLOSE, 1); // 1,gMRn0<EFBFBD>wgMA
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00<z<EFBFBD>P<EFBFBD>x<EFBFBD><EFBFBD>b_ <EFBFBD>
if(Bars != xBarsTrailing || CandleStartStartingTrailing == false)
{
xBarsTrailing = Bars;
// @b gW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<EFBFBD><EFBFBD>b(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderSymbol() != Symbol()) continue;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderMagicNumber() != MagicNumber) continue;
if (OrderType() == OP_BUY)
{
profit = Bid - OrderOpenPrice(); // <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn0+T0 d<EFBFBD>v<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0ON0OFF
if (Modify == true)
{
// +T0 dL0N<EFBFBD>[<EFBFBD>N
NK0d0<EFBFBD>wgMA<EFBFBD>0rR<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>0`04XT0TP<EFBFBD>0_M0 NR0<EFBFBD>0
if (profit <= TrailingTakeProfitStart_pips * xpoint
&& OrderTakeProfit() > NormalizeDouble(MA_fast1 + TrailingTakeProfit_pips * xpoint, Digits())
&& Close[1] < MA_fast1)
{
res = OrderModify(OrderTicket(), OrderOpenPrice(),
OrderStopLoss(),
MA_fast1 + TrailingTakeProfit_pips * xpoint,
0, MediumSeaGreen);
}
}
}
if (OrderType() == OP_SELL)
{
profit = OrderOpenPrice() - Ask; // <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn0+T0 d<EFBFBD>v<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0ON0OFF
if (Modify == true)
{
// +T0 dL0N<EFBFBD>[<EFBFBD>N
NK0d0<EFBFBD>wgMA<EFBFBD>0
N<EFBFBD>bQ0_04XT0TP<EFBFBD>0_M0 NR0<EFBFBD>0
if (profit <= TrailingTakeProfitStart_pips * xpoint
&& OrderTakeProfit() < NormalizeDouble(MA_fast1 - TrailingTakeProfit_pips * xpoint, Digits())
&& Close[1] > MA_fast1)
{
res = OrderModify(OrderTicket(), OrderOpenPrice(),
OrderStopLoss(),
MA_fast1 - TrailingTakeProfit_pips * xpoint,
0, MediumSeaGreen);
}
}
}
} // @b gW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00<z<EFBFBD>P<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
}*/
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
void PositionOpen()
{
int i;
int ticket;
int CountBuy = 0,CountSell = 0;
bool res;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$R<EFBFBD>en0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00<z<EFBFBD>P<EFBFBD>x<EFBFBD><EFBFBD>b_ <EFBFBD>
if(Bars != xBarsEntry || CandleStartStartingEntry == false)
{
xBarsEntry = Bars;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0pe<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<EFBFBD><EFBFBD>b(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderSymbol() != Symbol()) continue;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderMagicNumber() != MagicNumber) continue;
if (OrderType() == OP_BUY)
{
CountBuy = CountBuy + 1;
}
if (OrderType() == OP_SELL)
{
CountSell = CountSell + 1;
}
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0pe<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0ag<EFBFBD>N<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD>W00b<EFBFBD>zW0f0D0<EFBFBD>0p0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L<EFBFBD>F0
if (Entry(true) == 1 // <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
&& CountSell == 0
&& CountBuy < Maxposition
&& xxBars != Bars
&& GMT_Kadou_NG == false
&& Logic1_Time == true
&& Buy_Entry == true)
{
double OSpread = Ask - Bid;// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
uint StartOrderTimestamp = GetTickCount();// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
double Order_Price = Ask;// <EFBFBD><EFBFBD>D0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<EFBFBD>0<EFBFBD>0<EFBFBD>O<h
ticket = OrderSend(Symbol(),
OP_BUY,
CalculateLots(MM_Risk, StopLoss_pips),
Ask,
Slippage,
0,
0,
_Comment,
MagicNumber,
0,
Blue);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0b<EFBFBD>RW0f0D0<EFBFBD>0p00TP, SL<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
if (ticket != -1)
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<EFBFBD><EFBFBD>b(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<EFBFBD>0W0j0D0)
if( OrderSelect( ticket, SELECT_BY_TICKET ) == true )
{
OpenLatency = GetTickCount() - StartOrderTimestamp; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
Order_Price = NormalizeDouble(Order_Price , Digits); // <EFBFBD><EFBFBD>D0<EFBFBD>l<EFBFBD>e<EFBFBD>O<h<EFBFBD>0ck<EFBFBD><EFBFBD>S
Yakujyou_Price = NormalizeDouble(OrderOpenPrice(), Digits); // <EFBFBD>[<EFBFBD><EFBFBD>}<EFBFBD>[W0_0<EFBFBD>O<h0ck<EFBFBD><EFBFBD>S
Open_Slippage = NormalizeDouble(Order_Price - Yakujyou_Price, Digits) / xpoint; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<EFBFBD>0[0
Open_Spread = NormalizeDouble(OSpread, Digits) / xpoint; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<EFBFBD>0[0
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() - StopLoss_pips * xpoint,
OrderOpenPrice() + TakeProfit_pips * xpoint,
0, MediumSeaGreen);
//Print("Slippage = ", DoubleToString(Open_Slippage,Digits),
// " Latency= ", OpenLatency);
}
}
xxBars = Bars;
}
else if (Entry(false) == 2 // <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
&& CountBuy == 0
&& CountSell < Maxposition
&& xxBars != Bars
&& GMT_Kadou_NG == false
&& Logic1_Time == true
&& Sell_Entry == true)
{
double OSpread = Ask - Bid;// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
uint StartOrderTimestamp = GetTickCount();// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
double Order_Price = Bid;// <EFBFBD>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<EFBFBD>0<EFBFBD>0<EFBFBD>O<h
ticket = OrderSend(Symbol(),
OP_SELL,
CalculateLots(MM_Risk, StopLoss_pips),
Bid,
Slippage,
0,
0,
_Comment,
MagicNumber,
0,
Red);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0b<EFBFBD>RW0f0D0<EFBFBD>0p00TP, SL<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
if (ticket != -1)
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<EFBFBD><EFBFBD>b(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<EFBFBD>0W0j0D0)
if( OrderSelect( ticket, SELECT_BY_TICKET ) == true )
{
OpenLatency = GetTickCount() - StartOrderTimestamp; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>,n
Order_Price = NormalizeDouble(Order_Price , Digits); // <EFBFBD><EFBFBD>D0<EFBFBD>l<EFBFBD>e<EFBFBD>O<h<EFBFBD>0ck<EFBFBD><EFBFBD>S
Yakujyou_Price = NormalizeDouble(OrderOpenPrice(), Digits); // <EFBFBD>[<EFBFBD><EFBFBD>}<EFBFBD>[W0_0<EFBFBD>O<h0ck<EFBFBD><EFBFBD>S
Open_Slippage = NormalizeDouble(Yakujyou_Price - Order_Price, Digits) / xpoint; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<EFBFBD>0[0
Open_Spread = NormalizeDouble(OSpread, Digits) / xpoint; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<EFBFBD>0[0
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() + StopLoss_pips * xpoint,
OrderOpenPrice() - TakeProfit_pips * xpoint,
0, MediumSeaGreen);
//Print("Slippage = ", DoubleToString(Open_Slippage,Digits),
// " Latency= ", OpenLatency);
}
}
xxBars = Bars;
}
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$R<EFBFBD>en0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00<z<EFBFBD>P<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| TakeProfit, StopLoss |
//+------------------------------------------------------------------+
void SetTPSL()
{
int i;
double profit;
bool res;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0TP, SL<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<EFBFBD><EFBFBD>b(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderSymbol() != Symbol()) continue;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderMagicNumber() != MagicNumber) continue;
// <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (OrderType() == OP_BUY)
{
profit = Bid - OrderOpenPrice(); // <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<EFBFBD>v<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
// TP, SLL0i0a0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[U0<EFBFBD>0f0D0j0Q0<EFBFBD>0p00TP, SL<EFBFBD>0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0
if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
{
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() - StopLoss_pips * xpoint,
OrderOpenPrice() + TakeProfit_pips * xpoint,
0, MediumSeaGreen);
}
}
// <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (OrderType() == OP_SELL)
{
profit = OrderOpenPrice() - Ask; // <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<EFBFBD>v<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
// TP, SLL0i0a0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[U0<EFBFBD>0f0D0j0Q0<EFBFBD>0p00TP, SL<EFBFBD>0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0
if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
{
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() + StopLoss_pips * xpoint,
OrderOpenPrice() - TakeProfit_pips * xpoint,
0, MediumSeaGreen);
}
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>)R_j<EFBFBD><EFBFBD> |
//+------------------------------------------------------------------+
// <EFBFBD>)R_j<EFBFBD><EFBFBD>n0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
double CalculateLots(double risk, // 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int sl_pips) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(un0<EFBFBD>)R_j<EFBFBD><EFBFBD><EFBFBD>0O(uY0<EFBFBD>0
if (IsTesting())
return(CalculateLots_forTest(risk, sl_pips));
else
return(CalculateLots_forReal(risk, sl_pips));
}
// <EFBFBD>)R_j<EFBFBD><EFBFBD>n0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u <EFBFBD>
double CalculateLots_forReal(double risk, // 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int sl_pips) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
{
double freemargin; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0YOpR<<EFBFBD><EFBFBD>
double balance; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>S<EFBFBD>^<EFBFBD>
double tickvalue; // 1<EFBFBD>0<EFBFBD>0<EFBFBD>01pipS__0<EFBFBD>0n0<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vS_M<EFBFBD>
double lotstep; // <EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0pen0g\;R06RP<EFBFBD>
double maxlots; // <EFBFBD>0<EFBFBD>0<EFBFBD>0n0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0pe6RP<EFBFBD>
double minlots; // <EFBFBD>0<EFBFBD>0<EFBFBD>0n0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0pe6RP<EFBFBD>
double lotsize = Lots; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// <EFBFBD>)R_j<EFBFBD><EFBFBD><EFBFBD>0O<EFBFBD>0j0D04XT0Lots<EFBFBD>0ԏY0
if (MM_ON == Fixed) return(Lots);
freemargin = AccountFreeMargin();
balance = AccountBalance();
tickvalue = MarketInfo(NULL, MODE_TICKVALUE);
lotstep = MarketInfo(NULL, MODE_LOTSTEP);
maxlots = MarketInfo(NULL, MODE_MAXLOT);
minlots = MarketInfo(NULL, MODE_MINLOT);
// tickvalueo0pipsg0o0j0O0pointj0n0g00\pe<EFBFBD>p<EFBFBD>N Nn0Ahpek0<EFBFBD>_X0f0܈ckY0<EFBFBD>0
if (Digits() == 3 || Digits() == 5)
tickvalue = tickvalue * 10;
// 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h0SLn0E^K0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>00
if (MM_ON == FreeMargin) // YOpR<<EFBFBD><EFBFBD><EFBFBD>e_
{
lotsize = (freemargin * risk / 100.0) // 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (YOpR<<EFBFBD><EFBFBD>bёn0risk%)
/ (sl_pips * tickvalue); // 1<EFBFBD>0<EFBFBD>0<EFBFBD>0g0SLk0K0K0c0_0Bfn0ёM<EFBFBD>
}
else if (MM_ON == Balance) // <EFBFBD><EFBFBD>e_
{
lotsize = (balance * risk / 100.0) // 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (YOpR<<EFBFBD><EFBFBD>bёn0risk%)
/ (sl_pips * tickvalue); // 1<EFBFBD>0<EFBFBD>0<EFBFBD>0g0SLk0K0K0c0_0Bfn0ёM<EFBFBD>
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0pen0;R0k0T<EFBFBD>0[0f0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0<EFBFBD>Ock
lotsize = MathFloor(lotsize / lotstep) * lotstep;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0n0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0peg0܈ck<EFBFBD>0K0Q0<EFBFBD>0
lotsize = MathMax(lotsize, minlots);
lotsize = MathMin(lotsize, maxlots);
return(lotsize);
}
// <EFBFBD>)R_j<EFBFBD><EFBFBD>n0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u <EFBFBD>
double CalculateLots_forTest(double risk, // 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int sl_pips) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
{
double freemargin; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0YOpR<<EFBFBD><EFBFBD>
double balance; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>S<EFBFBD>^<EFBFBD>
double tickvalue; // 1<EFBFBD>0<EFBFBD>0<EFBFBD>01pipS__0<EFBFBD>0n0<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vS_M<EFBFBD>
double lotstep; // <EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0pen0g\;R06RP<EFBFBD>
double maxlots; // <EFBFBD>0<EFBFBD>0<EFBFBD>0n0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0pe6RP<EFBFBD>
double minlots; // <EFBFBD>0<EFBFBD>0<EFBFBD>0n0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0pe6RP<EFBFBD>
double lotamount; // 1<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD><EFBFBD><EFBFBD>pe
double lotsize = Lots; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double conv; // <EFBFBD>S<EFBFBD>^<EFBFBD><EFBFBD><EFBFBD>.z^<EFBFBD>k0<EFBFBD>0<EFBFBD>0܈ck<EFBFBD>Ope
// <EFBFBD>)R_j<EFBFBD><EFBFBD><EFBFBD>0O<EFBFBD>0j0D04XT0Lots<EFBFBD>0ԏY0
if (MM_ON == Fixed) return(Lots);
freemargin = AccountFreeMargin();
balance = AccountBalance();
tickvalue = MarketInfo(NULL, MODE_TICKVALUE);
lotstep = MarketInfo(NULL, MODE_LOTSTEP);
maxlots = MarketInfo(NULL, MODE_MAXLOT);
minlots = MarketInfo(NULL, MODE_MINLOT);
lotamount = MarketInfo(NULL, MODE_LOTSIZE);
// 1N<EFBFBD><EFBFBD><EFBFBD>*1pips = $1 = 100<EFBFBD>Qh0<EFBFBD>N<EFBFBD>[W001<EFBFBD>0<EFBFBD>0<EFBFBD>01pipn0 Y<EFBFBD>RL0<EFBFBD>S<EFBFBD>^<EFBFBD><EFBFBD><EFBFBD>g0D0O0<EFBFBD>0k0<EFBFBD>vS_Y0<EFBFBD>0K0<EFBFBD><EFBFBD>{
// 1 lot = 10N<EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD>S<EFBFBD>^<EFBFBD><EFBFBD><EFBFBD> = JPY : tickvalue = 1000<EFBFBD>Q/(lot<EFBFBD>0pip)
// <EFBFBD>S<EFBFBD>^<EFBFBD><EFBFBD><EFBFBD> = USD : tickvalue = $10/(lot<EFBFBD>0pip)
conv = 1;
if (AccountCurrency() == "JPY")
conv = 100;
tickvalue = lotamount / 10000 * conv;
// 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h0SLn0E^K0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>00
if (MM_ON == FreeMargin) // YOpR<<EFBFBD><EFBFBD><EFBFBD>e_
{
lotsize = (freemargin * risk / 100.0) // 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (YOpR<<EFBFBD><EFBFBD>bёn0risk%)
/ (sl_pips * tickvalue); // 1<EFBFBD>0<EFBFBD>0<EFBFBD>0g0SLk0K0K0c0_0Bfn0ёM<EFBFBD>
}
else if (MM_ON == Balance) // <EFBFBD><EFBFBD>e_
{
lotsize = (balance * risk / 100.0) // 1<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (YOpR<<EFBFBD><EFBFBD>bёn0risk%)
/ (sl_pips * tickvalue); // 1<EFBFBD>0<EFBFBD>0<EFBFBD>0g0SLk0K0K0c0_0Bfn0ёM<EFBFBD>
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0pen0;R0k0T<EFBFBD>0[0f0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0<EFBFBD>Ock
lotsize = MathFloor(lotsize / lotstep) * lotstep;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0n0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0peg0܈ck<EFBFBD>0K0Q0<EFBFBD>0
lotsize = MathMax(lotsize, minlots);
lotsize = MathMin(lotsize, maxlots);
return(lotsize);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>}<EFBFBD>b |
//+------------------------------------------------------------------+
int Entry(bool isbuy)
{
if (Entry_Rule1(isbuy) == 1 && (Entry_Filter1(isbuy) == 1 || Entry_Filter1(isbuy) == 3)
&& (Entry_Filter2(isbuy) == 1 || Entry_Filter2(isbuy) == 3)
&& (Entry_Filter3(isbuy) == 1 || Entry_Filter3(isbuy) == 3)
&& (Entry_Filter4(isbuy) == 1 || Entry_Filter4(isbuy) == 3)
&& (Entry_Filter5(isbuy) == 1 || Entry_Filter5(isbuy) == 3)
&& (Entry_Filter6(isbuy) == 1 || Entry_Filter6(isbuy) == 3)
&& (Entry_Filter7(isbuy) == 1 || Entry_Filter7(isbuy) == 3)
&& (Entry_Filter8(isbuy) == 1 || Entry_Filter8(isbuy) == 3)
)
{
return(1);
}
else if (Entry_Rule1(isbuy) == 2 && (Entry_Filter1(isbuy) == 2 || Entry_Filter1(isbuy) == 3)
&& (Entry_Filter2(isbuy) == 2 || Entry_Filter2(isbuy) == 3)
&& (Entry_Filter3(isbuy) == 2 || Entry_Filter3(isbuy) == 3)
&& (Entry_Filter4(isbuy) == 2 || Entry_Filter4(isbuy) == 3)
&& (Entry_Filter5(isbuy) == 2 || Entry_Filter5(isbuy) == 3)
&& (Entry_Filter6(isbuy) == 2 || Entry_Filter6(isbuy) == 3)
&& (Entry_Filter7(isbuy) == 2 || Entry_Filter7(isbuy) == 3)
&& (Entry_Filter8(isbuy) == 2 || Entry_Filter8(isbuy) == 3)
)
{
return(2);
}
else
{
return(0);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0zln<EFBFBD>}<EFBFBD>b |
//+------------------------------------------------------------------+
int Exit1(bool isbuy)
{
if (Exit_Rule1(isbuy) == 3 && Exit_Rule2(isbuy) == 3 && Exit_Rule3(isbuy) == 3
&& Exit_Rule4(isbuy) == 3 && Exit_Rule5(isbuy) == 3)
{
return(0);
}
else if (Exit_Rule1(isbuy) == 1)
{
return(1);
}
else if (Exit_Rule2(isbuy) == 1)
{
return(1);
}
else if (Exit_Rule3(isbuy) == 1)
{
return(1);
}
else if (Exit_Rule4(isbuy) == 1)
{
return(1);
}
else if (Exit_Rule5(isbuy) == 1)
{
return(1);
}
else
{
return(0);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0zln<EFBFBD>}<EFBFBD>b |
//+------------------------------------------------------------------+
int Exit2(bool isbuy)
{
if (Exit_Rule1(isbuy) == 3 && Exit_Rule2(isbuy) == 3 && Exit_Rule3(isbuy) == 3
&& Exit_Rule4(isbuy) == 3 && Exit_Rule5(isbuy) == 3)
{
return(0);
}
else if (Exit_Rule1(isbuy) == 2)
{
return(2);
}
else if (Exit_Rule2(isbuy) == 2)
{
return(2);
}
else if (Exit_Rule3(isbuy) == 2)
{
return(2);
}
else if (Exit_Rule4(isbuy) == 2)
{
return(2);
}
else if (Exit_Rule5(isbuy) == 2)
{
return(2);
}
else
{
return(0);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Entry_Rule1(bool isbuy)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
//RSIL0c<EFBFBD>[$P<EFBFBD>N Nk0j0c0_0<EFBFBD>0 0<EFBFBD><EFBFBD>D0 00c<EFBFBD>[$P<EFBFBD>N
Nk0j0c0_0<EFBFBD>0 0<EFBFBD>X<EFBFBD>0 0
//K0d001,gMRh02,gMRn0RSI$P<EFBFBD>]L0c<EFBFBD>[<EFBFBD>{<EFBFBD>V<EFBFBD>N<EFBFBD>Qj0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD><EFBFBD>O<h Y<EFBFBD>Rn0<EFBFBD><EFBFBD>^6R<EFBFBD>_ <EFBFBD>
double RSI1 = iRSI(NULL, PERIOD_M5, RSI_period, PRICE_CLOSE, 1);
double RSI2 = iRSI(NULL, PERIOD_M5, RSI_period, PRICE_CLOSE, 2);
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0%RL0c<EFBFBD>[$P<EFBFBD>N Nk0D0<EFBFBD>0<EFBFBD><EFBFBD>o0 0<EFBFBD><EFBFBD>D0 00c<EFBFBD>[$P<EFBFBD>N
Nk0D0<EFBFBD>0<EFBFBD><EFBFBD>o0 0<EFBFBD>X<EFBFBD>0 0
double WPR1 = iWPR(NULL, PERIOD_M5, WilliamsPR_Gyakubari_period, 1);
double WPR2 = iWPR(NULL, PERIOD_M5, WilliamsPR_Gyakubari_period, 2);
if (isbuy == true && Logic1_Time == true) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00n0h0M0o00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0c<EFBFBD>[<EFBFBD>{<EFBFBD>V<EFBFBD>Qg0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
{
if ((RSI1 <= RSI_Gyakubari_Line1 && WPR1 < WilliamsPR_BuyExit_Line) ||
(WPR1 <= WilliamsPR_Line1 && RSI1 < RSI_BuyExit_Line))
{
return(1);
} // <EFBFBD><EFBFBD>D0
}
if (isbuy == false && Logic1_Time == true) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00n0h0M0o00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0c<EFBFBD>[<EFBFBD>{<EFBFBD>V<EFBFBD>Qg0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
{
if ((RSI1 >= RSI_Gyakubari_Line2 && WPR1 > WilliamsPR_SellExit_Line) ||
(WPR1 >= WilliamsPR_Line2 && RSI1 > RSI_SellExit_Line))
{
return(2);
} // <EFBFBD>X<EFBFBD>0
}
return(0);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Entry_Filter1(bool isbuy)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0&<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double spread = MarketInfo(NULL, MODE_SPREAD);
if(Digits == 3 || Digits == 5)
spread /= 10.0;
double Close0 = iClose(NULL, PERIOD_M5, 0);
double Close1 = iClose(NULL, PERIOD_M5, 1);
if(spread > MaxSpread_pips)
return(0); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0c<EFBFBD>[pips<EFBFBD>N
Ng0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 N1<EFBFBD><EFBFBD>S
if(isbuy == true && Close0 - Close1 >= CandleMargin_Pips * xpoint)
return(0); // (<EFBFBD>s(W<EFBFBD>O<h-1,g<EFBFBD><EFBFBD>B}$P)L00c<EFBFBD>[pips<EFBFBD>N
N`0c0_0<EFBFBD>0<EFBFBD><EFBFBD>D0<EFBFBD>ybk
if(isbuy == false && Close1 - Close0 >= CandleMargin_Pips * xpoint)
return(0); // (1,g<EFBFBD><EFBFBD>B}$P-<EFBFBD>s(W<EFBFBD>O<h)L00c<EFBFBD>[pips<EFBFBD>N
N`0c0_0<EFBFBD>0<EFBFBD>X<EFBFBD>0<EFBFBD>ybk
else
return(3); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>S
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02 |
//+------------------------------------------------------------------+
int Entry_Filter2(bool isbuy)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02
//12/24~1/3~0g0o0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0j0D0
int NGMonth = Month();
int NGDay = Day();
if (YearendClose == true
&& ((NGMonth == 12 && NGDay >= 24) || (NGMonth == 1 && NGDay <= 3))
)
{
return(0);
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03 |
//+------------------------------------------------------------------+
int Entry_Filter3(bool isbuy)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03
// <EFBFBD>0<EFBFBD>0<EFBFBD>0E^L00c<EFBFBD>[pips<EFBFBD>N
Nj0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S
double UpperBB2 = iBands(NULL, PERIOD_M5, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, 1);
double LowerBB2 = iBands(NULL, PERIOD_M5, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, 1);
if (UpperBB2 - LowerBB2 >= BBMargin * xpoint)
{
return(3);
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>S
else
{
return(0);
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 N1<EFBFBD><EFBFBD>S
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04 |
//+------------------------------------------------------------------+
int Entry_Filter4(bool isbuy)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04
// N<EFBFBD><EFBFBD>S<EFBFBD>%,gn0ؚ$P<EFBFBD>[$Pn0$P<EFBFBD>0<EFBFBD>S<EFBFBD>_
double MostHigh;
double MostLow;
int HighestIndex = iHighest(NULL, PERIOD_M5, MODE_HIGH, CandleCheckCount, 1);
int LowestIndex = iLowest(NULL, PERIOD_M5, MODE_LOW , CandleCheckCount, 1);
MostHigh = iHigh(NULL, PERIOD_M5, HighestIndex);
MostLow = iLow(NULL, PERIOD_M5, LowestIndex);
// N<EFBFBD><EFBFBD>S0,gk000pips<EFBFBD>N
N$P<EFBFBD>RM0L0B0c0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>ybk
if (MostHigh - MostLow > HL_Margin_pips * xpoint)
{
return(0);
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05 |
//+------------------------------------------------------------------+
int Entry_Filter5(bool isbuy)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05
int F5_PERIOD = PERIOD_M5;
if (RSI_JUNBARI_TF == 1) F5_PERIOD = PERIOD_M1;
if (RSI_JUNBARI_TF == 2) F5_PERIOD = PERIOD_M5;
if (RSI_JUNBARI_TF == 3) F5_PERIOD = PERIOD_M15;
if (RSI_JUNBARI_TF == 4) F5_PERIOD = PERIOD_M30;
if (RSI_JUNBARI_TF == 5) F5_PERIOD = PERIOD_H1;
if (RSI_JUNBARI_TF == 6) F5_PERIOD = PERIOD_H4;
if (RSI_JUNBARI_TF == 7) F5_PERIOD = PERIOD_D1;
if (RSI_JUNBARI_TF == 8) F5_PERIOD = PERIOD_W1;
if (RSI_JUNBARI_TF == 9) F5_PERIOD = PERIOD_MN1;
// RSIL0c<EFBFBD>[$P<EFBFBD>N
Nk0D0<EFBFBD>0<EFBFBD><EFBFBD>o0 0<EFBFBD><EFBFBD>D0 00c<EFBFBD>[$P<EFBFBD>N Nk0D0<EFBFBD>0<EFBFBD><EFBFBD>o0 0<EFBFBD>X<EFBFBD>0 0
double RSI0 = iRSI(NULL, F5_PERIOD, 14, PRICE_CLOSE, 1);
// RSIL0c<EFBFBD>[$P<EFBFBD>N
Nk0D0<EFBFBD>0<EFBFBD><EFBFBD>o0 0<EFBFBD><EFBFBD>D0 0
if (isbuy == true && RSI0 >= RSI_Junbari_Filter_Line)
{
return(1);
} // <EFBFBD><EFBFBD>D0
// RSIL0c<EFBFBD>[$P<EFBFBD>N Nk0D0<EFBFBD>0<EFBFBD><EFBFBD>o0 0<EFBFBD>X<EFBFBD>0 0
if (isbuy == false && RSI0 <= 100 - RSI_Junbari_Filter_Line)
{
return(2);
} // <EFBFBD>X<EFBFBD>0
else
{
return(0);
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 N<EFBFBD>S
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06 |
//+------------------------------------------------------------------+
int Entry_Filter6(bool isbuy)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06
int F6_PERIOD = PERIOD_H1;
if (MACD_TF == 1) F6_PERIOD = PERIOD_M1;
if (MACD_TF == 2) F6_PERIOD = PERIOD_M5;
if (MACD_TF == 3) F6_PERIOD = PERIOD_M15;
if (MACD_TF == 4) F6_PERIOD = PERIOD_M30;
if (MACD_TF == 5) F6_PERIOD = PERIOD_H1;
if (MACD_TF == 6) F6_PERIOD = PERIOD_H4;
if (MACD_TF == 7) F6_PERIOD = PERIOD_D1;
if (MACD_TF == 8) F6_PERIOD = PERIOD_W1;
if (MACD_TF == 9) F6_PERIOD = PERIOD_MN1;
// MACD<EFBFBD>}L0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0
Nn0<EFBFBD><EFBFBD>o0 0<EFBFBD><EFBFBD>D0 0/<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Nn0<EFBFBD><EFBFBD>o0 0<EFBFBD>X<EFBFBD>0 0
double MACD_MAIN1 = iMACD(NULL, F6_PERIOD, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1); // 1,gMRn0MACD<EFBFBD>}
// MACD<EFBFBD>}L0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0
Nn0<EFBFBD><EFBFBD>o0 0<EFBFBD><EFBFBD>D0 0
if (isbuy == true && MACD_MAIN1 > 0)
{
return(1);
} // <EFBFBD><EFBFBD>D0
// MACD<EFBFBD>}L0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0 Nn0<EFBFBD><EFBFBD>o0 0<EFBFBD>X<EFBFBD>0 0
if (isbuy == false && MACD_MAIN1 < 0)
{
return(2);
} // <EFBFBD>X<EFBFBD>0
else
{
return(0);
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>07 |
//+------------------------------------------------------------------+
int Entry_Filter7(bool isbuy)
{
if (WR_MODE == true)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>07
int ADX_PERIOD = 240;
if (ADX_TF == 1) ADX_PERIOD = PERIOD_M1;
if (ADX_TF == 2) ADX_PERIOD = PERIOD_M5;
if (ADX_TF == 3) ADX_PERIOD = PERIOD_M15;
if (ADX_TF == 4) ADX_PERIOD = PERIOD_M30;
if (ADX_TF == 5) ADX_PERIOD = PERIOD_H1;
if (ADX_TF == 6) ADX_PERIOD = PERIOD_H4;
if (ADX_TF == 7) ADX_PERIOD = PERIOD_D1;
if (ADX_TF == 8) ADX_PERIOD = PERIOD_W1;
if (ADX_TF == 9) ADX_PERIOD = PERIOD_MN1;
// ADXL0c<EFBFBD>[$P<EFBFBD>N
Nn0Bfn00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qeg<EFBFBD>0
double ADX1 = iADX(NULL, ADX_PERIOD, 14, PRICE_CLOSE, MODE_MAIN, 1);
double ADX2 = iADX(NULL, ADX_PERIOD, 14, PRICE_CLOSE, MODE_MAIN, 2);
if (ADX1 > ADX_value)// && ADX1 > ADX2 )
{
return(0);
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 N<EFBFBD>S
else
{
return(3);
} // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>07<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>08 |
//+------------------------------------------------------------------+
int Entry_Filter8(bool isbuy)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>08
// T.z<EFBFBD>0<EFBFBD>0<EFBFBD>0R<EFBFBD>f
int Week = TimeDayOfWeek(TimeCurrent());
if (WS_MODE == Wednesday && Week == 3 && xxTime == 23)
{
return(0);
}
if (WS_MODE == Thursday && Week == 4 && xxTime == 23)
{
return(0);
}
if (WS_MODE == Wednesday_Thursday && (Week == 3 || Week == 4) && xxTime == 23)
{
return(0);
}
if (NG0_MODE == true && xxTime == 0)
{
return(0);
}
else
{
return(3);
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>08<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Exit_Rule1(bool isbuy)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>01
//RSIL0c<EFBFBD>[$P<EFBFBD>N
Nk0j0c0_0<EFBFBD>0 0<EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln 00c<EFBFBD>[$P<EFBFBD>N Nk0j0c0_0<EFBFBD>0 0<EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln 0
double WPR1 = iWPR(NULL, PERIOD_M5, WilliamsPR_Gyakubari_period, 1);
// RSIL0c<EFBFBD>[<EFBFBD>N
Nk0j0c0_0<EFBFBD>0<EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln
if (WPR1 >= WilliamsPR_BuyExit_Line)
{
return(2);
}
else if (WPR1 <= WilliamsPR_SellExit_Line)
{
return(1);
}
else
{
return(0);
}
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>02 |
//+------------------------------------------------------------------+
int Exit_Rule2(bool isbuy)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>02
//RSIL0c<EFBFBD>[$P<EFBFBD>N
Nk0j0c0_0<EFBFBD>0 0<EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln 00c<EFBFBD>[$P<EFBFBD>N Nk0j0c0_0<EFBFBD>0 0<EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln 0
double RSI1 = iRSI(NULL, PERIOD_M5, RSI_period, PRICE_CLOSE, 1);
// RSIL0c<EFBFBD>[<EFBFBD>N
Nk0j0c0_0<EFBFBD>0<EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln
if (RSI1 >= RSI_BuyExit_Line)
{
return(2);
}
else if (RSI1 <= RSI_SellExit_Line)
{
return(1);
}
else
{
return(0);
}
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>02<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>03 |
//+------------------------------------------------------------------+
int Exit_Rule3(bool isbuy)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>03
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>03<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>04 |
//+------------------------------------------------------------------+
int Exit_Rule4(bool isbuy)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>04
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>04<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>05 |
//+------------------------------------------------------------------+
int Exit_Rule5(bool isbuy)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>05
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>05<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+