gryps2/EA-code/TNK/Akatsuki_XAUUSD_M5.mq4

1411 lines
100 KiB
MQL4
Raw Permalink Normal View History

2025-05-30 14:58:21 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| ZM-S08G.mq4 |
//| Copyright 2024, TNK |
//| https://note.com/tnk_system |
//+------------------------------------------------------------------+
//#property copyright "Copyright 2024, TNK"
//#property link "https://note.com/tnk_system"
#property version "1.0" // AGX<EFBFBD>Q<EFBFBD><EFBFBD>te
#property icon "Akatsuki.ico" // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>0<EFBFBD><EFBFBD>0
#property copyright "Visit product page"
#property link "https://www.mql5.com/ja/market/product/116906?source=Site+Market+Product+Page"
#property strict
#include <stdlib.mqh>
#property description "Currency Pairs | XAUUSD"
#property description "Timeframes | M5"
#property description "GMT | +2/+3 (Dedicated to 5 daily bars)"
#property description "MT4 setting maximum number of bars | 1000 or more"
/*
#property description "<1A><><EFBFBD><EFBFBD>0 : XAUUSD"
#property description "Bf<42><66><EFBFBD><EFBFBD> : M5"
#property description "<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 : <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0"
#property description "<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe : 1"
#property description "!N<>^f0 : !qW0 <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 : !qW0"
#property description "g'YTP/SL : 200/120 pips<08> Y<>f N<EFBFBD>S <EFBFBD>"
#property description "1<>+gca0<61><30>W0 : !qW0"
#property description "12/20~1/3 : <00>e<EFBFBD><65><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0!qW0<57>0zlnn00<7F>[L<>"
#property description "<00>S<EFBFBD>^ : <00>e<EFBFBD><65>5,g<08>GMT<00>Q+2/Y+3 <09>\(u"
*/
//+------------------------------------------------------------------+
//|<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0eQ<EFBFBD>R(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
input int MagicNumber = 100911; // Magic No.
input double MaxSpread_pips = 5.0; // Allowable spread (pips)
enum MM_Select{
Fixed, // 0,Fixed
FreeMargin, // 1,FreeMargin
Balance, // 2,Balance
};
input MM_Select MM_ON = Fixed; // Money Management (0,Fixed/1,FreeMargin/2,Balance)
input double Lots = 1.0; // Lots (Fixed)
input double MM_Risk = 1.0; // Risk% (FreeMargin/Balance)
//input double AllowSpread = 10.0; // 1<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Pips<EFBFBD>0:<EFBFBD><EFBFBD><EFBFBD>R <EFBFBD>
int GMT = 2; // GMT<EFBFBD><EFBFBD>QBf<EFBFBD><EFBFBD> <EFBFBD>
int Summertime = 1; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>1:s|/2:<EFBFBD><EFBFBD>/0:!qW0 <EFBFBD>
//+------------------------------------------------------------------+
//|<EFBFBD>Q<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>pe |
//+------------------------------------------------------------------+
//<EFBFBD>Q<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD>[
string _Comment = "Akatsuki_XAUUSD_M5"; // <EFBFBD><EFBFBD>w(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int Maxposition = 1; // g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int Slippage = 10; // 1<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Point <EFBFBD>
int TakeProfit_pips = 100; // )R<EFBFBD>xc$P<EFBFBD>Pips <EFBFBD>
int StopLoss_pips = 120; // dR<EFBFBD>c$P<EFBFBD>Pips <EFBFBD>
int TakeProfit_pips1 = 50; // )R<EFBFBD>xc$P<EFBFBD>Pips <EFBFBD>
int StopLoss_pips1 = 100; // dR<EFBFBD>c$P<EFBFBD>Pips <EFBFBD>
int TakeProfit_pips2 = 200; // )R<EFBFBD>xc$P<EFBFBD>Pips <EFBFBD>
int StopLoss_pips2 = 120; // dR<EFBFBD>c$P<EFBFBD>Pips <EFBFBD>
bool WeekendTrade = false; // 1<EFBFBD>+g<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool Monday0Trade = false; // gg<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool YearendClose = true; // 12/24~1/3<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0AhT<EFBFBD>0[0<EFBFBD>0Bf<EFBFBD><EFBFBD>6R<EFBFBD>_(u
double xpoint;
int xTime, xxTime, xxxTime, yTime;
//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>
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 = 4; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zlnBf<EFBFBD><EFBFBD>
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 = 1; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD><EFBFBD>YBf<EFBFBD><EFBFBD>1
int EntryOK_EndTime1 = 1; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01B}<EFBFBD>NBf<EFBFBD><EFBFBD>1
int EntryOK_StartTime2 = 22; // <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>
bool Development = false; // <EFBFBD><EFBFBD>zv<EFBFBD>0<EFBFBD>0<EFBFBD>0ON/OFF<EFBFBD>OnTesterkk0RFh<EFBFBD>:y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:y <EFBFBD>
int Mode1 = 0; // ATR<EFBFBD>0<EFBFBD>0<EFBFBD>0R<EFBFBD>f_0:hQ<EFBFBD><EFBFBD>/1:NO<EFBFBD>0<EFBFBD>0/2:ؚ<EFBFBD>0<EFBFBD>0
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
//+------------------------------------------------------------------+
//|<EFBFBD>O)R_j<EFBFBD><EFBFBD><EFBFBD>| |
//+------------------------------------------------------------------+
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>V<EFBFBD>[(u
string SYMBOL1 = "XAUUSD"; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 T<EFBFBD>-<EFBFBD>6<EFBFBD>eW[ <EFBFBD>
string SYMBOL2 = "GOLD"; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 T<EFBFBD>-<EFBFBD>4<EFBFBD>eW[ <EFBFBD>
int Chart_TimeFrame = PERIOD_M5; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// <<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int aCmd = 0;
// DPI<EFBFBD>c<EFBFBD>{
double DPIAdjust;
//+------------------------------------------------------------------+
//|<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
//<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 WPR_Period1 = 42; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0%Rg<EFBFBD><EFBFBD>1
int WPR_Line1 = -97; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
int WPR_Ex_Line1 = -93; // 0<EFBFBD><EFBFBD>D0\<EFBFBD>zln0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
int WPR_Period2 = 14; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0%Rg<EFBFBD><EFBFBD>2
int WPR_Line2 = -97; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02
int WPR_Ex_Line2 = -90; // 0<EFBFBD><EFBFBD>D0\<EFBFBD>zln0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02
int RSI_Period1 = 8; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00RSIg<EFBFBD><EFBFBD>1
int RSI_Line1 = 72; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00RSI<EFBFBD>0<EFBFBD>0<EFBFBD>01
int RSI_Ex_Line1 = 68; // 0<EFBFBD><EFBFBD>D0\<EFBFBD>zln0RSI<EFBFBD>0<EFBFBD>0<EFBFBD>01
int RSI_Period2 = 8; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00RSIg<EFBFBD><EFBFBD>2
int RSI_Line2 = 73; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00RSI<EFBFBD>0<EFBFBD>0<EFBFBD>02
int RSI_Ex_Line2 = 67; // 0<EFBFBD><EFBFBD>D0\<EFBFBD>zln0RSI<EFBFBD>0<EFBFBD>0<EFBFBD>02
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int Gap_Pips = 1; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01|1,gMR<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>B}$Ph0<EFBFBD>s(W<EFBFBD>O<hn0<EFBFBD>]pips
double ATR_D14;
ENUM_TIMEFRAMES ATR_TF = PERIOD_D1;
int ATR_PERIOD = 14;
double ALim = 21.0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03\<EFBFBD>ATR15Low
ENUM_TIMEFRAMES MA_TF_buy1 = PERIOD_M30; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00MA<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
int MA_Period_buy1 = 50; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00MAg<EFBFBD><EFBFBD>1
ENUM_TIMEFRAMES MA_TF_sell1 = PERIOD_M30; // 0<EFBFBD>X<EFBFBD>0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00MA<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
int MA_Period_sell1 = 60; // 0<EFBFBD>X<EFBFBD>0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00MAg<EFBFBD><EFBFBD>1
ENUM_TIMEFRAMES MA_TF_buy2 = PERIOD_D1; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00MA<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02
int MA_Period_buy2 = 70; // 0<EFBFBD><EFBFBD>D0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00MAg<EFBFBD><EFBFBD>2
ENUM_TIMEFRAMES MA_TF_sell2 = PERIOD_D1; // 0<EFBFBD>X<EFBFBD>0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00MA<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02
int MA_Period_sell2 = 100; // 0<EFBFBD>X<EFBFBD>0\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00MAg<EFBFBD><EFBFBD>2
ENUM_TIMEFRAMES SD_TF1 = PERIOD_D1; // 0qQ<EFBFBD>\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00SD<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
int SD_Period1 = 20; // 0qQ<EFBFBD>\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00SDg<EFBFBD><EFBFBD>1
double SD_Value1 = 33.0; // 0qQ<EFBFBD>\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00SD$P1
int SDx_count1 = 1; // 0qQ<EFBFBD>\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00SD<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0,gpe1
ENUM_TIMEFRAMES SD_TF2 = PERIOD_D1; // 0qQ<EFBFBD>\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00SD<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02
int SD_Period2 = 20; // 0qQ<EFBFBD>\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00SDg<EFBFBD><EFBFBD>2
double SD_Value2 = 100.0; // 0qQ<EFBFBD>\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00SD$P2
int SDx_count2 = 1; // 0qQ<EFBFBD>\<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00SD<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0,gpe2
//zln<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype
int ExTime1 = 8; // 0qQ<EFBFBD>\<EFBFBD>zln07_6RzlnBf;R1
int ExMinute1 = 0; // 0qQ<EFBFBD>\<EFBFBD>zln07_6RzlnR1
int ExTime2 = 4; // 0qQ<EFBFBD>\<EFBFBD>zln07_6RzlnBf;R2
int ExMinute2 = 0; // 0qQ<EFBFBD>\<EFBFBD>zln07_6RzlnR2
int RSI_Margin_Ex_buy = 30; // 0<EFBFBD><EFBFBD>D0\<EFBFBD>zln0RSI<EFBFBD>]
int RSI_Margin_Ex_sell = 27; // 0<EFBFBD>X<EFBFBD>0\<EFBFBD>zln0RSI<EFBFBD>]
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| tester function |
//+------------------------------------------------------------------+
double OnTester()
{
// OnTesterk0h<EFBFBD>:y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0\<EFBFBD><EFBFBD>R<EFBFBD>s0
if (Development == true)
{
// <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));
}
return(0);
}
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//+------------------------------------------------------------------+
// \pe<EFBFBD>p<EFBFBD>N Nn0Ahpek0<EFBFBD>_X0f0Pipsn0$P<EFBFBD>0<EFBFBD><EFBFBD>teY0<EFBFBD>0
xpoint = Point();
if (Digits() == 2 || Digits() == 5)
{
xpoint = xpoint * 10;
}
else if (Digits() == 3)
{
xpoint = xpoint * 100;
}
//+------------------------------------------------------------------+
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0R<EFBFBD>0<EFBFBD>fH0
if (BacktestMode == true)
{
EntryOK_StartTime1 = 1;
}
//+------------------------------------------------------------------+
// g'YSL<EFBFBD>{<EFBFBD>Q<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>)Rn0<EFBFBD><EFBFBD>{g0O(u <EFBFBD>
TakeProfit_pips = MathMax(TakeProfit_pips1, TakeProfit_pips2);
StopLoss_pips = MathMax(StopLoss_pips1, StopLoss_pips2);
//+------------------------------------------------------------------+
// <EFBFBD><EFBFBD>zv<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>XBfo0falsek0 <EFBFBD>
if (Development) HideTestIndicators(false);// O(uW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:yY0<EFBFBD>0
else HideTestIndicators(true);// O(uW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>h<EFBFBD>:yk0Y0<EFBFBD>0
//+------------------------------------------------------------------+
// DPI<EFBFBD>c<EFBFBD>{
double USERdpi = TerminalInfoInteger(TERMINAL_SCREEN_DPI);
double DevPCdpi = 144;
DPIAdjust = USERdpi / DevPCdpi;
//+------------------------------------------------------------------+
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>R Y<EFBFBD>f<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>rKah<EFBFBD>:y
if (!IsTesting())
{
ChartSet(); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>R Y<EFBFBD>f
ChartComment(); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
}
//+------------------------------------------------------------------+
return(0);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
if (!IsTesting())
{
ObjectsDeleteAll();
ChartSetInteger(0,CHART_COLOR_CHART_UP,clrLime);
ChartSetInteger(0,CHART_COLOR_CHART_DOWN,clrLime);
ChartSetInteger(0,CHART_COLOR_CHART_LINE,clrLime);
Comment("");
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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>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>0<EFBFBD><EFBFBD><EFBFBD>R Y<EFBFBD>f<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>rKah<EFBFBD>:y
if (!IsTesting())
{
ChartComment(); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
}
//+------------------------------------------------------------------+
// g2<EFBFBD>bk
if (IsTesting()) ObjectsDeleteAll(0, "#");
//+------------------------------------------------------------------+
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| ܈ck<EFBFBD><EFBFBD>pe |
//+------------------------------------------------------------------+
void GetSummertimeShift()
{
int MON, SUN_day, xGMT;
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>
xxxTime = TimeHour(TimeCurrent()) - (GMT - 2 + summertime_shift); // <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>{B0<EFBFBD>0 <EFBFBD>
yTime = TimeMinute(TimeCurrent()); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0R
gmtadjusted = TimeCurrent() - 60 * 60 * xGMT;
// <EFBFBD>e,gBf<EFBFBD><EFBFBD>
if (xTime < 0)
{
xTime = xTime + 24;
}
else if (xTime > 23)
{
xTime = xTime - 24;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD>
if (xxTime < 0)
{
xxTime = xxTime + 24;
}
else if (xxTime > 23)
{
xxTime = xxTime - 24;
}
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0B0<EFBFBD>0 <EFBFBD>
if (xxxTime < 0)
{
xxxTime = xxxTime + 24;
}
else if (xxxTime > 23)
{
xxxTime = xxxTime - 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
&& WeekendTrade == 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>
&& WeekendTrade == false)
||
(xxTime <= 1 && TimeDayOfWeek(TimeCurrent()) == 1 && Monday0Trade == false) // gg<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
)
{
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;
// <EFBFBD>Y$PK0<EFBFBD>0c<EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n00$R<EFBFBD>[
if(Volume[0] <= 10)
{
// @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;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>,gpe
int OOCC = 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>,gpeL01,g*g<EFBFBD>nj0<EFBFBD>00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
int OrderOpenCandleCount = iBarShift(NULL, 0, OrderOpenTime());
if (OrderOpenCandleCount == 0) continue;
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 &&
( (Exit2(false, OOCC) == 2 && Ask - Bid <= MaxSpread_pips * xpoint)
|| (Exit2(false, OOCC) == 2 && Ask - Bid > MaxSpread_pips * xpoint && profit > 0)
|| PositionClose == true
)
)
{
res = OrderClose(OrderTicket(), OrderLots(), Bid, NULL, Green);
}
}
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 &&
( (Exit1(true, OOCC) == 1 && Ask - Bid <= MaxSpread_pips * xpoint)
|| (Exit1(true, OOCC) == 1 && Ask - Bid > MaxSpread_pips * xpoint && profit > 0)
|| PositionClose == true
)
)
{
res = OrderClose(OrderTicket(), OrderLots(), Ask, NULL, Green);
}
}
} // @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>Y$PK0<EFBFBD>0c<EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n00$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 PositionOpen()
{
int i, j;
int ticket;
int CountBuy = 0,CountSell = 0;
bool res;
int OOCC = 0;
int OrderOpen_BarCount_buy = 1; // 0k0Y0<EFBFBD>0h00e\tk!qD0h0M0k0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0j0D0_0<EFBFBD>00<EFBFBD>Nn0$P<EFBFBD>0Rg$Pk0Y0<EFBFBD>0
int OrderOpen_BarCount_sell = 1;
int OrderClose_BarCount_buy = 1;
int OrderClose_BarCount_sell = 1;
// <EFBFBD>Y$PK0<EFBFBD>0c<EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n00$R<EFBFBD>[
if(Volume[0] <= 5)
{
// <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;
}
aCmd = OrderType();
} // <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>
// gB}zlnK0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>,gpe<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for(j=OrdersHistoryTotal()-1; j>=0; j--)
{
//<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( j, SELECT_BY_POS, MODE_HISTORY ) == 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;
//gB}zlnK0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>,gpe
if (OrderType() == OP_BUY) // <EFBFBD><EFBFBD>D0n04XT
{
OrderOpen_BarCount_buy = iBarShift(NULL, 0, OrderOpenTime());
OrderClose_BarCount_buy = iBarShift(NULL, 0, OrderCloseTime());
if (OrderClose_BarCount_buy != -1) break; // N<EFBFBD>^gB}zln<EFBFBD>0<EFBFBD>b<EFBFBD>QW0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>0
}
if (OrderType() == OP_SELL) // <EFBFBD>X<EFBFBD>0n04XT
{
OrderOpen_BarCount_sell = iBarShift(NULL, 0, OrderOpenTime());
OrderClose_BarCount_sell = iBarShift(NULL, 0, OrderCloseTime());
if (OrderClose_BarCount_sell != -1) break; // N<EFBFBD>^gB}zln<EFBFBD>0<EFBFBD>b<EFBFBD>QW0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>0
}
} // gB}zlnK0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>,gpe<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
ATR_D14 = iATR(NULL, ATR_TF, ATR_PERIOD, 1);
if (ATR_D14 < ALim)
{
TakeProfit_pips = TakeProfit_pips1;
StopLoss_pips = StopLoss_pips1;
}
else if (ATR_D14 >= ALim)
{
TakeProfit_pips = TakeProfit_pips2;
StopLoss_pips = StopLoss_pips2;
}
// <<EFBFBD><EFBFBD> N<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>S<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if (EquityCheck())
{
// <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
&& GMT_Kadou_NG == false
&& Logic1_Time == true
&& Buy_Entry == true
&& Exit2(false, OOCC) != 2 // <EFBFBD><EFBFBD>D0zln<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0!qW0
)
{
ticket = OrderSend(Symbol(),
OP_BUY,
CalculateLots(MM_Risk, StopLoss_pips),
Ask,
Slippage,
Ask - StopLoss_pips * xpoint,
Ask + TakeProfit_pips * xpoint,
_Comment,
MagicNumber,
0,
Blue);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L01YWeg0B0<EFBFBD>0p00TPSL<EFBFBD>0RrRW0f0<EFBFBD>l<EFBFBD>eY0<EFBFBD>0
if (ticket == -1)
{
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 )
{
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() - StopLoss_pips * xpoint,
OrderOpenPrice() + TakeProfit_pips * xpoint,
0, MediumSeaGreen);
}
}
}
}
else if (Entry(false) == 2 // <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
&& CountBuy == 0
&& CountSell < Maxposition
&& GMT_Kadou_NG == false
&& Logic1_Time == true
&& Sell_Entry == true
&& Exit1(true, OOCC) != 1 // <EFBFBD>X<EFBFBD>0zln<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0!qW0
)
{
ticket = OrderSend(Symbol(),
OP_SELL,
CalculateLots(MM_Risk, StopLoss_pips),
Bid,
Slippage,
Bid + StopLoss_pips * xpoint,
Bid - TakeProfit_pips * xpoint,
_Comment,
MagicNumber,
0,
Red);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L01YWeg0B0<EFBFBD>0p00TPSL<EFBFBD>0RrRW0f0<EFBFBD>l<EFBFBD>eY0<EFBFBD>0
if (ticket == -1)
{
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 )
{
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() + StopLoss_pips * xpoint,
OrderOpenPrice() - TakeProfit_pips * xpoint,
0, MediumSeaGreen);
}
}
}
}
}
} // <EFBFBD>Y$PK0<EFBFBD>0c<EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n00$R<EFBFBD>[<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
}
//+------------------------------------------------------------------+
bool EquityCheck()
{
// <<EFBFBD><EFBFBD> N<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>S<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double usedMoney = AccountEquity() - AccountFreeMarginCheck(Symbol(), aCmd, CalculateLots(MM_Risk, StopLoss_pips));
if (!(
(AccountStopoutMode() == 0 && usedMoney > 0.0 && (AccountEquity() / usedMoney) * 100 <= AccountStopoutLevel())
|| (AccountStopoutMode() == 0 && usedMoney > 0.0 && AccountFreeMarginCheck(Symbol(), aCmd, CalculateLots(MM_Risk, StopLoss_pips)) <= 0)
|| (AccountStopoutMode() == 1 && AccountFreeMarginCheck(Symbol(), aCmd, CalculateLots(MM_Risk, StopLoss_pips)) <= AccountStopoutLevel())
)
&& IsTradeAllowed() == true) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>S$R<EFBFBD>[
{
return(true);
}
else return(false);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| TakeProfit, StopLoss |
//+------------------------------------------------------------------+
void SetTPSL()
{
int i;
double profit;
bool res;
// <EFBFBD>Y$PK0<EFBFBD>0c<EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n00$R<EFBFBD>[
if(Volume[0] <= 1)
{
// <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;
ATR_D14 = iATR(NULL, ATR_TF, ATR_PERIOD, 1);
if (ATR_D14 < ALim)
{
TakeProfit_pips = TakeProfit_pips1;
StopLoss_pips = StopLoss_pips1;
}
else if (ATR_D14 >= ALim)
{
TakeProfit_pips = TakeProfit_pips2;
StopLoss_pips = StopLoss_pips2;
}
// <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>Y$PK0<EFBFBD>0c<EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n00$R<EFBFBD>[<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD>
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <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 credit; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
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
freemargin = AccountFreeMargin();
balance = AccountBalance();
credit = AccountCredit();
tickvalue = MarketInfo(NULL, MODE_TICKVALUE);
lotstep = MarketInfo(NULL, MODE_LOTSTEP);
maxlots = MarketInfo(NULL, MODE_MAXLOT);
minlots = MarketInfo(NULL, MODE_MINLOT);
// <EFBFBD>)R_j<EFBFBD><EFBFBD><EFBFBD>0O<EFBFBD>0j0D04XT0LotsK0<EFBFBD>0<EFBFBD>OckU0<EFBFBD>0_0lotsize<EFBFBD>0ԏY0
int step = (int)MathAbs(MathLog10(MarketInfo(Symbol(), MODE_LOTSTEP)));
lotsize = NormalizeDouble(Lots, (int)step); //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0g0<EFBFBD>Vhc<EFBFBD>NeQ
lotsize = MathMax(minlots, MathMin(maxlots, lotsize)); //g\<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>N Nj0<EFBFBD>0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0k00g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>N
Nj0<EFBFBD>0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0k0<EFBFBD>Ock
if (MM_ON == Fixed) return(lotsize);
// tickvalueo0pipsg0o0j0O0pointj0n0g00\pe<EFBFBD>p<EFBFBD>N Nn0Ahpek0<EFBFBD>_X0f0܈ckY0<EFBFBD>0
if (StringSubstr(Symbol(), 0, 6) == "XAUUSD" || StringSubstr(Symbol(), 0, 4) == "GOLD")
{
if (Digits() == 2)
tickvalue = tickvalue * 10;
else if (Digits() == 3)
tickvalue = tickvalue * 100;
}
else if (!(StringSubstr(Symbol(), 0, 6) == "XAUUSD" || StringSubstr(Symbol(), 0, 4) == "GOLD"))
{
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>
}*/
else if (MM_ON == Balance) // <EFBFBD>+<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>e_
{
lotsize = ((balance + credit) * 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 credit; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
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
freemargin = AccountFreeMargin();
balance = AccountBalance();
credit = AccountCredit();
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);
// <EFBFBD>)R_j<EFBFBD><EFBFBD><EFBFBD>0O<EFBFBD>0j0D04XT0LotsK0<EFBFBD>0<EFBFBD>OckU0<EFBFBD>0_0lotsize<EFBFBD>0ԏY0
int step = (int)MathAbs(MathLog10(MarketInfo(Symbol(), MODE_LOTSTEP)));
lotsize = NormalizeDouble(Lots, step); //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0g0<EFBFBD>Vhc<EFBFBD>NeQ
lotsize = MathMax(minlots, MathMin(maxlots, lotsize)); //g\<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>N Nj0<EFBFBD>0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0k00g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>N
Nj0<EFBFBD>0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0k0<EFBFBD>Ock
if (MM_ON == Fixed) return(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)
if (StringSubstr(Symbol(), 0, 6) == "XAUUSD" || StringSubstr(Symbol(), 0, 4) == "GOLD")
{
conv = 1000;
if (AccountCurrency() == "JPY")
conv = 100000;
tickvalue = lotamount / 10000 * conv;
}
else if (!(StringSubstr(Symbol(), 0, 6) == "XAUUSD" || StringSubstr(Symbol(), 0, 4) == "GOLD"))
{
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>
}*/
else if (MM_ON == Balance) // <EFBFBD>+<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>e_
{
lotsize = ((balance + credit) * 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)
)
{
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)
)
{
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, int OOCC)
{
if (Exit_Rule1(isbuy, OOCC) == 3 && Exit_Rule2(isbuy, OOCC) == 3 && Exit_Rule3(isbuy, OOCC) == 3
&& Exit_Rule4(isbuy, OOCC) == 3 && Exit_Rule5(isbuy, OOCC) == 3)
{
return(0);
}
else if (Exit_Rule1(isbuy, OOCC) == 1)
{
return(1);
}
else if (Exit_Rule2(isbuy, OOCC) == 1)
{
return(1);
}
else if (Exit_Rule3(isbuy, OOCC) == 1)
{
return(1);
}
else if (Exit_Rule4(isbuy, OOCC) == 1)
{
return(1);
}
else if (Exit_Rule5(isbuy, OOCC) == 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, int OOCC)
{
if (Exit_Rule1(isbuy, OOCC) == 3 && Exit_Rule2(isbuy, OOCC) == 3 && Exit_Rule3(isbuy, OOCC) == 3
&& Exit_Rule4(isbuy, OOCC) == 3 && Exit_Rule5(isbuy, OOCC) == 3)
{
return(0);
}
else if (Exit_Rule1(isbuy, OOCC) == 2)
{
return(2);
}
else if (Exit_Rule2(isbuy, OOCC) == 2)
{
return(2);
}
else if (Exit_Rule3(isbuy, OOCC) == 2)
{
return(2);
}
else if (Exit_Rule4(isbuy, OOCC) == 2)
{
return(2);
}
else if (Exit_Rule5(isbuy, OOCC) == 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, (ATR_D14 < ALim? RSI_Period1 : RSI_Period2), PRICE_CLOSE, 1);
double RSI2 = iRSI(NULL, PERIOD_M5, (ATR_D14 < ALim? RSI_Period1 : RSI_Period2), 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, (ATR_D14 < ALim? WPR_Period1 : WPR_Period2), 1);
double WPR2 = iWPR(NULL, PERIOD_M5, (ATR_D14 < ALim? WPR_Period1 : WPR_Period2), 2);
if ( isbuy == true && Logic1_Time == true //&& LowerBB20_1 >= Close[1]
&& (RSI1 <= 100 - (ATR_D14 < ALim? RSI_Line1 : RSI_Line2)
|| WPR1 <= (ATR_D14 < ALim? WPR_Line1 : WPR_Line2))
)
{
return(1);
} // <EFBFBD><EFBFBD>D0
if ( isbuy == false && Logic1_Time == true //&& UpperBB20_1 <= Close[1]
&& (RSI1 >= (ATR_D14 < ALim? RSI_Line1 : RSI_Line2)
|| WPR1 >= -100 - (ATR_D14 < ALim? WPR_Line1 : WPR_Line2))
)
{
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
double spread = MarketInfo(NULL, MODE_SPREAD);
if (StringSubstr(Symbol(), 0, 6) == "XAUUSD" || StringSubstr(Symbol(), 0, 4) == "GOLD") // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0AhT<EFBFBD>0[0
{
if (Digits() == 2) spread /= 10.0;
else if (Digits() == 3) spread /= 100.0;
}
else if (!(StringSubstr(Symbol(), 0, 6) == "XAUUSD" || StringSubstr(Symbol(), 0, 4) == "GOLD")) // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>NYAhT<EFBFBD>0[0
{
if (Digits == 3 || Digits == 5) spread /= 10.0;
}
if (spread > MaxSpread_pips) return(0);
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>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<EFBFBD><EFBFBD>X<EFBFBD>0o0<EFBFBD> <EFBFBD>
if(isbuy == true && Close[0] - Close[1] >= Gap_Pips * xpoint) return(0);
if(isbuy == false && Close[1] - Close[0] >= Gap_Pips * xpoint) return(0);
//t^+gt^<EFBFBD>Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//12/20~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 >= 20) || (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>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
//<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>ATRL0<EFBFBD>W<EFBFBD>n$P<EFBFBD>0<EFBFBD><EFBFBD>H0_0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>ybk
if (Mode1 == 1)
{
if (ATR_D14 >= ALim) return(0);
}
if (Mode1 == 2)
{
if (ATR_D14 < ALim) return(0);
}
//<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
// MA<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// c<EFBFBD>[MA<EFBFBD>0<EFBFBD>0 Nj0<EFBFBD>0<EFBFBD><EFBFBD>D0 N<EFBFBD>S0
Nj0<EFBFBD>0<EFBFBD>X<EFBFBD>0 N<EFBFBD>S
double MA11_buy = iMA(NULL, (ATR_D14 < ALim? MA_TF_buy1 : MA_TF_buy2), (ATR_D14 < ALim? MA_Period_buy1 : MA_Period_buy2), 0, MODE_SMA, PRICE_CLOSE, 1);
double MA12_buy = iMA(NULL, (ATR_D14 < ALim? MA_TF_buy1 : MA_TF_buy2), (ATR_D14 < ALim? MA_Period_buy1 : MA_Period_buy2), 0, MODE_SMA, PRICE_CLOSE, 2);
double MA11_sell = iMA(NULL, (ATR_D14 < ALim? MA_TF_sell1 : MA_TF_sell2), (ATR_D14 < ALim? MA_Period_sell1 : MA_Period_sell2), 0, MODE_SMA, PRICE_CLOSE, 1);
double MA12_sell = iMA(NULL, (ATR_D14 < ALim? MA_TF_sell1 : MA_TF_sell2), (ATR_D14 < ALim? MA_Period_sell1 : MA_Period_sell2), 0, MODE_SMA, PRICE_CLOSE, 2);
if (isbuy == true && Close[1] < MA11_buy)
{
return(0);
} // <EFBFBD><EFBFBD>D0<EFBFBD>ybk
if (isbuy == false && Close[1] > MA11_sell)
{
return(0);
} // <EFBFBD>X<EFBFBD>0<EFBFBD>ybk
//<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
// SDn0$PL0N<EFBFBD>[<EFBFBD>N
Nj0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>ybk
for (int SDx_buy1=1; SDx_buy1<=(ATR_D14 < ALim? SDx_count1 : SDx_count2); SDx_buy1++)
{
double StdDev_buy1 = iStdDev(NULL, (ATR_D14 < ALim? SD_TF1 : SD_TF2), (ATR_D14 < ALim? SD_Period1 : SD_Period2), 0, MODE_SMA, PRICE_CLOSE, 1);
if (StdDev_buy1 >= (ATR_D14 < ALim? SD_Value1 : SD_Value2)) return(0);
}
//<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
//<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);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Exit_Rule1(bool isbuy, int OOCC)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>01
//WPRL0c<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, (ATR_D14 < ALim? WPR_Period1 : WPR_Period2), 1);
// WPRL0c<EFBFBD>[<EFBFBD>N
Nk0j0c0_0<EFBFBD>0<EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln
if (WPR1 >= - 100 - (ATR_D14 < ALim? WPR_Ex_Line1 : WPR_Ex_Line2))
{
return(2);
}
else if (WPR1 <= (ATR_D14 < ALim? WPR_Ex_Line1 : WPR_Ex_Line2))
{
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, int OOCC)
{
// 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, (ATR_D14 < ALim? RSI_Period1 : RSI_Period2), PRICE_CLOSE, 1);
double RSI2 = iRSI(NULL, PERIOD_M5, (ATR_D14 < ALim? RSI_Period1 : RSI_Period2), PRICE_CLOSE, 2);
// RSIL0c<EFBFBD>[<EFBFBD>N
Nk0j0c0_0<EFBFBD>0<EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln
if (
(RSI1 >= (ATR_D14 < ALim? RSI_Ex_Line1 : RSI_Ex_Line2))
|| (OOCC > 1 && RSI2 - RSI1 > RSI_Margin_Ex_buy)
)
{
return(2);
}
else if (
(RSI1 <= 100 - (ATR_D14 < ALim? RSI_Ex_Line1 : RSI_Ex_Line2))
||(OOCC > 1 && RSI1 - RSI2 > RSI_Margin_Ex_sell)
)
{
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, int OOCC)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>03
// Bf<EFBFBD><EFBFBD>zln\<EFBFBD>c<EFBFBD>[Bf<EFBFBD>NM<EFBFBD>zln0<EFBFBD>N<EFBFBD>Pg0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD>S<EFBFBD><EFBFBD>Bf<EFBFBD><EFBFBD><EFBFBD>NMRg0zln
if ((xxTime == (ATR_D14 < ALim? ExTime1 : ExTime2) && yTime >= (ATR_D14 < ALim? ExMinute1 : ExMinute2))
|| ( xxTime > (ATR_D14 < ALim? ExTime1 : ExTime2) && xxTime < EntryOK_StartTime2)
)
{
PositionClose = true;
}
else
{
PositionClose = false;
}
// 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, int OOCC)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>04
// <EFBFBD>tPn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>Q_0<EFBFBD>0zln
if (Entry(true) == 1)
{
return(1);
}
if (Entry(false) == 2)
{
return(2);
}
// 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, int OOCC)
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>05
// zln<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><EFBFBD><EFBFBD>R<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>RgS<EFBFBD>] z <EFBFBD> |
//+------------------------------------------------------------------+
void ChartSet()
{
// lM<EFBFBD>$P7_6Rh<EFBFBD>:y&<EFBFBD><EFBFBD><EFBFBD>RR<EFBFBD>f
int chartWidth = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0E^n0<EFBFBD><EFBFBD>{
int textWidth = 200;//StringLen(WindowExpertName()) * 12; // <EFBFBD>V<EFBFBD>[$Ppx~0_0o0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0E^n0<EFBFBD><EFBFBD>{
double ShiftPer = textWidth * 100 / chartWidth;
if (!IsTesting())
{
if (StringSubstr(Symbol(), 0, 6) != SYMBOL1 || Period() != Chart_TimeFrame)
{
SymbolSelect(SYMBOL1 + StringSubstr(Symbol(), 6, StringLen(Symbol())), true);
ChartSetSymbolPeriod(0, SYMBOL1 + StringSubstr(Symbol(), 6, StringLen(Symbol())), Chart_TimeFrame);
}
// <EFBFBD>s(Wn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L04<EFBFBD>eW[n04XT0!qW0j0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if (StringSubstr(Symbol(), 0, 4) != SYMBOL2 || Period() != Chart_TimeFrame)
{
SymbolSelect(SYMBOL2 + StringSubstr(Symbol(), StringSubstr(Symbol(), 0, 4) == SYMBOL2? 4 : 6, StringLen(Symbol())), true);
ChartSetSymbolPeriod(0, SYMBOL2 + StringSubstr(Symbol(), StringSubstr(Symbol(), 0, 4) == SYMBOL2? 4 : 6, StringLen(Symbol())), Chart_TimeFrame);
}
ChartSetInteger(0, CHART_SHIFT, true);
ChartSetDouble(0, CHART_SHIFT_SIZE, ShiftPer);
ChartSetInteger(0, CHART_AUTOSCROLL, true);
ChartSetInteger(0, CHART_FOREGROUND, false);
ChartSetInteger(0, CHART_SHOW_GRID, false);
ChartSetInteger(0, CHART_SHOW_ONE_CLICK, false);
ChartSetInteger(0, CHART_SHOW_OHLC, false);
ChartSetInteger(0, CHART_SHOW_PERIOD_SEP, true);
ChartSetInteger(0, CHART_SCALE, 3);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:y |
//+------------------------------------------------------------------+
void ChartComment()
{
string LotsComment;
if (MM_ON == Fixed) LotsComment = DoubleToStr(Lots,2);
else LotsComment = DoubleToStr(CalculateLots(MM_Risk, StopLoss_pips),2) +
" (" + DoubleToStr(MM_Risk,1) +"%)";
string Comment0 = "Magic= " + (string)MagicNumber;
string Comment1 = "Lots= " + LotsComment;
string Comment2 = "MM= " + (MM_ON == 0 ? "Fixed" : MM_ON == 1 ? "FreeMargin" : "Balance");
string Comment3 = "Spread= " + DoubleToStr(MaxSpread_pips,1);
CommentLabel("ComObj0", Comment0, 4, 20, 8, clrWhite);
CommentLabel("ComObj1", Comment1, 4, 38, 8, clrWhite);
CommentLabel("ComObj2", Comment2, 4, 56, 8, clrWhite);
CommentLabel("ComObj3", Comment3, 4, 74, 8, clrWhite);
}
//+------------------------------------------------------------------+
void CommentLabel(string ComName, string ComText, int ComPos_x, int ComPos_y, int ComSize, color ComClr= clrBlack)
{
ComPos_x = (int)NormalizeDouble(ComPos_x * DPIAdjust, 0); // %R<EFBFBD>DPI<EFBFBD>c<EFBFBD>{<EFBFBD>0<EFBFBD>0<EFBFBD>0g0<EFBFBD><EFBFBD>te
ComPos_y = (int)NormalizeDouble(ComPos_y * DPIAdjust, 0); // %R<EFBFBD>DPI<EFBFBD>c<EFBFBD>{<EFBFBD>0<EFBFBD>0<EFBFBD>0g0<EFBFBD><EFBFBD>te
ObjectCreate(ComName, OBJ_LABEL, 0, 0, 0);
ObjectSetString (0, ComName, OBJPROP_TEXT, ComText);
ObjectSetInteger(0, ComName, OBJPROP_XDISTANCE, ComPos_x);
ObjectSetInteger(0, ComName, OBJPROP_YDISTANCE, ComPos_y);
ObjectSetInteger(0, ComName, OBJPROP_FONTSIZE, ComSize);
ObjectSetInteger(0, ComName, OBJPROP_COLOR, ComClr);
ObjectSetString (0, ComName, OBJPROP_FONT, "Segoe UI");
ObjectSetInteger(0, ComName, OBJPROP_BACK, true);
ObjectSetInteger(0, ComName, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, ComName, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, ComName, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
}
//+------------------------------------------------------------------+