gryps2/EA-code/Yoritsugu/EA510_v07.mq4

956 lines
70 KiB
MQL4
Raw Permalink Normal View History

2025-05-30 14:58:21 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| EA510.mq4 |
//+------------------------------------------------------------------+
//Shortn0020<EFBFBD>e<EFBFBD>NM<EFBFBD>k0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD>0F0k0 Y<EFBFBD>f
//Shortn0023<EFBFBD>e<EFBFBD>NM<EFBFBD>n0g,ё,gB}<EFBFBD>ek0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD>0F0k0 Y<EFBFBD>f
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$R<EFBFBD>[<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>R
#property copyright ""
#property link ""
#property version "1.00"
#property strict
#property description "EA510" // EA<EFBFBD><EFBFBD>f<EFBFBD>e
//+------------------------------------------------------------------+
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><<EFBFBD>_j<EFBFBD><EFBFBD>
bool Ninsho = false; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><<EFBFBD>_j<EFBFBD><EFBFBD><EFBFBD>S&T
int AccountNo = 1234567; // <EFBFBD><EFBFBD><<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>^ju<EFBFBD>S
//+------------------------------------------------------------------+
// Rc<EFBFBD>W<EFBFBD>[<EFBFBD>
enum ENUM_ONOFF{
off = 0, //OFF
on = 1 //ON
};
enum ENUM_HOUR{
hour0 = 0, //00Bf
hour1 = 1, //01Bf
hour2 = 2, //02Bf
hour3 = 3, //03Bf
hour4 = 4, //04Bf
hour5 = 5, //05Bf
hour6 = 6, //06Bf
hour7 = 7, //07Bf
hour8 = 8, //08Bf
hour9 = 9, //09Bf
hour10 = 10, //10Bf
hour11 = 11, //11Bf
hour12 = 12, //12Bf
hour13 = 13, //13Bf
hour14 = 14, //14Bf
hour15 = 15, //15Bf
hour16 = 16, //16Bf
hour17 = 17, //17Bf
hour18 = 18, //18Bf
hour19 = 19, //19Bf
hour20 = 20, //20Bf
hour21 = 21, //21Bf
hour22 = 22, //22Bf
hour23 = 23 //23Bf
};
enum ENUM_MINUTE{
minute0 = 0, //00R
minute1 = 1, //01R
minute2 = 2, //02R
minute3 = 3, //03R
minute4 = 4, //04R
minute5 = 5, //05R
minute6 = 6, //06R
minute7 = 7, //07R
minute8 = 8, //08R
minute9 = 9, //09R
minute10 = 10, //10R
minute11 = 11, //11R
minute12 = 12, //12R
minute13 = 13, //13R
minute14 = 14, //14R
minute15 = 15, //15R
minute16 = 16, //16R
minute17 = 17, //17R
minute18 = 18, //18R
minute19 = 19, //19R
minute20 = 20, //20R
minute21 = 21, //21R
minute22 = 22, //22R
minute23 = 23, //23R
minute24 = 24, //24R
minute25 = 25, //25R
minute26 = 26, //26R
minute27 = 27, //27R
minute28 = 28, //28R
minute29 = 29, //29R
minute30 = 30, //30R
minute31 = 31, //31R
minute32 = 32, //32R
minute33 = 33, //33R
minute34 = 34, //34R
minute35 = 35, //35R
minute36 = 36, //36R
minute37 = 37, //37R
minute38 = 38, //38R
minute39 = 39, //39R
minute40 = 40, //40R
minute41 = 41, //41R
minute42 = 42, //42R
minute43 = 43, //43R
minute44 = 44, //44R
minute45 = 45, //45R
minute46 = 46, //46R
minute47 = 47, //47R
minute48 = 48, //48R
minute49 = 49, //49R
minute50 = 50, //50R
minute51 = 51, //51R
minute52 = 52, //52R
minute53 = 53, //53R
minute54 = 54, //54R
minute55 = 55, //55R
minute56 = 56, //56R
minute57 = 57, //57R
minute58 = 58, //58R
minute59 = 59 //59R
};
enum ENUM_DST{
USStandard = 0, //US<EFBFBD>W<EFBFBD>n
UKStandard = 1 //UK<EFBFBD>W<EFBFBD>n
};
// eQ<EFBFBD>R<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>[<EFBFBD>
extern string _BASIC = "%%%%%%%%%%"; //<EFBFBD>%<EFBFBD>W,g-<EFBFBD><EFBFBD>[ %%%%%%%%%%
extern int MagicNumber = 5102412; //#% <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
extern ENUM_ONOFF FukuriOnOff = off; //#% <EFBFBD>)R<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[
extern double LotsIncreaceAmt = 100000.0; //% #% ONBf<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>X<EFBFBD>R<<EFBFBD><EFBFBD>bёXSMO
extern double LotsIncreaceStep = 0.01; //% #% ONBf<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>X<EFBFBD>R<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
extern double DefaultLots = 0.01; //% % OFFBf<EFBFBD>V<EFBFBD>[Bf<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
extern double MaxSpreadPips = 0.0; //#% g'Y1<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(Pips)(<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[g0_j<EFBFBD><EFBFBD>Off)
extern double MaxSlippagePips = 2.0; //% g'Y1<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(Pips)
extern string _TPSL = "%%%%%%%%%%"; //<EFBFBD>%TP/SL-<EFBFBD><EFBFBD>[ %%%%%%%%%%
double TPPips = 300.0; //#% TPE^(Pips)
double SLPips = 50.0; //% SLE^(Pips)
string _NOTICE = "%%%%%%%%%%"; //<EFBFBD>%<EFBFBD><EFBFBD>w-<EFBFBD><EFBFBD>[ %%%%%%%%%%
ENUM_ONOFF AlertNotice = off; //#% <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>w-<EFBFBD><EFBFBD>[
ENUM_ONOFF MailNotice = off; //#% <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>w-<EFBFBD><EFBFBD>[
ENUM_ONOFF PushNotice = off; //% <EFBFBD>0<EFBFBD>0<EFBFBD>0PUSH<EFBFBD><EFBFBD>w-<EFBFBD><EFBFBD>[
extern string _DST = "%%%%%%%%%%"; //<EFBFBD>%<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD>]-<EFBFBD><EFBFBD>[ %%%%%%%%%%
extern ENUM_ONOFF JudgeDST = on; //#% <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$R<EFBFBD>[ g!q
extern ENUM_DST AccountStandard = UKStandard; //#% <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0i<EFBFBD>(u<EFBFBD>W<EFBFBD>n(<EFBFBD>S<EFBFBD>^O>y)
extern int TimeDiff = 7; //% Bf<EFBFBD>](<EFBFBD>QBf<EFBFBD><EFBFBD>g0n0<EFBFBD>e,gBf<EFBFBD><EFBFBD>h0MT4<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD>h0n0Bf<EFBFBD><EFBFBD><EFBFBD>])
double Kairi_Judge_percent1_L = 2; // 0<EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S0w<EFBFBD>gMAk0<EFBFBD>[Y0<EFBFBD>0VN<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>N<EFBFBD>Q
double Kairi_Judge_percent2_L = 0; // 0<EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S0w<EFBFBD>gMAk0<EFBFBD>[W0f0VN<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>N
N
int Trend_period1_L = 110; // -Ng<EFBFBD>y<EFBFBD>Rs^GW<EFBFBD>}
int Trend_period2_L = 460; // w<EFBFBD>g<EFBFBD>y<EFBFBD>Rs^GW<EFBFBD>}
double Kairi_Judge_percent1_S = 2.25; // 0<EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S0w<EFBFBD>gMAk0<EFBFBD>[Y0<EFBFBD>0VN<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>N<EFBFBD>Q
double Kairi_Judge_percent2_S = 1.75; // 0<EFBFBD>5_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S0w<EFBFBD>gMAk0<EFBFBD>[W0f0VN<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>N
N
int Trend_period1_S = 90; // -Ng<EFBFBD>y<EFBFBD>Rs^GW<EFBFBD>}
int Trend_period2_S = 380; // w<EFBFBD>g<EFBFBD>y<EFBFBD>Rs^GW<EFBFBD>}
// <EFBFBD>[pe<EFBFBD>const <EFBFBD>
const string EAName = WindowExpertName(); // EA T<EFBFBD><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<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>w,g<EFBFBD>e <EFBFBD>
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Ype
double MinLot = 0; // g\<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
double MaxLot = 0; // g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
int LotStepDigit = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0\pe<EFBFBD>pAhpe
int NowBuyCount = 0; // <EFBFBD>O g<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
int NowSellCount = 0; // <EFBFBD>O g<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
int MaxSpreadPoints = 0; // g'Y1<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Points
int MaxSlippagePoints = 0; // g'Y1<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Points
int TPPoints = 0; // TPE^Points
int SLPoints = 0; // SLE^Points
datetime runDate = Time[0]; // <EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>[$R<EFBFBD>[(u
string CommentText = "EA510"; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0,g<EFBFBD>e
//+------------------------------------------------------------------+
//| OnInit(RgS)<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
int OnInit(){
// ---<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><<EFBFBD>
if(IsValidAccount() == false){
ExpertRemove();
return(INIT_FAILED);
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>_
double LotStep = MarketInfo(Symbol(),MODE_LOTSTEP);
if(LotStep == 1) LotStepDigit = 0;
else if(LotStep == 0.1) LotStepDigit = 1;
else LotStepDigit = 2;
// <EFBFBD>S<EFBFBD>^n0g\<EFBFBD>0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0<EFBFBD>S<EFBFBD>_
MinLot = MarketInfo(Symbol(),MODE_MINLOT);
MaxLot = MarketInfo(Symbol(),MODE_MAXLOT);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pen0-<EFBFBD><EFBFBD>[$PL0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>N Nn04XTo0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0k00g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>N
Nn04XTo0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0k07_6R<EFBFBD>vk0 Y<EFBFBD>f
if(DefaultLots <= MinLot){
DefaultLots = MinLot;
}else if(DefaultLots >= MaxLot){
DefaultLots = MaxLot;
}else{
DefaultLots = NormalizeDouble(DefaultLots,LotStepDigit);
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>0<EFBFBD>0n04XT<EFBFBD>Kb<EFBFBD>R<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Bfh0 T$P <EFBFBD>0S_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>V<EFBFBD>[n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>NN
if(MagicNumber == 0){
MagicNumber = 5102412;
}
// Pipsc<EFBFBD>[<EFBFBD>0Pointsx0<EFBFBD>c<EFBFBD>{
MaxSpreadPoints = (int)(MaxSpreadPips*10);
MaxSlippagePoints = (int)(MaxSlippagePips*10);
TPPoints = (int)(TPPips*10);
SLPoints = (int)(SLPips*10);
// RgS
runDate = iTime(NULL,PERIOD_M5,0);
HideTestIndicators(true);
return(INIT_SUCCEEDED); // ;b<EFBFBD>0$P<EFBFBD>RgSb<EFBFBD>R
}
//+------------------------------------------------------------------+
//| OnDeinit(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0)<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){
HideTestIndicators(false);
// ---<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0JRd<EFBFBD>
Comment("");
}
//+------------------------------------------------------------------+
//| OnTick(tick<EFBFBD>S<EFBFBD>O)<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
void OnTick(){
bool EAStopFlg = false; // EA\Pbk<EFBFBD>rKa<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool AshiKakuteiFlg = false; // <EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool TradeAllowedErr = false; // <EFBFBD>S_<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool TradeAllowedFlag = true; // <EFBFBD>S_<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0
int resI = 0; // int<EFBFBD>W;b<EFBFBD>0$P<h }(u
bool resB = false; // bool<EFBFBD>W;b<EFBFBD>0$P<h }(u
bool InParameterErr = 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
CommentText = "";
// <EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>[$R<EFBFBD>[
if(iTime(NULL,PERIOD_M5,0) != runDate){
runDate = iTime(NULL,PERIOD_M5,0);
AshiKakuteiFlg = true;
}else{
AshiKakuteiFlg = false;
}
// <EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>X<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>S-<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if(IsTradeAllowed() == false && IsTesting() == false){
// <EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD>ybk-<EFBFBD><EFBFBD>[n04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RW0<EFBFBD>QtB}<EFBFBD>N
CommentText += "<00><><EFBFBD>R<EFBFBD>X<EFBFBD><58><EFBFBD>ybk-<2D><>[k0j0c0f0D0~0Y00";
EAStopFlg = true;
}
// <EFBFBD>S_<EFBFBD>S<EFBFBD><EFBFBD>j0Bf<EFBFBD><EFBFBD>/^<EFBFBD>NYo0<EFBFBD>Qt<EFBFBD>0W0j0D0
if(MarketInfo(Symbol(),MODE_TRADEALLOWED) != 1 && IsTesting() == false){
CommentText += "<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<4C><30>~0c0f0D0<44>0_0<5F>0<EFBFBD>S_ N<EFBFBD>Sg0Y00";
EAStopFlg = true;
}
// EAL0\Pbk<EFBFBD>rKag0!qD04XT<EFBFBD>N N<EFBFBD>Qt<EFBFBD>0<EFBFBD>[<EFBFBD>e
if(EAStopFlg == false){
// <EFBFBD>S_<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>0K0i0F0K0n06R<EFBFBD>_g0zlno0<EFBFBD>[a<EFBFBD>Y <EFBFBD>
if(MaxSpreadPoints > 0 && MarketInfo(Symbol(),MODE_SPREAD) > MaxSpreadPoints){
TradeAllowedErr = true;
CommentText += "1<><31>[<5B>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Yn0_0<5F>0<EFBFBD>e<EFBFBD><65><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 N<EFBFBD>S" + "\r\n";
}
if(TradeAllowedErr == true) TradeAllowedFlag = false;
datetime NowDate = ServerToLocalTime(TimeCurrent());
datetime NowDate_WO_ST = ServerToLocalTime_WO_ST(TimeCurrent());
int NextTargetDay = 0;
if(TimeDay(NowDate) <= 5){
NextTargetDay = 5;
}else if(TimeDay(NowDate) > 5 && TimeDay(NowDate) <= 10){
NextTargetDay = 10;
}else if(TimeDay(NowDate) > 10 && TimeDay(NowDate) <= 15){
NextTargetDay = 15;
}else if(TimeDay(NowDate) > 15 && TimeDay(NowDate) <= 20){
NextTargetDay = 20;
}else if(TimeDay(NowDate) > 20 && TimeDay(NowDate) <= 25){
NextTargetDay = 25;
}else if(TimeDay(NowDate) > 25){
NextTargetDay = 99; //gB}n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>eo0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0j0D0<EFBFBD>0F0k0<EFBFBD>Ock 99<EFBFBD>!98
}
if(NextTargetDay == 99){
if(TimeMonth(NowDate) == 1 || TimeMonth(NowDate) == 3 || TimeMonth(NowDate) == 5 || TimeMonth(NowDate) == 7 || TimeMonth(NowDate) == 8 || TimeMonth(NowDate) == 10 || TimeMonth(NowDate) == 12){
NextTargetDay = 31;
// NextTargetDay = 5;
}else{
if(TimeMonth(NowDate) == 2){
if(TimeYear(NowDate)%400 == 0 || (TimeYear(NowDate)%4 == 0 && TimeYear(NowDate)%100 != 0)) NextTargetDay = 29;
else NextTargetDay = 28;
// if(TimeYear(NowDate)%400 == 0 || (TimeYear(NowDate)%4 == 0 && TimeYear(NowDate)%100 != 0)) NextTargetDay = 5;
// else NextTargetDay = 5;
}else{
NextTargetDay = 30;
// NextTargetDay = 5;
}
}
}//VictoryRoado0<EFBFBD>QBf<EFBFBD><EFBFBD>2:00,4:00 YBf<EFBFBD><EFBFBD>1:00,3:00k0W0f0D0<EFBFBD>0
datetime NextTargetDate = StringToTime(IntegerToString(TimeYear(NowDate)) + "." + IntegerToString(TimeMonth(NowDate)) + "." + IntegerToString(NextTargetDay) + " 00:00");
// if(TimeDayOfWeek(NextTargetDate) == MONDAY || (TimeMonth(NextTargetDate) == 12 && (TimeDay(NextTargetDate) == 25 || TimeDay(NextTargetDate) == 31))
if((TimeMonth(NextTargetDate) == 12 && (TimeDay(NextTargetDate) == 25 || TimeDay(NextTargetDate) == 31))
|| (TimeMonth(NextTargetDate) == 1 && (TimeDay(NextTargetDate) == 5 ))
|| (TimeMonth(NextTargetDate) == 5 && (TimeDay(NextTargetDate) == 5 ))
){
// UO<EFBFBD>0W0j0D0
}else{
// <EFBFBD>O g-Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>`1X<EFBFBD>0<EFBFBD>S<EFBFBD>_
CalculateCurrentOrders();
bool BuyEntryFlg = false;
bool SellEntryFlg = false;
bool BuyCloseFlg = false;
bool SellCloseFlg = false;
if(TimeDayOfWeek(NextTargetDate) == SATURDAY || TimeDayOfWeek(NextTargetDate) == SUNDAY){
if(NextTargetDay <=25 && TimeDayOfWeek(NowDate) == FRIDAY && (TimeHour(NowDate) == 1 || TimeHour(NowDate) == 3)&& TimeMinute(NowDate) == 0 && Entry_Rule1(1)==1 ){
BuyEntryFlg = true;
}else if(TimeDayOfWeek(NowDate) == FRIDAY && TimeHour(NowDate) >= 9 && TimeMinute(NowDate) == 55 ){
BuyCloseFlg = true;
}else if(TimeMonth(NowDate) != 12 && TimeDay(NowDate) >=23 && TimeDay(NowDate) <=30 && TimeHour(NowDate_WO_ST) == 9 && TimeMinute(NowDate_WO_ST) == 15 && Entry_Rule1(2)==2){
SellEntryFlg = true;
}else if(TimeHour(NowDate_WO_ST) == 15 && TimeMinute(NowDate_WO_ST) == 50){
SellCloseFlg = true;
}
}
else if(TimeDayOfWeek(NextTargetDate) == MONDAY ){
if(NextTargetDay <=25 && TimeDayOfWeek(NowDate) == SATURDAY && (TimeHour(NowDate) == 1 || TimeHour(NowDate) == 3)&& TimeMinute(NowDate) == 0 && Entry_Rule1(1)==1 ){
BuyEntryFlg = true;
}else if(TimeDayOfWeek(NowDate) == MONDAY && TimeHour(NowDate) >= 9 && TimeMinute(NowDate) == 55){
BuyCloseFlg = true;
}else if(TimeMonth(NowDate) != 12 && TimeDay(NowDate) >=23 && TimeDay(NowDate) <=30 && TimeHour(NowDate_WO_ST) == 9 && TimeMinute(NowDate_WO_ST) == 15 && Entry_Rule1(2)==2){
SellEntryFlg = true;
}else if( TimeHour(NowDate_WO_ST) == 15 && TimeMinute(NowDate_WO_ST) == 50){
SellCloseFlg = true;
}
}else if(TimeDay(NowDate) == NextTargetDay){
if(NextTargetDay <=25 && (TimeHour(NowDate) == 1 || TimeHour(NowDate) == 3 )&& TimeMinute(NowDate) == 0 && Entry_Rule1(1)==1 ){
BuyEntryFlg = true;
}else if(TimeDay(NowDate) == NextTargetDay && TimeHour(NowDate) >= 9 && TimeMinute(NowDate) == 55){
BuyCloseFlg = true;
}else if(TimeMonth(NowDate) != 12 && TimeDay(NowDate) >=23 && TimeDay(NowDate) <=30 && TimeHour(NowDate_WO_ST) == 9 && TimeMinute(NowDate_WO_ST) == 15 && Entry_Rule1(2)==2 ){
SellEntryFlg = true;
}else if(TimeHour(NowDate_WO_ST) == 15 && TimeMinute(NowDate_WO_ST) == 50){
SellCloseFlg = true;
}
}else{
if(TimeMonth(NowDate) != 12 && TimeDay(NowDate) >=23 && TimeDay(NowDate) <=30 && TimeHour(NowDate_WO_ST) == 9 && TimeMinute(NowDate_WO_ST) == 15 && Entry_Rule1(2)==2 ){
SellEntryFlg = true;
}else if(TimeHour(NowDate_WO_ST) == 15 && TimeMinute(NowDate_WO_ST) == 50){
SellCloseFlg = true;
}
}
// <EFBFBD>O g-Nn0<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>0L0B0<EFBFBD>04XT0zlnag<EFBFBD>Nk0N<EFBFBD><EFBFBD>W0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt
if(NowBuyCount > 0 && BuyCloseFlg == true){
resB = ClosePosition(OP_BUY);
}
if(NowSellCount > 0 && SellCloseFlg == true){
resB = ClosePosition(OP_SELL);
}
// <EFBFBD>S_<EFBFBD>S<EFBFBD><EFBFBD>j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0g00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0ag<EFBFBD>Nk0N<EFBFBD><EFBFBD>W0_0<EFBFBD>0<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if(TradeAllowedFlag == true && AshiKakuteiFlg == true){
// if(NowBuyCount == 0 && BuyEntryFlg == true){
if(NowBuyCount <= 1 && BuyEntryFlg == true){
resI = OpenPosition(OP_BUY);
}else if(NowSellCount == 0 && SellEntryFlg == true){
resI = OpenPosition(OP_SELL);
}
}
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0<EFBFBD>[W0f0TP/SL<EFBFBD>0-<EFBFBD><EFBFBD>[
SetTPandSL();
}
Comment(CommentText);
}
// <EFBFBD>%<EFBFBD>%<EFBFBD>% <EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>pe <EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%<EFBFBD>%
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
bool IsValidAccount(){
// ---<EFBFBD>S<EFBFBD>^<EFBFBD><EFBFBD><<EFBFBD>_j<EFBFBD><EFBFBD>ONn04XT0<EFBFBD><EFBFBD><<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0O0o0DEMO<EFBFBD>S<EFBFBD>^n04XTOK
if(Ninsho == true && (AccountNumber() != AccountNo && IsDemo() == false)){
Alert("Account Not Certified");
return(false);
}else{
return(true);
}
}
//+------------------------------------------------------------------+
//| -<EFBFBD><EFBFBD>[Bf<EFBFBD><EFBFBD>/^<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
bool isSettingTime(datetime nowDate,int starthour,int startminute,int endhour,int endminute){
string errMsg = "<00><><EFBFBD>YBf;Rh0B}<7D>NBf;RL0 TX0$Pg0Y00puj0<6A>0$P<>0-<2D><>[W0f0O0`0U0D00";
// BfR<EFBFBD>0tepeg0h<EFBFBD><EFBFBD>sY0<EFBFBD>0<EFBFBD><EFBFBD>O 8:30 <EFBFBD>! 830012:15 <EFBFBD>! 1215 <EFBFBD>
int startTime = starthour * 100 + startminute;
int endTime = endhour * 100 + endminute;
int currentTime = TimeHour(nowDate)*100 + TimeMinute(nowDate);
// <EFBFBD><EFBFBD><EFBFBD>YBf<EFBFBD><EFBFBD>h0B}<EFBFBD>NBf<EFBFBD><EFBFBD><EFBFBD>0h0<EFBFBD>0k00Bf0Rg0-<EFBFBD><EFBFBD>[W0_04XT(hQBf<EFBFBD><EFBFBD>OKh0Y0<EFBFBD>0)
if(startTime == 0 && endTime == 0){
return(true);
// <EFBFBD>e<EFBFBD>0~0_0L0j0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0
}else if(startTime < endTime){
if(currentTime >= startTime && currentTime < endTime){
return(true);
}
// <EFBFBD>e<EFBFBD>0~0_0P0<EFBFBD>0<EFBFBD>0<EFBFBD>0
}else if(startTime > endTime){
if(currentTime < endTime || currentTime >= startTime){
return(true);
}
// TNBf<EFBFBD><EFBFBD><EFBFBD>0c<EFBFBD>[W0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0
}else{
Print(errMsg);
Alert(errMsg);
return(false);
}
return(false);
}
//+------------------------------------------------------------------+
//| <EFBFBD>O g-Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>{ |
//+------------------------------------------------------------------+
void CalculateCurrentOrders(){
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Ype<EFBFBD>[<EFBFBD>
int icount = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// RgS<EFBFBD>Qt
NowBuyCount = 0;
NowSellCount = 0;
// <EFBFBD>s(W<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0g0<EFBFBD>O gW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0peR<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD>0L<EFBFBD>F0
for(icount=0; icount<OrdersTotal(); icount++){
// <EFBFBD>l<EFBFBD>e<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-Nn0<EFBFBD>l<EFBFBD>e<EFBFBD>0x<EFBFBD><EFBFBD>bY0<EFBFBD>0
if(OrderSelect(icount,SELECT_BY_POS,MODE_TRADES) == false){
break; // <EFBFBD>l<EFBFBD>ex<EFBFBD><EFBFBD>bk01YWeW0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtB}<EFBFBD>N
}
// x<EFBFBD><EFBFBD>bW0_0<EFBFBD>l<EFBFBD>en0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0 T<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>s(W<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0 T<EFBFBD>0EA<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h0N<EFBFBD><EFBFBD>W0f0D0<EFBFBD>0<EFBFBD>0n0n00<EFBFBD>Qt
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber){
// x<EFBFBD><EFBFBD>bW0_0<EFBFBD>l<EFBFBD>eL0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if(OrderType()==OP_BUY){
// <EFBFBD>l<EFBFBD>epe<EFBFBD>0<EFBFBD>S<EFBFBD>_
NowBuyCount++;
}
// x<EFBFBD><EFBFBD>bW0_0<EFBFBD>l<EFBFBD>eL0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if(OrderType()==OP_SELL){
// <EFBFBD>l<EFBFBD>epe<EFBFBD>0<EFBFBD>S<EFBFBD>_
NowSellCount++;
}
}
}
}
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt |
//+------------------------------------------------------------------+
int OpenPosition(int orderP){
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Ype<EFBFBD>[<EFBFBD>
int res = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>O;b<EFBFBD>0$P(u
double EntryLot = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u<EFBFBD>0<EFBFBD>0<EFBFBD>0
string msg = ""; // <EFBFBD><EFBFBD>w<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0,g<EFBFBD>e
int ErrCode = 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>0pe<EFBFBD>0<EFBFBD>{<EFBFBD>Q
if(FukuriOnOff == on){
EntryLot = CalcAutoLot();
}else{
EntryLot = DefaultLots;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD><EFBFBD><EFBFBD>YBf<EFBFBD><EFBFBD>(EA<EFBFBD><EFBFBD><EFBFBD>YK0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>y)<EFBFBD>0<EFBFBD>S<EFBFBD>_
uint StartTime = GetTickCount();
while(true){
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD><EFBFBD><EFBFBD>YK0<EFBFBD>05<EFBFBD>y<EFBFBD><EFBFBD>L}N<EFBFBD>W0_0<EFBFBD>07_6R<EFBFBD>vk0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtB}<EFBFBD>N
if(GetTickCount() - StartTime > 5*1000) {
Print("OrderSend timeout.");
break;
}
if(orderP == OP_BUY){
// <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>O
RefreshRates();
res = OrderSend(
Symbol(), // <EFBFBD>s(Wn0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0
OP_BUY, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(bL<EFBFBD><EFBFBD>l<EFBFBD>e)
EntryLot, // <EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[
Ask, // <EFBFBD>s(Wn0<EFBFBD><EFBFBD>$Pg0zv<EFBFBD>l
MaxSlippagePoints, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[<EFBFBD>!qW0
0, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[<EFBFBD>!qW0
EAName, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(EA T)
MagicNumber, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0, // g<EFBFBD>RgP<EFBFBD><EFBFBD>!qW0
clrRed); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
Nn0<EFBFBD>l<EFBFBD>e<EFBFBD>wpSn0r<EFBFBD><EFBFBD>d<EFBFBD>
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01YWeW0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RY0<EFBFBD>0
if(res < 0){
ErrCode = GetLastError();
Print("<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<1A>0ErrorCode=",ErrCode," ,EntryRate=",DoubleToString(Ask,Digits)," ,EntryLot=",EntryLot);
if(ErrCode == ERR_NOT_ENOUGH_MONEY || ErrCode == ERR_LONGS_NOT_ALLOWED) break;
// c$P<EFBFBD>0<EFBFBD>c$P<EFBFBD>l<EFBFBD>en0<EFBFBD><EFBFBD>o0 N<EFBFBD><EFBFBD>Qt<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
/*if(ErrCode == ERR_INVALID_PRICE || ErrCode == ERR_INVALID_STOPS){
break;
}*/
}else{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtL0b<EFBFBD>RW0_04XT0T.z<EFBFBD><EFBFBD>w<EFBFBD>0L<EFBFBD>F0
msg = EAName + " : " + Symbol() + " Buy Order Open.";
if(AlertNotice == on) Alert(msg);
if(MailNotice == on) SendMail(EAName,msg);
if(PushNotice == on) SendNotification(msg);
NowBuyCount++;
break;
}
}
if(orderP == OP_SELL){
// <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><EFBFBD>O
RefreshRates();
res = OrderSend(
Symbol(), // <EFBFBD>s(Wn0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0
OP_SELL, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(bL<EFBFBD><EFBFBD>l<EFBFBD>e)
EntryLot, // <EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[
Bid, // <EFBFBD>s(Wn0<EFBFBD>X$Pg0zv<EFBFBD>l
MaxSlippagePoints, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[<EFBFBD>!qW0
0, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[<EFBFBD>!qW0
EAName, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(EA T)
MagicNumber, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0, // g<EFBFBD>RgP<EFBFBD><EFBFBD>!qW0
clrBlue); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
Nn0<EFBFBD>l<EFBFBD>e<EFBFBD>wpSn0r<EFBFBD><EFBFBD>R<EFBFBD>
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01YWeW0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RY0<EFBFBD>0
if(res < 0){
ErrCode = GetLastError();
Print("<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<1A>0ErrorCode=",ErrCode," ,EntryRate=",DoubleToString(Bid,Digits)," ,EntryLot=",EntryLot);
if(ErrCode == ERR_NOT_ENOUGH_MONEY || ErrCode == ERR_SHORTS_NOT_ALLOWED) break;
// c$P<EFBFBD>0<EFBFBD>c$P<EFBFBD>l<EFBFBD>en0<EFBFBD><EFBFBD>o0 N<EFBFBD><EFBFBD>Qt<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
/*if(ErrCode == ERR_INVALID_PRICE || ErrCode == ERR_INVALID_STOPS){
break;
}*/
}else{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtL0b<EFBFBD>RW0_04XT0T.z<EFBFBD><EFBFBD>w<EFBFBD>0L<EFBFBD>F0
msg = EAName + " : " + Symbol() + " Sell Order Open.";
if(AlertNotice == on) Alert(msg);
if(MailNotice == on) SendMail(EAName,msg);
if(PushNotice == on) SendNotification(msg);
NowSellCount++;
break;
}
}
Sleep(100);
}
return res;
}
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><EFBFBD>{ |
//+------------------------------------------------------------------+
double CalcAutoLot(){
double AutoLot = 0; // <EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>{<EFBFBD>Q<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
double DivideAmt = 0;
// <EFBFBD>kؚh0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T<EFBFBD>{ёM<EFBFBD><EFBFBD>0<EFBFBD>S<EFBFBD>_
double ZCAmount = AccountBalance() + AccountCredit();
// <EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>0<EFBFBD>{<EFBFBD>Q
if(ZCAmount > 0 && LotsIncreaceAmt > 0){
AutoLot = RoundDown(ZCAmount/LotsIncreaceAmt,0)*LotsIncreaceStep;
}else{
AutoLot = 0;
}
// <EFBFBD>{<EFBFBD>QW0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0pen0<EFBFBD><EFBFBD>te
AutoLot = NormalizeDouble(AutoLot,LotStepDigit);
if(AutoLot <= MinLot){
AutoLot = MinLot;
}else if(AutoLot >= MaxLot){
AutoLot = MaxLot;
}
return AutoLot;
}
//+------------------------------------------------------------------+
//| R<EFBFBD>0hcf0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
double RoundDown(double val,int digit){
return ((double)(int)(val * MathPow(10,digit))) / MathPow(10,digit);
}
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt |
//+------------------------------------------------------------------+
bool ClosePosition(int orderP){
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Ype<EFBFBD>[<EFBFBD>
int icount = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u
bool res = false; // OrderClose<EFBFBD>Qt;b<EFBFBD>0$P(u
bool res2 = false; // ,g<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0;b<EFBFBD>0$P(u
string msg = ""; // <EFBFBD><EFBFBD>w<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0,g<EFBFBD>e
bool BuyCloseFlg = false; // <EFBFBD>0<EFBFBD>0<EFBFBD>0zlnn0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool SellCloseFlg = false; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zlnn0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int ErrCode = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// <EFBFBD>s(W<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0g0<EFBFBD>O gW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0peR<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD>0L<EFBFBD>F0
for(icount=OrdersTotal()-1; icount>=0; icount--){
// <EFBFBD>l<EFBFBD>e<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-Nn0<EFBFBD>l<EFBFBD>e<EFBFBD>0x<EFBFBD><EFBFBD>bY0<EFBFBD>0
if(OrderSelect(icount,SELECT_BY_POS,MODE_TRADES) == false){
break; // <EFBFBD>l<EFBFBD>ex<EFBFBD><EFBFBD>bk01YWeW0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtB}<EFBFBD>N
}
// x<EFBFBD><EFBFBD>bW0_0<EFBFBD>l<EFBFBD>en0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0 T<EFBFBD>0<EFBFBD>S<EFBFBD>_W00<EFBFBD>s(W<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0 Th0N<EFBFBD><EFBFBD>W0f0D0j0D0K0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// x<EFBFBD><EFBFBD>bW0_0<EFBFBD>l<EFBFBD>en0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>_W00S0n0EAn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h0N<EFBFBD><EFBFBD>W0f0D0j0D0K0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// !N<EFBFBD>eh0<EFBFBD>0N<EFBFBD><EFBFBD>W0f0D0_04XTn00zln<EFBFBD>Qt<EFBFBD>[<EFBFBD>e
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() != MagicNumber) continue;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD><EFBFBD><EFBFBD>YBf<EFBFBD><EFBFBD>(EA<EFBFBD><EFBFBD><EFBFBD>YK0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>y)<EFBFBD>0<EFBFBD>S<EFBFBD>_
uint StartTime = GetTickCount();
while(true){
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD><EFBFBD><EFBFBD>YK0<EFBFBD>05<EFBFBD>y<EFBFBD><EFBFBD>L}N<EFBFBD>W0_0<EFBFBD>07_6R<EFBFBD>vk0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtB}<EFBFBD>N
if(GetTickCount() - StartTime > 5*1000) {
Print("OrderSend timeout.");
break;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qtg00Nd0x<EFBFBD><EFBFBD>bW0_0<EFBFBD>l<EFBFBD>eL0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if(orderP == OP_BUY && OrderType() == OP_BUY){
// <EFBFBD>Qt-Nk0'YM0O0<EFBFBD>0<EFBFBD>0f0W0~0c0_04XTk0<EFBFBD>PH0f0g<EFBFBD>e<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>_W0<EFBFBD>vW0
RefreshRates();
// c<EFBFBD>[W0_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>0<EFBFBD>0
res = OrderClose(
OrderTicket(), // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
OrderLots(), // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
Bid, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>s(Wn0<EFBFBD>X$P
MaxSlippagePoints, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
clrWhite); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
Nn0<EFBFBD>l<EFBFBD>e<EFBFBD>wpSn0r<EFBFBD><EFBFBD>}v
if(res == true){
BuyCloseFlg = true;
NowBuyCount--;
break;
}else{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01YWeW0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RY0<EFBFBD>0
ErrCode = GetLastError();
Print("<00>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<1A>0ErrorCode=",ErrCode," ,TicketNo=",OrderTicket()," ,CloseRate=",DoubleToString(Bid,Digits)," ,CloseLot=",OrderLots());
if(ErrCode == ERR_INVALID_TICKET) break;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qtg00Nd0x<EFBFBD><EFBFBD>bW0_0<EFBFBD>l<EFBFBD>eL0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
}else if(orderP == OP_SELL && OrderType() == OP_SELL){
// <EFBFBD>Qt-Nk0'YM0O0<EFBFBD>0<EFBFBD>0f0W0~0c0_04XTk0<EFBFBD>PH0f0g<EFBFBD>e<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>_W0<EFBFBD>vW0
RefreshRates();
// c<EFBFBD>[W0_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>0<EFBFBD>0
res = OrderClose(
OrderTicket(), // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
OrderLots(), // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
Ask, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>s(Wn0<EFBFBD><EFBFBD>$P
MaxSlippagePoints, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
clrWhite); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
Nn0<EFBFBD>l<EFBFBD>e<EFBFBD>wpSn0r<EFBFBD><EFBFBD>}v
if(res == true){
SellCloseFlg = true;
NowSellCount--;
break;
}else{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01YWeW0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RY0<EFBFBD>0
ErrCode = GetLastError();
Print("<00>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<EFBFBD>0<1A>0ErrorCode=",ErrCode," ,TicketNo=",OrderTicket()," ,CloseRate=",DoubleToString(Ask,Digits)," ,CloseLot=",OrderLots());
if(ErrCode == ERR_INVALID_TICKET) break;
}
// x<EFBFBD><EFBFBD>bW0_0<EFBFBD>l<EFBFBD>eL0<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>0n0<EFBFBD>NY4XT!kn0<EFBFBD>Qtx0
}else{
break;
}
Sleep(100);
}
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtL0b<EFBFBD>RW0_04XT0T.z<EFBFBD><EFBFBD>w<EFBFBD>0L<EFBFBD>F0
if(BuyCloseFlg == true){
msg = EAName + " : " + Symbol() + " Buy Order Close.";
if(AlertNotice == on) Alert(msg);
if(MailNotice == on) SendMail(EAName,msg);
if(PushNotice == on) SendNotification(msg);
res2 = true;
}
if(SellCloseFlg == true){
msg = EAName + " : " + Symbol() + " Sell Order Close.";
if(AlertNotice == on) Alert(msg);
if(MailNotice == on) SendMail(EAName,msg);
if(PushNotice == on) SendNotification(msg);
res2 = true;
}
return res2;
}
//+------------------------------------------------------------------+
//| TP/SL<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt |
//+------------------------------------------------------------------+
void SetTPandSL(){
bool res = true; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Modify<EFBFBD>Qt;b<EFBFBD>0$P(u
double LimitRate = 0; // TP<EFBFBD>0<EFBFBD>0<EFBFBD>0
double StopRate = 0; // SL<EFBFBD>0<EFBFBD>0<EFBFBD>0
int ErrCode = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int AdjPoint = 0; // <EFBFBD><EFBFBD>te(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe
for(int i=OrdersTotal()-1; i>=0; i--){
if(!OrderSelect(i,SELECT_BY_POS)) continue;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderTakeProfit() == 0 && OrderStopLoss() == 0 && (TPPoints > 0 || SLPoints > 0)){
if(OrderType() == OP_SELL){
if(TPPoints > 0){
LimitRate = OrderOpenPrice() - (TPPoints*Point()); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O<h= }<EFBFBD>[<EFBFBD>O<h - -<EFBFBD><EFBFBD>[$Ppipspe
}else{
LimitRate = 0;
}
if(SLPoints > 0){
StopRate = OrderOpenPrice() + (SLPoints*Point()); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O<h = }<EFBFBD>[<EFBFBD>O<h + -<EFBFBD><EFBFBD>[$Ppipspe
}else{
StopRate = 0;
}
}else if(OrderType() == OP_BUY){
if(TPPoints > 0){
LimitRate = OrderOpenPrice() + (TPPoints*Point()); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O<h= }<EFBFBD>[<EFBFBD>O<h + -<EFBFBD><EFBFBD>[$Ppipspe
}else{
LimitRate = 0;
}
if(SLPoints > 0){
StopRate = OrderOpenPrice() - (SLPoints*Point()); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O<h = }<EFBFBD>[<EFBFBD>O<h - -<EFBFBD><EFBFBD>[$Ppipspe
}else{
StopRate = 0;
}
}else{
continue;
}
LimitRate = NormalizeDouble(LimitRate,Digits); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O<h<EFBFBD>0ck<EFBFBD><EFBFBD>S
StopRate = NormalizeDouble(StopRate ,Digits); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O<h<EFBFBD>0ck<EFBFBD><EFBFBD>S
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD><EFBFBD><EFBFBD>YBf<EFBFBD><EFBFBD>(EA<EFBFBD><EFBFBD><EFBFBD>YK0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>y)<EFBFBD>0<EFBFBD>S<EFBFBD>_
uint StartTime = GetTickCount();
AdjPoint = 0;
while(true){
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD><EFBFBD><EFBFBD>YK0<EFBFBD>05<EFBFBD>y<EFBFBD><EFBFBD>L}N<EFBFBD>W0_0<EFBFBD>07_6R<EFBFBD>vk0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtB}<EFBFBD>N
if(GetTickCount() - StartTime > 5*1000) {
Print("OrderModify timeout.");
break;
}
RefreshRates();
res = OrderModify(OrderTicket(),OrderOpenPrice(),StopRate,LimitRate,OrderExpiration(),clrBlue);
if(res == false){
ErrCode = GetLastError();
Print("TP/SL<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<>0<EFBFBD>0<EFBFBD>0<1A>0ErrorCode=",ErrCode," ,TP=",LimitRate," ,SL=",StopRate);
// TP/SL$PL0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0*g<EFBFBD>nn04XTo0<EFBFBD>_<EFBFBD><EFBFBD>teY0<EFBFBD>0
if(ErrCode == ERR_INVALID_STOPS){
int StopLevel = (int)MarketInfo(Symbol(),MODE_STOPLEVEL);
if(OrderType() == OP_SELL){
if(LimitRate > 0 && (Bid - ((StopLevel+AdjPoint)*Point)) < LimitRate){
LimitRate = Bid - ((StopLevel+AdjPoint)*Point);
}
if(StopRate > 0 && (Ask + ((StopLevel+AdjPoint)*Point)) > StopRate){
StopRate = Ask + ((StopLevel+AdjPoint)*Point);
}
}else if(OrderType() == OP_BUY){
if(LimitRate > 0 && (Ask + ((StopLevel+AdjPoint)*Point)) > LimitRate){
LimitRate = Ask + ((StopLevel+AdjPoint)*Point);
}
if(StopRate > 0 && (Bid - ((StopLevel+AdjPoint)*Point)) < StopRate){
StopRate = Bid - ((StopLevel+AdjPoint)*Point);
}
}
AdjPoint++;
}
}else{
break;
}
Sleep(100);
}
}
}
}
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Y<EFBFBD>c |
//+------------------------------------------------------------------+
datetime ServerToLocalTime(datetime ServerTime){
datetime LocalTime = 0;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0g<EFBFBD><EFBFBD>K0i0F0K0<EFBFBD>0$R<EFBFBD>[W0f00!nU0<EFBFBD>0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD>K0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>{<EFBFBD>Q
if(JudgeDST == on && IsDST(TimeCurrent()) == true){
LocalTime = ServerTime + ((TimeDiff-1)*60*60);
}else{
LocalTime = ServerTime + (TimeDiff*60*60);
}
return LocalTime;
}
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Y<EFBFBD>c ; <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0*g<EFBFBD>na |
//+------------------------------------------------------------------+
datetime ServerToLocalTime_WO_ST(datetime ServerTime){
datetime LocalTime2 = 0;
LocalTime2 = ServerTime + (TimeDiff*60*60);
return LocalTime2;
}
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$R<EFBFBD>[ |
//+------------------------------------------------------------------+
bool IsDST(datetime CurrentTime){
datetime StartDate;
datetime EndDate;
bool DST;
string CurrentYear = (string)(TimeYear(CurrentTime));
if((int)CurrentYear >= 2007 && AccountStandard == USStandard){
StartDate = (datetime)(CurrentYear + ".3." + (string)(14 - TimeDayOfWeek((datetime)(CurrentYear + ".3.14"))));
EndDate = (datetime)(CurrentYear + ".11." + (string)(7 - TimeDayOfWeek((datetime)(CurrentYear + ".11.7"))));
}else{
if(AccountStandard == UKStandard){
StartDate = (datetime)(CurrentYear + ".3." + (string)(31 - TimeDayOfWeek((datetime)(CurrentYear + ".3.31"))));
}else{
StartDate = (datetime)(CurrentYear + ".4." + (string)(7 - TimeDayOfWeek((datetime)(CurrentYear + ".4.7"))));
}
EndDate = (datetime)(CurrentYear + ".10." + (string)(31 - TimeDayOfWeek((datetime)(CurrentYear + ".10.31"))));
}
if(CurrentTime >= StartDate && CurrentTime < EndDate) DST = true;
else DST = false;
return DST;
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Entry_Rule1(int LS)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
if (LS==1 &&((Trend_Judge(Trend_period1_L,Trend_period2_L)>=2 && Kairi_Judge(Trend_period2_L)<= Kairi_Judge_percent1_L )|| Kairi_Judge(Trend_period2_L)<= -Kairi_Judge_percent2_L))
// if ((Trend_Judge()<=1 && Kairi_Judge()>= -Kairi_Judge_percent1 )|| Kairi_Judge()>= Kairi_Judge_percent2)
{
return(1);
} // <EFBFBD>X<EFBFBD>0
else if (LS==2 &&((Trend_Judge(Trend_period1_S,Trend_period2_S)<=1 && Kairi_Judge(Trend_period2_S)>= -Kairi_Judge_percent1_S )|| Kairi_Judge(Trend_period2_S)>= Kairi_Judge_percent2_S))
// if ((Trend_Judge()<=1 && Kairi_Judge()>= -Kairi_Judge_percent1 )|| Kairi_Judge()>= Kairi_Judge_percent2)
{
return(2);
} // <EFBFBD>X<EFBFBD>0
else
{
return(0);
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
}
//+------------------------------------------------------------------+
int Trend_Judge(int period1,int period2)
//int Trend_Judge()
{
double MA_Middle1 = iMA(NULL,PERIOD_H1,period1, 0, MODE_SMA, PRICE_CLOSE, 1);
double MA_Long1 = iMA(NULL,PERIOD_H1,period2, 0, MODE_SMA, PRICE_CLOSE, 1);
double MA_Middle2 = iMA(NULL,PERIOD_H1,period1, 0, MODE_SMA, PRICE_CLOSE, 3);
double MA_Long2 = iMA(NULL,PERIOD_H1,period2, 0, MODE_SMA, PRICE_CLOSE, 3);
int UP_Trend = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>^<EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><EFBFBD>U<EFBFBD><EFBFBD>O
if (MA_Middle1 > MA_Long1)
{
UP_Trend = UP_Trend+1;
}
if (MA_Middle1-MA_Middle2 > 0)
{
UP_Trend = UP_Trend+1;
}
if (MA_Long1-MA_Long2 > 0)
{
UP_Trend = UP_Trend+1;
}
return(UP_Trend);
}
double Kairi_Judge(int period2)
//double Kairi_Judge()
{
// w<EFBFBD>g<EFBFBD>y<EFBFBD>Rs^GW<EFBFBD>}k0<EFBFBD>[W0<EFBFBD>wg<EFBFBD>y<EFBFBD>Rs^GW<EFBFBD>}L00c<EFBFBD>[%<EFBFBD>N
N0
Nk0VN<EFBFBD><EFBFBD>W0_0<EFBFBD>0 0<EFBFBD>X<EFBFBD>0 00 Nk0VN<EFBFBD><EFBFBD>W0_0<EFBFBD>0 0<EFBFBD><EFBFBD>D0 00
double MA1 = iMA(NULL,PERIOD_M5, 3, 0, MODE_SMA, PRICE_CLOSE, 1);
double MA2 = iMA(NULL,PERIOD_H1, period2, 0, MODE_SMA, PRICE_CLOSE, 1);
double Long_Kairi = (MA1-MA2)/iClose(NULL,PERIOD_M5,1)*100;
return(Long_Kairi);
}