gryps2/UI-code/T-046_Slippage_Latency.txt

1887 lines
136 KiB
Text
Raw Permalink Normal View History

2025-05-30 14:58:21 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0%R0g0<67>fM0<4D><30>0<08>TP/SL<00>[<5B>_ <09> |
//+------------------------------------------------------------------+
// T<08>,n(u<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input bool Measurement = true; // <08>,n<>0<EFBFBD>0csv\Ob<08><>[L<><4C>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0I{ <09>
int err, fp;
string filename;
double OSpread, CSpread;
uint StartOrderTimestamp, OrderCloseTimestamp;
double Order_Price, Close_Price;
double Open_Yakujyou_Price, Close_Yakujou_Price;
double Open_Spread, Close_Spread;
double Open_Slippage, Close_Slippage;
uint OpenLatency, CloseLatency;
double profitpips;
string Timeframe = (Period() == 1? "M1": Period() == 5? "M5": Period() == 15? "M15": Period() == 30? "M30":
Period() == 60? "H1": Period() == 240? "H4": Period() == 1440? "D1": Period() == 10080? "W1": "MN1");
string Open_Type, Close_Type;
datetime OrderCloseTime_bak = 0, OrderOpenTime_bak = 0;
int V0;
// c$P<06>c$P<>l<EFBFBD>eBf_[]<00>Qo0<6F>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe+2<1F>
int k, open_type_Buy[12], open_type_Sell[12];
int Ticket_Buy[12], Ticket_Sell[12];
double Gapentry[12], GapentryBuy[12], GapentrySell[12];
int OnInit()// return(0)n0<6E>vMRk0?ceQ
{
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RRgS<>Qt
if (Measurement) FileInit();
//+------------------------------------------------------------------+
return(0);
}
void OnTick() // *QHQL0NOD0n0g0g<>_k0?ceQ
{
// zlnL0TP/SLj0<6A>0<EFBFBD>`1X<31>S<EFBFBD>_
if (Measurement) ClosedTradeTPSL();
//+------------------------------------------------------------------+
}
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
// OrderClosen0MR<4D>_k0c<>0
// <00><>D0
CSpread = Ask - Bid; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
OrderCloseTimestamp = GetTickCount();// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Close_Price = Bid; // zln<>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
V0 = (int)Volume[0];// Volume[0]n0$P
res = OrderClose(OrderTicket(), OrderLots(), Bid, NULL, Green);
if (res == true && Measurement == true)
{
CloseLatency = GetTickCount() - OrderCloseTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) // e\tk<74>0x<30><78>b
{
Print("Access to history failed with error (",GetLastError(),")");
return;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0h0<68>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0_04XTo00!kn0<6E>Qtx02<30><32>0
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
CloseTradeInfo();
}
}
// <00>X<EFBFBD>0
CSpread = Ask - Bid; //<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
OrderCloseTimestamp = GetTickCount(); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Close_Price = Ask; // zln<><6E>D0<44>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
V0 = (int)Volume[0];// Volume[0]n0$P
res = OrderClose(OrderTicket(), OrderLots(), Ask, NULL, Green);
if (res == true && Measurement == true)
{
CloseLatency = GetTickCount() - OrderCloseTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) // e\tk<74>0x<30><78>b
{
Print("Access to history failed with error (",GetLastError(),")");
return;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0h0<68>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0_04XTo00!kn0<6E>Qtx02<30><32>0
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
CloseTradeInfo();
}
}
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
// ticketn0MR<4D>_<EFBFBD>0c<>0
// <00><>D0
OSpread = Ask - Bid;// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
StartOrderTimestamp = GetTickCount();// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = Ask;// <00><>D0<44>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
V0 = (int)Volume[0];// Volume[0]n0$P
ticket = OrderSend(Symbol(),
OP_BUY,
CalculateLots(MM_Risk, StopLoss_pips),
Ask,
Slippage,
Ask - StopLoss_pips * xpoint,
Ask + TakeProfit_pips * xpoint,
_Comment,
MagicNumber,
0,
Blue);
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<66>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<55>0W0j0D0)
if (OrderSelect(ticket, SELECT_BY_TICKET) == true && Measurement == true)
{
OpenTradeInfo();
}
// <00>X<EFBFBD>0
OSpread = Ask - Bid;// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
StartOrderTimestamp = GetTickCount();// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = Bid;// <00>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
V0 = (int)Volume[0];// Volume[0]n0$P
ticket = OrderSend(Symbol(),
OP_SELL,
CalculateLots(MM_Risk, StopLoss_pips),
Bid,
Slippage,
Bid + StopLoss_pips * xpoint,
Bid - TakeProfit_pips * xpoint,
_Comment,
MagicNumber,
0,
Red);
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<66>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<55>0W0j0D0)
if (OrderSelect(ticket, SELECT_BY_TICKET) == true && Measurement == true)
{
OpenTradeInfo();
}
//+------------------------------------------------------------------+
//| <00>[L<><4C>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>[L<><4C>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0\Ob |
//+------------------------------------------------------------------+
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0RgS
int FileInit()
{
filename = AccountCompany() + "_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0.csv";// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 T<>0zl<7A>0<EFBFBD>0
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
if(fp==INVALID_HANDLE)
{
err = GetLastError();
printf("Error occured: [%d] %s", err, ErrorDescription(err));
return(0.0);
}
FileWrite(fp, "<00>l<EFBFBD>eju<6A>S", "<00>l<EFBFBD>eBf<42><66>", "Bf;R", "R", "<00>S_.z%R", "<00>l<EFBFBD>e<EFBFBD>O<h", "}<7D>[<5B>O<h",
"<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(pips)", "<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(pips)", "<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(ms)",
" d<>v(pips)", "peϑ", "<1A><><EFBFBD><EFBFBD>0<EFBFBD>0", "Bf<42><66><EFBFBD><EFBFBD>", "EA T",
"<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0", "Volume[0]", "<00>f<EFBFBD><66>BfVolume[0]", "<00>f<EFBFBD><66>Bfi");
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30>X0<58>0
FileClose(fp);
return(0);
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>`1X<08>bL<62>(u <09>
void OpenTradeInfo()
{
OpenLatency = GetTickCount() - StartOrderTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = NormalizeDouble(Order_Price , Digits); // <00><>D0<44>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Open_Yakujyou_Price = NormalizeDouble(OrderOpenPrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h0ck<63><6B>S
Open_Slippage = NormalizeDouble(OrderType() == OP_BUY? Order_Price - Open_Yakujyou_Price :
Open_Yakujyou_Price - Order_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Open_Spread = NormalizeDouble(OSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Open_Type = OrderType() == OP_BUY? "Buy" : "Sell";
FileWriteingOpen(); // <00>fM0<4D><30>0<7F>Qt
}
void CloseTradeInfo()
{
Close_Price = NormalizeDouble(Close_Price, Digits); // <00>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Close_Yakujou_Price = NormalizeDouble(OrderClosePrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h
Close_Slippage = NormalizeDouble(OrderType() == OP_BUY? Close_Yakujou_Price - Close_Price :
Close_Price - Close_Yakujou_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Close_Spread = NormalizeDouble(CSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
profitpips = NormalizeDouble(OrderType() == OP_BUY? (OrderClosePrice() - OrderOpenPrice()) / xpoint :
(OrderOpenPrice() - OrderClosePrice()) / xpoint, 1);
Close_Type = "Close";
FileWriteingClose(); // <00>fM0<4D><30>0<7F>Qt
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>fM0<4D><30>0
void FileWriteingOpen()
{
for(int i = 0; i < 3000; i++)
{
FileClose(fp); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<4C><30>M0c0q0j0W0g0<67><30>Q0j0D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>02<30>P0
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)01YWe;b<>0$Po0-1
if (fp != INVALID_HANDLE)
{
FileSeek(fp, 0, SEEK_END);
FileWrite(fp, OrderTicket(), OrderOpenTime(), Hour(), Minute(), Open_Type, Order_Price, Open_Yakujyou_Price,
Open_Spread, Open_Slippage, OpenLatency,
"---", CalculateLots(MM_Risk, MaxStopLoss_pips), Symbol(), Timeframe, WindowExpertName(),
OrderMagicNumber(), V0, Volume[0], i);
FileClose(fp);
break;
}
}
if (fp == -1) Print("Error=", GetLastError(), " <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>fM0<4D><30>0k01YWeW0~0W0_0");
}
void FileWriteingClose()
{
for(int i = 0; i < 3000; i++)
{
FileClose(fp); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<4C><30>M0c0q0j0W0g0<67><30>Q0j0D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>02<30>P0
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)01YWe;b<>0$Po0-1
if (fp != INVALID_HANDLE)
{
FileSeek(fp, 0, SEEK_END);
FileWrite(fp, OrderTicket(), OrderCloseTime(), Hour(), Minute(), Close_Type, Close_Price, Close_Yakujou_Price,
Close_Spread, Close_Slippage, CloseLatency,
profitpips, CalculateLots(MM_Risk, MaxStopLoss_pips), Symbol(), Timeframe, WindowExpertName(),
OrderMagicNumber(), V0, Volume[0], i);
FileClose(fp);
break;
}
}
if (fp == -1) Print("Error=", GetLastError(), " <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>fM0<4D><30>0k01YWeW0~0W0_0");
}
// TP/SLBfn0i<>Q_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0kn0[tp]I{n0<6E>N<EFBFBD>ig0$R%R0g<>_>\<5C>NYn0<6E>N<EFBFBD>io0<6F><30><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
void ClosedTradeTPSL()
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<>0<EFBFBD>0<EFBFBD>0K0<4B>0<EFBFBD>bQ0<51>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderSymbol() != Symbol()) continue;
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderMagicNumber() != MagicNumber) continue;
// zlnBf<42><66>k0<6B>f<EFBFBD>eL0j0Q0<51>0p0<70>0<EFBFBD>0<EFBFBD>0<EFBFBD>QtB}<7D>N
if((OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderCloseTime() == OrderCloseTime_bak) break;
if((OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderCloseTime() > OrderCloseTime_bak) // zlnBf<42><66>L0g<>eg0B0<42>0p0
{
OrderCloseTime_bak = OrderCloseTime();
int length = StringLen(OrderComment());//StringLeno0<6F>eW[pe<70>0ԏY0
if (length >= 4)
{
// TP/SLzlnn0<6E>x<EFBFBD><78>
string tpsl = StringSubstr(OrderComment(), length-4, 4);
if (tpsl == "[tp]" || tpsl == "[sl]")
{
Close_Price = NormalizeDouble((tpsl == "[tp]"? OrderTakeProfit() : OrderStopLoss()), Digits); // <00>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Close_Yakujou_Price = NormalizeDouble(OrderClosePrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h
Close_Slippage = NormalizeDouble(OrderType() == OP_BUY? Close_Yakujou_Price - Close_Price : Close_Price - Close_Yakujou_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Close_Spread = MarketInfo(NULL,MODE_SPREAD) / 10; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
profitpips = NormalizeDouble(OrderType() == OP_BUY? (OrderClosePrice() - OrderOpenPrice()) / xpoint :
(OrderOpenPrice() - OrderClosePrice()) / xpoint, 1);
Close_Type = tpsl == "[tp]"? "TP" : "SL";
FileWriteingClose(); // <00>fM0<4D><30>0<7F>Qt
break;
}
}
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0c$P<>0<06>c$Pn04XT_<00>N N<>NYo00
N<18>h0 TX0g0<18><><EFBFBD> |
//+------------------------------------------------------------------+
datetime OrderOpenTime_bak = 0;
void OnTick()
{
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0c$P<>0<06>c$Pn04XTi<>w
OpenedTradeGap()
}
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
//<00>0<EFBFBD>0<EFBFBD>0L0B0<42>04XT0kg0<67>NeQ
//ticket = OrderSend<00>Qtn0<6E>_k0?ceQ
// <00><>D0
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<66>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<55>0W0j0D0)
if (OrderSelect(ticket, SELECT_BY_TICKET) == true)
{
Ticket_Buy[k] = OrderTicket();
open_type_Buy[k] = OrderType();
GapentryBuy[k] = OrderOpenPrice();
}
// <00>X<EFBFBD>0
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<66>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<55>0W0j0D0)
if (OrderSelect(ticket, SELECT_BY_TICKET) == true)
{
Ticket_Sell[k] = OrderTicket();
open_type_Sell[k] = OrderType();
GapentrySell[k] = OrderOpenPrice();
}
//+------------------------------------------------------------------+
// c$P<06>c$PBfn0i<>Q
void OpenedTradeGap()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<>0<EFBFBD>0<EFBFBD>0K0<4B>0<EFBFBD>bQ0<51>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderSymbol() != Symbol()) continue;
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderMagicNumber() != MagicNumber) continue;
if((OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderOpenTime() <= OrderOpenTime_bak) break;
if((OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderOpenTime() > OrderOpenTime_bak)// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66>L0g<>eg0B0<42>0p00
{
OrderOpenTime_bak = OrderOpenTime();
for(k=1; k<=Repeat_count ; k++)
{
if (Ticket_Buy[k] != OrderTicket() && Ticket_Sell[k] != OrderTicket()) continue;
if (Ticket_Buy[k] == OrderTicket() || Ticket_Sell[k] == OrderTicket())
{
Open_Type = OrderType() == OP_BUY && open_type_Buy[k] == OP_BUYSTOP? "BuyStop" :
OrderType() == OP_BUY && open_type_Buy[k] == OP_BUYLIMIT? "BuyLimit" :
OrderType() == OP_SELL && open_type_Sell[k] == OP_SELLSTOP? "SellStop" : "SellLimit";
Order_Price = OrderType() == OP_BUY? GapentryBuy[k] : GapentrySell[k];
Open_Yakujyou_Price = OrderOpenPrice();
Open_Spread = MarketInfo(NULL,MODE_SPREAD) / 10;
Open_Slippage = Order_Price - Open_Yakujyou_Price; // <06>c$Ph0n0<6E>]
OpenLatency = 0;
FileWriteingOpen();
}
break;
}
break;
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0N<>}k0<6B>fM0<4D><30>0<08><>e<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09> |
//+------------------------------------------------------------------+
// T<08>,n(u<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input bool Measurement = false; // <08>,n<>0<EFBFBD>0csv\Ob<08><>[L<><4C>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0I{ <09>
int err, fp;
double Order_Price, Close_Price;
double Open_Yakujyou_Price, Close_Yakujou_Price;
double Open_Spread, Close_Spread;
double Open_Slippage, Close_Slippage;
uint OpenLatency, CloseLatency;
string filename;
double profitpips;
int OnInit()
{
// return(0)n0<6E>vMRk0?ceQ
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RRgS<>Qt
if (Measurement) FileInit();
return(0);
}
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
// OrderClosen0MR<4D>_k0c<>0
// <00><>D0
double CSpread = Ask - Bid; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
uint OrderCloseTimestamp = GetTickCount(); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Close_Price = Bid; // zln<>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
res = OrderClose(OrderTicket(), OrderLots(), Bid, NULL, Green);
if (res == true && Measurement == true)
{
CloseLatency = GetTickCount() - OrderCloseTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) // e\tk<74>0x<30><78>b
{
Print("Access to history failed with error (",GetLastError(),")");
return;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0h0<68>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0_04XTo00!kn0<6E>Qtx02<30><32>0
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
Close_Price = NormalizeDouble(Close_Price, Digits); // <00>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Close_Yakujou_Price = NormalizeDouble(OrderClosePrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h
Close_Slippage = NormalizeDouble(Close_Yakujou_Price - Close_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Close_Spread = NormalizeDouble(CSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
profitpips = NormalizeDouble((OrderClosePrice() - OrderOpenPrice()) / xpoint, 1);
FileWriteing(); // <00>fM0<4D><30>0<7F>Qt
}
}
// <00>X<EFBFBD>0
double CSpread = Ask - Bid; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
uint OrderCloseTimestamp = GetTickCount(); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Close_Price = Ask; // zln<><6E>D0<44>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
res = OrderClose(OrderTicket(), OrderLots(), Ask, NULL, Green);
if (res == true && Measurement == true)
{
CloseLatency = GetTickCount() - OrderCloseTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) // e\tk<74>0x<30><78>b
{
Print("Access to history failed with error (",GetLastError(),")");
return;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0h0<68>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0_04XTo00!kn0<6E>Qtx02<30><32>0
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
Close_Price = NormalizeDouble(Close_Price , Digits); // <00><>D0<44>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Close_Yakujou_Price = NormalizeDouble(OrderClosePrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h
Close_Slippage = NormalizeDouble(Close_Price - Close_Yakujou_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Close_Spread = NormalizeDouble(CSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
profitpips = NormalizeDouble((OrderOpenPrice() - OrderClosePrice()) / xpoint, 1);
FileWriteing(); // <00>fM0<4D><30>0<7F>Qt
}
}
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
// ticketn0MR<4D>_<EFBFBD>0c<>0
// <00><>D0
double OSpread = Ask - Bid; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
uint StartOrderTimestamp = GetTickCount(); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = Ask; // <00><>D0<44>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
ticket = OrderSend(Symbol(),
OP_BUY,
CalculateLots(MM_Risk, MaxStopLoss_pips),
Ask,
Slippage,
Ask - StopLoss_pips * xpoint,
Ask + TakeProfit_pips * xpoint,
_Comment,
MagicNumber,
0,
Blue);
if (ticket != -1)
{
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<66>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<55>0W0j0D0)
if( OrderSelect( ticket, SELECT_BY_TICKET ) == true )
{
OpenLatency = GetTickCount() - StartOrderTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = NormalizeDouble(Order_Price , Digits); // <00><>D0<44>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Open_Yakujyou_Price = NormalizeDouble(OrderOpenPrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h0ck<63><6B>S
Open_Slippage = NormalizeDouble(Order_Price - Open_Yakujyou_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Open_Spread = NormalizeDouble(OSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
}
}
// <00>X<EFBFBD>0
double OSpread = Ask - Bid; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
uint StartOrderTimestamp = GetTickCount(); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = Bid; // <00>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
ticket = OrderSend(Symbol(),
OP_SELL,
CalculateLots(MM_Risk, MaxStopLoss_pips),
Bid,
Slippage,
Bid + StopLoss_pips * xpoint,
Bid - TakeProfit_pips * xpoint,
_Comment,
MagicNumber,
0,
Red);
if (ticket != -1)
{
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<66>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<55>0W0j0D0)
if( OrderSelect( ticket, SELECT_BY_TICKET ) == true )
{
OpenLatency = GetTickCount() - StartOrderTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = NormalizeDouble(Order_Price , Digits); // <00><>D0<44>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Open_Yakujyou_Price = NormalizeDouble(OrderOpenPrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h0ck<63><6B>S
Open_Slippage = NormalizeDouble(Open_Yakujyou_Price - Order_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Open_Spread = NormalizeDouble(OSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
}
}
// <00>N Ni<4E>S_j0zzD0f0<66>04X@bk0?ceQ
//+------------------------------------------------------------------+
//| <00>[L<><4C>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>[L<><4C>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n |
//+------------------------------------------------------------------+
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0RgS
int FileInit()
{
filename = AccountCompany() + "_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0.csv";// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 T<>0zl<7A>0<EFBFBD>0
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
if(fp==INVALID_HANDLE)
{
err = GetLastError();
printf("Error occured: [%d] %s", err, ErrorDescription(err));
return(0.0);
}
FileWrite(fp, "<00>l<EFBFBD>eBf<42><66>", "<00>l<EFBFBD>e<EFBFBD>O<h", "}<7D>[<5B>O<h", "<00><>/<00>X", "<00>0<EFBFBD>0<EFBFBD>0",
"OpenSpread", "OpenSlippage", "OpenLatency",
"zlnBf<42><66>", "zln<>l<EFBFBD>e<EFBFBD>O<h", "zln}<7D>[<5B>O<h",
"CloseSpread", "CloseSlippage", "CloseLatency",
" d<>vpips", "<1A><><EFBFBD><EFBFBD>0<EFBFBD>0", "Bf<42><66><EFBFBD><EFBFBD>", "EA T");
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30>X0<58>0
FileClose(fp);
return(0);
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>fM0<4D><30>0
void FileWriteing()
{
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
string Timeframe = (Period() == 1? "M1": Period() == 5? "M5": Period() == 15? "M15": Period() == 30? "M30":
Period() == 60? "H1": Period() == 240? "H4": Period() == 1440? "D1": Period() == 10080? "W1": "MN1");
if (fp != INVALID_HANDLE)
{
FileSeek(fp, 0, SEEK_END);
FileWrite(fp, OrderOpenTime(), Order_Price, Open_Yakujyou_Price,
OrderType()==0? "Buy": "Sell", CalculateLots(MM_Risk, MaxStopLoss_pips),
Open_Spread, Open_Slippage, OpenLatency,
OrderCloseTime(), Close_Price, Close_Yakujou_Price,
Close_Spread, Close_Slippage, CloseLatency,
profitpips, Symbol(), Timeframe, WindowExpertName());
FileClose(fp);
}
}
//+------------------------------------------------------------------+
// <00>N N<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0EA
//+------------------------------------------------------------------+
//| AMX-USDJPY.mq4 |
//| Copyright 2021, TNK.Co.,Ltd.|
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, TNK"
#property link "https://note.com/tnk_system"
//#property version "2.2" //<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<08>,n
#property strict
#include <stdlib.mqh>
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0eQ<65>R(u<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input double Lots = 0.28; // <00>0<EFBFBD>0<EFBFBD>0<08>XS)RK<52>(uBf <09>
input double MaxSpread_pips = 3.0; // 1<><31>[<5B>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>Pips <09>
input int TakeProfit_pips = 130; // )R<>xc$P<08>Pips <09>
input int StopLoss_pips = 90; // dR<06>c$P<08>Pips <09>
input int GMT = 2; // GMT<08><>QBf<42><66> <09>
input int Summertime = 1; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>1:s|/2:<00><>/0:!qW0 <09>
input int MagicNumber = 8691310; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08><>NEAh0͑<07> N<>S <09>
input string _Comment = "AMX-USDJPY_2.2"; // <1A><>w(u<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//input bool MM_ON = false; // <07>)R_j<5F><6A>
enum MM_Select{
Fixed, // 0<1A>XS)R/<00>V<EFBFBD>[
FreeMargin, // 1<1A><07>)R/YOpR<<3C><>
Balance, // 2<1A><07>)R/<00>
};
input MM_Select MM_ON = Fixed; // <07>)R_j<5F><6A><08>0:<00>V<EFBFBD>[/1:YOpR<<3C><>bё/2:<00><09>
input double MM_Risk = 1.0; // <00>0<EFBFBD>0<EFBFBD>0<05><08>YOpR<<3C><>bё/<00>kؚn0UO%K0 <09>
//<00>Q<EFBFBD><51>-<2D><>[
int Maxposition = 1; // g'Y<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int Slippage = 10; // 1<><31>[<5B>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>Point <09>
bool Tokyo = true; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>qg<71>NBf<42><66> <09>
bool London = true; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
bool WeekendClose = true; // 1<>+g<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool YearendClose = true; //012/25~1/3<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30><EFBFBD>Y$Pn00g0<z<>P<1A> 0true 0
bool CandleStartStartingEntry = true; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool CandleStartStartingTrailing = true; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
bool CandleStartStartingExit = false; // zln
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0AhT<>0[0(u
int xBarsEntry = 0, xBarsExit = 0, xBarsTrailing = 0;
int xBars=0, xxBars=0;
double xpoint;
//zln<>0<EFBFBD>0<EFBFBD>0n0T Ype
//bL<62>zln
int Rikaku_pips = 9000; // bL<62>)R<>x<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Pips
int Songiri_pips = 12000; // bL<62> dR<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Pips
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
/*input bool Modify = false; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input int TrailingStopLossStart_pips = 40; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30><EFBFBD>Y d<>vPips
input int TrailingStopLoss_pips = 100; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0Bid/AskK0<4B>0n0$PE^Pips
*/
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int MA_PERIOD = 100; // <00>y<EFBFBD>Rs^GW<47>}n0<08><>{g<><67>
int CandleCheckCount1 = 40; // HL<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30>UO,gMR~0g0<1F><08><><EFBFBD>D0 <09>
int HL_margin1 = 30; // HL<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/ؚ$P<>[$Pn0<6E>]pips<08><><EFBFBD>D0 <09>
int CandleCheckCount2 = 40; // HL<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30>UO,gMR~0g0<1F><08><>X<EFBFBD>0 <09>
int HL_margin2 = 40; // HL<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/ؚ$P<>[$Pn0<6E>]pips<08><>X<EFBFBD>0 <09>
int CandleCheckCount_H = 20; // HC<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30>UO,gMR~0g0<1F><08><><EFBFBD>D0 <09>
int HC_margin = 50; // HC<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/ؚ$PB}$Pn0<6E>]pips<08><><EFBFBD>D0 <09>
int CandleCheckCount_L = 32; // LC<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30>UO,gMR~0g0<1F><08><>X<EFBFBD>0 <09>
int LC_margin = 180; // LC<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0/<00>[$PB}$Pn0<6E>]pips<08><>X<EFBFBD>0 <09>
int Day_Buy = 22; // <00><>D0<44><30><EFBFBD>Y<EFBFBD>e
int Day_Sell = 10; // <00>X<EFBFBD>0<EFBFBD><30><EFBFBD>Y<EFBFBD>e
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
bool GMT_Kadou_OK1 = false; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><08><><EFBFBD>D0 <09>
bool GMT_Kadou_OK1_noFilter = false; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><08><><EFBFBD>D0 <09>
bool GMT_Kadou_OK2 = false; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><08><>X<EFBFBD>0 <09>
bool GMT_Kadou_OK2_noFilter = false; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><08><>X<EFBFBD>0 <09>
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
bool PositionClose1 = false; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln<08><><EFBFBD>D0 <09>
bool PositionClose2 = false; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zln<08><>X<EFBFBD>0 <09>
//<08>,n(u<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input bool Measurement = false; // <08>,n<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int err, fp;
double Yakujyou_Price;
double Open_Spread, Close_Spread;
double Open_Slippage, Close_Slippage;
uint OpenLatency, CloseLatency;
string filename;
double profitpips;
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| tester function |
//+------------------------------------------------------------------+
/*double OnTester()
{
// <00>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));
// <00>R<EFBFBD>s
// return(NormalizeDouble(100*TesterStatistics(STAT_PROFIT_TRADES) / TesterStatistics(STAT_TRADES), 2));
}*/
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// \pe<70>p<EFBFBD>N Nn0Ahpek0<6B>_X0f0Pipsn0$P<>0<EFBFBD><30>teY0<59>0
xpoint = Point();
if (Digits() == 3 || Digits() == 5)
{
xpoint = xpoint * 10;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<30>:y<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
string LotsComment;
if (MM_ON == Fixed) LotsComment = DoubleToStr(Lots,2);
else LotsComment = //DoubleToStr(CalculateLots(MM_Risk, StopLoss_pips),1)
" (" + DoubleToStr(MM_Risk,1) +"%)";
Comment("MagicNo.<1A>" + DoubleToStr(MagicNumber,0) +
"\n" +
"Lots<1A>" + LotsComment +
" MM_Mode<1A>" + (string)MM_ON +
"\n" +
"Sp<1A>" + DoubleToStr(MaxSpread_pips, 1) +
" TP/SL<1A>" + DoubleToStr(TakeProfit_pips,0) + "/" + DoubleToStr(StopLoss_pips,0)
);
// O(uW0f0D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<5E>h<EFBFBD>:yk0Y0<59>0
HideTestIndicators(true);
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Q<EFBFBD>RRgS<>Qt
if (Measurement == true)
{
filename = AccountCompany() + "_SlippageLog.csv";// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 T<>0zl<7A>0<EFBFBD>0
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
if(fp==INVALID_HANDLE)
{
err = GetLastError();
printf("Error occured: [%d] %s", err, ErrorDescription(err));
return(0.0);
}
FileWrite(fp, "OpenTime", "CloseTime", "OpenPrice", "ClosePrice", "OrderType", "ProfitPips",
"OpenSpread", "OpenSlippage", "OpenLatency",
"CloseSpread", "CloseSlippage", "CloseLatency", "CurrencyPair", "ExpertName");
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30>X0<58>0
FileClose(fp);
}
return(0);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30>te<74>0Bf<42><66>6R<36>_
GetSummertimeShift();
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
PositionClose();
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//Trailing();
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
PositionOpen();
// TP, SLn0<6E>Q-<2D><>[
SetTPSL();
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<30>:y<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
string LotsComment;
if (MM_ON == Fixed) LotsComment = DoubleToStr(Lots,2);
else LotsComment = DoubleToStr(CalculateLots(MM_Risk, StopLoss_pips),2)
+ " (" + DoubleToStr(MM_Risk,1) +"%)";
Comment("MagicNo.<1A>" + DoubleToStr(MagicNumber,0) +
"\n" +
"Lots<1A>" + LotsComment +
" MM_Mode<1A>" + (string)MM_ON +
"\n" +
"Sp<1A>" + DoubleToStr(MaxSpread_pips, 1) +
" TP/SL<1A>" + DoubleToStr(TakeProfit_pips,0) + "/" + DoubleToStr(StopLoss_pips,0)
);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| ܈ck<63><6B>pe |
//+------------------------------------------------------------------+
void GetSummertimeShift()
{
int MON, SUN_day, xGMT, xTime, xxTime;
int summertime_shift = 0;
datetime gmtadjusted;
//0GMT+9<00>0<EFBFBD>W<EFBFBD>nk00i0<69>0`0Q0Z0<5A>0f0D0<44>0K0<4B>0<EFBFBD>{<7B>QY0<59>0------------------------
MON = TimeMonth(TimeCurrent()); // UOg<1F>
SUN_day = TimeDay(TimeCurrent()) - TimeDayOfWeek(TimeCurrent()); // ]0n01<30>n0<6E>e<EFBFBD>f<EFBFBD>eo0UO<55>e<1F>
if (Summertime == 2) // <00><><EFBFBD>V_n04XT
{
if ((MON == 3 && SUN_day >= 25) || (MON >= 4 && MON <= 9) || (MON == 10 && SUN_day <= 24))
//3gg00]0n01<30>n0<6E>e<EFBFBD>f<EFBFBD>eL025<00>e<EFBFBD>N
N/4g^<5E>9g/10gg00]0n01<30>n0<6E>e<EFBFBD>f<EFBFBD>eL023<00>e<EFBFBD>N N
{
summertime_shift = 1;
}
else
{
summertime_shift = 0;
}
}
else if (Summertime == 1) // s|<7C>V_n04XT
{
if ((MON == 3 && SUN_day >= 8) || (MON >= 4 && MON <= 10) || (MON == 11 && SUN_day <= 0))
//3gg00]0n01<30>n0<6E>e<EFBFBD>f<EFBFBD>eL08<00>e<EFBFBD>N
N/4g^<5E>10g/11gg00]0n01<30>n0<6E>e<EFBFBD>f<EFBFBD>eL0X[(WW0j0D0
{
summertime_shift = 1;
}
else
{
summertime_shift = 0;
}
}
else // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0!qW0n04XT
{
summertime_shift = 0;
}
xGMT = GMT - 9 + summertime_shift;//GMT+9<00>0<EFBFBD>W<EFBFBD>nk0
//GMT+9<00>W<EFBFBD>ng0i0<69>0`0Q0Z0<5A>0f0D0<44>0K0<4B>0<EFBFBD>{<7B>QY0<59>0<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09>--------------------
//+------------------------------------------------------------------+
//| Bf<42><66>6R<36>_ |
//+------------------------------------------------------------------+
//---- <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<30><31>SBf<42><66>n0$R<>[ ----
xTime = TimeHour(TimeCurrent()) - xGMT; // <00>e,gBf<42><66>
xxTime = TimeHour(TimeCurrent()) - (GMT -2); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08><>{j0W0 <09>
gmtadjusted = TimeCurrent() - 60 * 60 * xGMT;
if (xTime < 0)
{
xTime = xTime + 24;
}
else if (xTime > 23)
{
xTime = xTime - 24;
}
if (xxTime < 0)
{
xxTime = xxTime + 24;
}
else if (xxTime > 23)
{
xxTime = xxTime - 24;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><08><><EFBFBD>D0_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
if (xxTime == 1 || xxTime == 18)
{
PositionClose1 = true;
}
else
{
PositionClose1 = false;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66>(<00><>D0_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
if (Minute() == 0 && ((Day() >= Day_Buy && Day() <= 24) || Day() == 31) && // 00R010~24,31<00>e
TimeDayOfWeek(TimeCurrent()) != 1 && // g<>f<EFBFBD>e<EFBFBD>0d<30>O0
xxTime == 9 && London == true) // 9Bfk0<6B><30>D0
{
GMT_Kadou_OK1 = true;
}
else
{
GMT_Kadou_OK1 = false;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0j0W0(u(<00><>D0_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
if (Minute() == 0 && Day() >= 25 && Day() <= 30 && // 00R025~30<00>e
xxTime == 9 && London == true) // 9Bfk0<6B><30>D0
{
GMT_Kadou_OK1_noFilter = true;
}
else
{
GMT_Kadou_OK1_noFilter = false;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><08><>X<EFBFBD>0_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
if (xxTime == 1 || xxTime == 9)
{
PositionClose2 = true;
}
else
{
PositionClose2 = false;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66>(<00>X<EFBFBD>0_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
if (Minute() == 0 && Day() >= Day_Sell && Day() <= 22 && // 00R010~22<00>e
xxTime == 3 && Tokyo == true) // 3Bfk0<6B>X<EFBFBD>0
{
GMT_Kadou_OK2 = true;
}
else
{
GMT_Kadou_OK2 = false;
}
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0j0W0(u(<00>X<EFBFBD>0_<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bf<42><66> <09>
if (Minute() == 0 && Day() >= 23 && // 00R023~31<00>e
xxTime == 3 && Tokyo == true) // 3Bfk0<6B>X<EFBFBD>0
{
GMT_Kadou_OK2_noFilter = true;
}
else
{
GMT_Kadou_OK2_noFilter = false;
}
// S0S0~0g00<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h0<68>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0o00<>S_Bf<42><66>k0<6B><30><EFBFBD>Oj0O0<4F>[<5B>eY0<59>0
//---- <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<30><31>SBf<42><66>n0$R<>[<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09> ----
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
void PositionClose()
{
int i;
double profit;
bool res;
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30><EFBFBD>Y$Pn00<z<>P<08>x<EFBFBD><78>b_ <09>n04XT0<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if(Bars != xBars || CandleStartStartingExit == false)
{
xBars = Bars;
// @b gW0f0D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<>0<EFBFBD>0<EFBFBD>0K0<4B>0<EFBFBD>bQ0<51>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderSymbol() != Symbol()) continue;
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderMagicNumber() != MagicNumber) continue;
if (OrderType() == OP_BUY)
{
profit = Bid - OrderOpenPrice(); // <00><>D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<>v<EFBFBD>0<08><>{Y0<59>0
if (profit >= Rikaku_pips * xpoint
|| profit <= -Songiri_pips * xpoint
|| Exit2(false) == 2
|| PositionClose1 == true)
{
double CSpread = Ask - Bid;//0<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
uint OrderCloseTimestamp = GetTickCount();// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
double Close_Price = Bid;// zln<>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
res = OrderClose(OrderTicket(), OrderLots(), Bid, NULL, Green);
if (res == true && Measurement == true)
{
CloseLatency = GetTickCount() - OrderCloseTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) //e\tk<74>0x<30><78>b
{
Print("Access to history failed with error (",GetLastError(),")");
return;
}
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0L0N<><4E>W0_04XTo00!kn0<6E>Qtx02<30><32>0
if (OrderSymbol() == Symbol())
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0_04XTo00!kn0<6E>Qtx02<30><32>0
if (OrderMagicNumber() == MagicNumber)
{
Close_Price = NormalizeDouble(Close_Price, Digits); // <00>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Yakujyou_Price = NormalizeDouble(OrderClosePrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h
Close_Slippage = NormalizeDouble(Yakujyou_Price - Close_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Close_Spread = NormalizeDouble(CSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
profitpips = NormalizeDouble((OrderClosePrice() - OrderOpenPrice()) / xpoint, 1);
/*Print("Slippage = ", DoubleToString(Close_Slippage, Digits),
" Latency = ", CloseLatency,
" OOT = ", OrderOpenTime(),
" OCT = ", OrderCloseTime(),
" OOP = ", OrderOpenPrice(),
" YJP = ", Yakujyou_Price,
" OSp = ", Open_Spread,
" OSl = ", Open_Slippage,
" CSp = ", Close_Spread,
" CSl = ", Close_Slippage);
*/
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
if (fp != INVALID_HANDLE)
{
FileSeek(fp, 0, SEEK_END);
FileWrite(fp, OrderOpenTime(), OrderCloseTime(), OrderOpenPrice(), Yakujyou_Price,
"buy", profitpips, Open_Spread, Open_Slippage, OpenLatency,
Close_Spread, Close_Slippage, CloseLatency, Symbol(), WindowExpertName());
FileClose(fp);
}
}
}
}
}
}
if (OrderType() == OP_SELL)
{
profit = OrderOpenPrice() - Ask; // <00>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<>v<EFBFBD>0<08><>{Y0<59>0
if (profit >= Rikaku_pips * xpoint
|| profit <= -Songiri_pips * xpoint
|| Exit1(true) == 1
|| PositionClose2 == true)
{
double CSpread = Ask - Bid;//0<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
uint OrderCloseTimestamp = GetTickCount();// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
double Close_Price = Ask;// zln<><6E>D0<44>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
res = OrderClose(OrderTicket(), OrderLots(), Ask, NULL, Green);
if (res == true && Measurement == true)
{
CloseLatency = GetTickCount() - OrderCloseTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) //e\tk<74>0x<30><78>b
{
Print("Access to history failed with error (",GetLastError(),")");
return;
}
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0L0N<><4E>W0_04XTo00!kn0<6E>Qtx02<30><32>0
if (OrderSymbol() == Symbol())
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0_04XTo00!kn0<6E>Qtx02<30><32>0
if (OrderMagicNumber() == MagicNumber)
{
Close_Price = NormalizeDouble(Close_Price , Digits); // <00><>D0<44>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Yakujyou_Price = NormalizeDouble(OrderClosePrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h
Close_Slippage = NormalizeDouble(Close_Price - Yakujyou_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Close_Spread = NormalizeDouble(CSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
profitpips = NormalizeDouble((OrderOpenPrice() - OrderClosePrice()) / xpoint, 1);
/*Print("Slippage = ", DoubleToString(Close_Slippage, Digits),
" Latency = ", CloseLatency,
" OOT = ", OrderOpenTime(),
" OCT = ", OrderCloseTime(),
" OOP = ", OrderOpenPrice(),
" YJP = ", Yakujyou_Price,
" OSp = ", Open_Spread,
" OSl = ", Open_Slippage,
" CSp = ", Close_Spread,
" CSl = ", Close_Slippage);
*/
fp = FileOpen(filename, FILE_READ|FILE_WRITE|FILE_CSV, ',');// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(csv)
if (fp != INVALID_HANDLE)
{
FileSeek(fp, 0, SEEK_END);
FileWrite(fp, OrderOpenTime(), OrderCloseTime(), OrderOpenPrice(), OrderClosePrice(),
"sell", profitpips, Open_Spread, Open_Slippage, OpenLatency,
Close_Spread, Close_Slippage, CloseLatency, Symbol(), WindowExpertName());
FileClose(fp);
}
}
}
}
}
}
} // @b gW0f0D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09>
} //<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30><EFBFBD>Y$Pn00<z<>P<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09>
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
/*void Trailing()
{
int i;
double profit;
bool res;
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30><EFBFBD>Y$Pn00<z<>P<08>x<EFBFBD><78>b_ <09>
if(Bars != xBarsTrailing || CandleStartStartingTrailing == false)
{
xBarsTrailing = Bars;
// @b gW0f0D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<>0<EFBFBD>0<EFBFBD>0K0<4B>0<EFBFBD>bQ0<51>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderSymbol() != Symbol()) continue;
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderMagicNumber() != MagicNumber) continue;
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0ON0OFF
if (Modify == true)
{
if (OrderType() == OP_BUY)
{
profit = Bid - OrderOpenPrice(); // <00><>D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn0+T0 d<>v<EFBFBD>0<08><>{Y0<59>0
// +T0<7F>vL0N<>[$P<>N
Nn04XT0SL<00>0_M0
NR0<EFBFBD>0
if (profit >= TrailingStopLossStart_pips * xpoint
&& OrderStopLoss() < NormalizeDouble(Bid - TrailingStopLossStart_pips * xpoint, Digits()))
{
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
Bid - TrailingStopLoss_pips * xpoint,
OrderTakeProfit(),
0,
MediumSeaGreen);
}
}
if (OrderType() == OP_SELL)
{
profit = OrderOpenPrice() - Ask; // <00>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn0+T0 d<>v<EFBFBD>0<08><>{Y0<59>0
// +T0<7F>vL0N<>[$P<>N
Nn04XT0<06>c$P<>0_M0
NR0<EFBFBD>0
if (profit >= TrailingStopLossStart_pips * xpoint
&& OrderStopLoss() > NormalizeDouble(Ask + TrailingStopLossStart_pips * xpoint, Digits()))
{
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
Ask + TrailingStopLoss_pips * xpoint,
OrderTakeProfit(),
0,
MediumSeaGreen);
}
}
}
} // @b gW0f0D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09>
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30><EFBFBD>Y$Pn00<z<>P<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09>
}*/
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 |
//+------------------------------------------------------------------+
void PositionOpen()
{
int i;
int ticket;
int CountBuy = 0,CountSell = 0;
bool res;
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$R<>en0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30><EFBFBD>Y$Pn00<z<>P<08>x<EFBFBD><78>b_ <09>
if(Bars != xBarsEntry || CandleStartStartingEntry == false)
{
xBarsEntry = Bars;
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0pe<70>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<>0<EFBFBD>0<EFBFBD>0K0<4B>0<EFBFBD>bQ0<51>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderSymbol() != Symbol()) continue;
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderMagicNumber() != MagicNumber) continue;
if (OrderType() == OP_BUY)
{
CountBuy = CountBuy + 1;
}
if (OrderType() == OP_SELL)
{
CountSell = CountSell + 1;
}
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0pe<70>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09>
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0ag<61>N<EFBFBD>0<EFBFBD>x<EFBFBD><78>W00b<>zW0f0D0<44>0p0<70>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L<30>F0
if (Entry(true) == 1 // <00><>D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
&& CountSell == 0
&& CountBuy < Maxposition
&& xxBars != Bars
&& (GMT_Kadou_OK1 == true || GMT_Kadou_OK1_noFilter == true))
{
ticket = OrderSend(Symbol(),
OP_BUY,
CalculateLots(MM_Risk, StopLoss_pips),
Ask,
Slippage,
Ask - StopLoss_pips * xpoint,
Ask + TakeProfit_pips * xpoint,
_Comment,
MagicNumber,
0,
Blue);
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L01YWeg0B0<42>0p00TPSL<00>0RrRW0f0<66>l<EFBFBD>eY0<59>0
if (ticket == -1)
{
double OSpread = Ask - Bid;// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
uint StartOrderTimestamp = GetTickCount();// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
double Order_Price = Ask;// <00><>D0<44>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
ticket = OrderSend(Symbol(),
OP_BUY,
CalculateLots(MM_Risk, StopLoss_pips),
Ask,
Slippage,
0,
0,
_Comment,
MagicNumber,
0,
Blue);
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0b<>RW0f0D0<44>0p00TP, SL<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0
if (ticket != -1)
{
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<66>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<55>0W0j0D0)
if( OrderSelect( ticket, SELECT_BY_TICKET ) == true )
{
OpenLatency = GetTickCount() - StartOrderTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = NormalizeDouble(Order_Price , Digits); // <00><>D0<44>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Yakujyou_Price = NormalizeDouble(OrderOpenPrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h0ck<63><6B>S
Open_Slippage = NormalizeDouble(Order_Price - Yakujyou_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Open_Spread = NormalizeDouble(OSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() - StopLoss_pips * xpoint,
OrderOpenPrice() + TakeProfit_pips * xpoint,
0, MediumSeaGreen);
//Print("Slippage = ", DoubleToString(Open_Slippage,Digits),
// " Latency= ", OpenLatency);
}
}
}
xxBars = Bars;
}
if (Entry(false) == 2 // <00>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
&& CountBuy == 0
&& CountSell < Maxposition
&& xxBars != Bars
&& (GMT_Kadou_OK2 == true || GMT_Kadou_OK2_noFilter == true))
{
ticket = OrderSend(Symbol(),
OP_SELL,
CalculateLots(MM_Risk, StopLoss_pips),
Bid,
Slippage,
Bid + StopLoss_pips * xpoint,
Bid - TakeProfit_pips * xpoint,
_Comment,
MagicNumber,
0,
Red);
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L01YWeg0B0<42>0p00TPSL<00>0RrRW0f0<66>l<EFBFBD>eY0<59>0
if (ticket == -1)
{
double OSpread = Ask - Bid;// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
uint StartOrderTimestamp = GetTickCount();// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
double Order_Price = Bid;// <00>X<EFBFBD>0<EFBFBD>l<EFBFBD>e<EFBFBD>0eQ<65>0<EFBFBD>0<EFBFBD>O<h
ticket = OrderSend(Symbol(),
OP_SELL,
CalculateLots(MM_Risk, StopLoss_pips),
Bid,
Slippage,
0,
0,
_Comment,
MagicNumber,
0,
Red);
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0b<>RW0f0D0<44>0p00TP, SL<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0
if (ticket != -1)
{
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Oc0f0<66>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0UO<55>0W0j0D0)
if( OrderSelect( ticket, SELECT_BY_TICKET ) == true )
{
OpenLatency = GetTickCount() - StartOrderTimestamp; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08>,n
Order_Price = NormalizeDouble(Order_Price , Digits); // <00><>D0<44>l<EFBFBD>e<EFBFBD>O<h<>0ck<63><6B>S
Yakujyou_Price = NormalizeDouble(OrderOpenPrice(), Digits); // <00>[<5B><>}<7D>[W0_0<5F>O<h0ck<63><6B>S
Open_Slippage = NormalizeDouble(Yakujyou_Price - Order_Price, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
Open_Spread = NormalizeDouble(OSpread, Digits) / xpoint; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>00AhT<>0[0
res = OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() + StopLoss_pips * xpoint,
OrderOpenPrice() - TakeProfit_pips * xpoint,
0, MediumSeaGreen);
//Print("Slippage = ", DoubleToString(Open_Slippage,Digits),
// " Latency= ", OpenLatency);
}
}
}
xxBars = Bars;
}
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$R<>en0<6E>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><30><EFBFBD>Y$Pn00<z<>P<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <09>
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| TakeProfit, StopLoss |
//+------------------------------------------------------------------+
void SetTPSL()
{
int i;
double profit;
bool res;
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0TP, SL<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<59>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<30><78>b(<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<>0<EFBFBD>0<EFBFBD>0K0<4B>0<EFBFBD>bQ0<51>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><1A><><EFBFBD><EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderSymbol() != Symbol()) continue;
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><78><08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<><4E>W0j0D04XTo00for<00>en0HQ-<2D>k0;b<>0 <09>
if (OrderMagicNumber() != MagicNumber) continue;
// <00><>D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (OrderType() == OP_BUY)
{
profit = Bid - OrderOpenPrice(); // <00><>D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<>v<EFBFBD>0<08><>{Y0<59>0
// TP, SLL0i0a0<61>0<EFBFBD>0-<2D><>[U0<55>0f0D0j0Q0<51>0p00TP, SL<00>0-<2D><>[Y0<59>0
if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
{
res = OrderModify(OrderTicket(), OrderOpenPrice(),
OrderOpenPrice() - StopLoss_pips * xpoint,
OrderOpenPrice() + TakeProfit_pips * xpoint,
0, MediumSeaGreen);
}
}
// <00>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (OrderType() == OP_SELL)
{
profit = OrderOpenPrice() - Ask; // <00>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<>v<EFBFBD>0<08><>{Y0<59>0
// TP, SLL0i0a0<61>0<EFBFBD>0-<2D><>[U0<55>0f0D0j0Q0<51>0p00TP, SL<00>0-<2D><>[Y0<59>0
if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
{
res = OrderModify(OrderTicket(), OrderOpenPrice(),
OrderOpenPrice() + StopLoss_pips * xpoint,
OrderOpenPrice() - TakeProfit_pips * xpoint,
0, MediumSeaGreen);
}
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <07>)R_j<5F><6A> |
//+------------------------------------------------------------------+
// <07>)R_j<5F><6A>n0<6E>0<EFBFBD>0<EFBFBD>0pe<70>0<08><>{Y0<59>0
double CalculateLots(double risk, // 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int sl_pips) // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
{
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfo00<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(un0<07>)R_j<5F><6A><EFBFBD>0O(uY0<59>0
if (IsTesting())
return(CalculateLots_forTest(risk, sl_pips));
else
return(CalculateLots_forReal(risk, sl_pips));
}
// <07>)R_j<5F><6A>n0<6E>0<EFBFBD>0<EFBFBD>0pe<70>0<08><>{Y0<59>0<08><>[<5B>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u <09>
double CalculateLots_forReal(double risk, // 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int sl_pips) // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
{
double freemargin; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0YOpR<<3C><>
double balance; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>S<EFBFBD>^<5E>
double tickvalue; // 1<00>0<EFBFBD>0<EFBFBD>01pipS__0<5F>0n0<<3C><><1A><><EFBFBD><EFBFBD>vS_M<5F>
double lotstep; // <00>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0pen0g\;R06RP<52>
double maxlots; // <00>0<EFBFBD>0<EFBFBD>0n0g'Y<>0<EFBFBD>0<EFBFBD>0pe6RP<52>
double minlots; // <00>0<EFBFBD>0<EFBFBD>0n0g\<5C>0<EFBFBD>0<EFBFBD>0pe6RP<52>
double lotsize = Lots; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
// <07>)R_j<5F><6A><EFBFBD>0O<7F>0j0D04XT0Lots<00>0ԏY0
if (MM_ON == Fixed) return(Lots);
freemargin = AccountFreeMargin();
balance = AccountBalance();
tickvalue = MarketInfo(NULL, MODE_TICKVALUE);
lotstep = MarketInfo(NULL, MODE_LOTSTEP);
maxlots = MarketInfo(NULL, MODE_MAXLOT);
minlots = MarketInfo(NULL, MODE_MINLOT);
// tickvalueo0pipsg0o0j0O0pointj0n0g00\pe<70>p<EFBFBD>N Nn0Ahpek0<6B>_X0f0܈ckY0<59>0
if (Digits() == 3 || Digits() == 5)
tickvalue = tickvalue * 10;
// 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h0SLn0E^K0<4B>00<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08><>{Y0<59>00
if (MM_ON == FreeMargin) // YOpR<<3C><><62>e_
{
lotsize = (freemargin * risk / 100.0) // 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (YOpR<<3C><>bёn0risk%)
/ (sl_pips * tickvalue); // 1<00>0<EFBFBD>0<EFBFBD>0g0SLk0K0K0c0_0Bfn0ёM<D191>
}
else if (MM_ON == Balance) // <00><6B>e_
{
lotsize = (balance * risk / 100.0) // 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (YOpR<<3C><>bёn0risk%)
/ (sl_pips * tickvalue); // 1<00>0<EFBFBD>0<EFBFBD>0g0SLk0K0K0c0_0Bfn0ёM<D191>
}
// <00>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0pen0;R0k0T<>0[0f0<66>0<EFBFBD>0<EFBFBD>0pe<70>0<EFBFBD>Ock
lotsize = MathFloor(lotsize / lotstep) * lotstep;
// <00>0<EFBFBD>0<EFBFBD>0n0g\<5C>0<EFBFBD>0<EFBFBD>0pe<70>0g'Y<>0<EFBFBD>0<EFBFBD>0peg0܈ck<63>0K0Q0<51>0
lotsize = MathMax(lotsize, minlots);
lotsize = MathMin(lotsize, maxlots);
return(lotsize);
}
// <07>)R_j<5F><6A>n0<6E>0<EFBFBD>0<EFBFBD>0pe<70>0<08><>{Y0<59>0<08><>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u <09>
double CalculateLots_forTest(double risk, // 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int sl_pips) // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
{
double freemargin; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0YOpR<<3C><>
double balance; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<6E>S<EFBFBD>^<5E>
double tickvalue; // 1<00>0<EFBFBD>0<EFBFBD>01pipS__0<5F>0n0<<3C><><1A><><EFBFBD><EFBFBD>vS_M<5F>
double lotstep; // <00>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0pen0g\;R06RP<52>
double maxlots; // <00>0<EFBFBD>0<EFBFBD>0n0g'Y<>0<EFBFBD>0<EFBFBD>0pe6RP<52>
double minlots; // <00>0<EFBFBD>0<EFBFBD>0n0g\<5C>0<EFBFBD>0<EFBFBD>0pe6RP<52>
double lotamount; // 1<00>0<EFBFBD>0<EFBFBD>0n0<1A><><EFBFBD>pe
double lotsize = Lots; // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double conv; // <00>S<EFBFBD>^<1A><><EFBFBD>.z^<5E>k0<6B>0<EFBFBD>0܈ck<63>Ope
// <07>)R_j<5F><6A><EFBFBD>0O<7F>0j0D04XT0Lots<00>0ԏY0
if (MM_ON == Fixed) return(Lots);
freemargin = AccountFreeMargin();
balance = AccountBalance();
tickvalue = MarketInfo(NULL, MODE_TICKVALUE);
lotstep = MarketInfo(NULL, MODE_LOTSTEP);
maxlots = MarketInfo(NULL, MODE_MAXLOT);
minlots = MarketInfo(NULL, MODE_MINLOT);
lotamount = MarketInfo(NULL, MODE_LOTSIZE);
// 1N<1A><><EFBFBD>*1pips = $1 = 100<00>Qh0<68>N<EFBFBD>[W001<00>0<EFBFBD>0<EFBFBD>01pipn0 Y<>RL0<4C>S<EFBFBD>^<1A><><EFBFBD>g0D0O0<4F>0k0<6B>vS_Y0<59>0K0<08><>{
// 1 lot = 10N<1A><><EFBFBD>
// <00>S<EFBFBD>^<1A><><EFBFBD> = JPY : tickvalue = 1000<00>Q/(lot<00>0pip)
// <00>S<EFBFBD>^<1A><><EFBFBD> = USD : tickvalue = $10/(lot<00>0pip)
conv = 1;
if (AccountCurrency() == "JPY")
conv = 100;
tickvalue = lotamount / 10000 * conv;
// 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h0SLn0E^K0<4B>00<>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<08><>{Y0<59>00
if (MM_ON == FreeMargin) // YOpR<<3C><><62>e_
{
lotsize = (freemargin * risk / 100.0) // 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (YOpR<<3C><>bёn0risk%)
/ (sl_pips * tickvalue); // 1<00>0<EFBFBD>0<EFBFBD>0g0SLk0K0K0c0_0Bfn0ёM<D191>
}
else if (MM_ON == Balance) // <00><6B>e_
{
lotsize = (balance * risk / 100.0) // 1<><31>[Y0<59>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (YOpR<<3C><>bёn0risk%)
/ (sl_pips * tickvalue); // 1<00>0<EFBFBD>0<EFBFBD>0g0SLk0K0K0c0_0Bfn0ёM<D191>
}
// <00>0<EFBFBD>0<EFBFBD>0n0<6E>0<EFBFBD>0<EFBFBD>0pen0;R0k0T<>0[0f0<66>0<EFBFBD>0<EFBFBD>0pe<70>0<EFBFBD>Ock
lotsize = MathFloor(lotsize / lotstep) * lotstep;
// <00>0<EFBFBD>0<EFBFBD>0n0g\<5C>0<EFBFBD>0<EFBFBD>0pe<70>0g'Y<>0<EFBFBD>0<EFBFBD>0peg0܈ck<63>0K0Q0<51>0
lotsize = MathMax(lotsize, minlots);
lotsize = MathMin(lotsize, maxlots);
return(lotsize);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>}<7D>b |
//+------------------------------------------------------------------+
int Entry(bool isbuy)
{
if (Entry_Rule1(isbuy) == 1 && (Entry_Filter1(isbuy) == 1 || Entry_Filter1(isbuy) == 3)
&& (Entry_Filter2(isbuy) == 1 || Entry_Filter2(isbuy) == 3)
&& (Entry_Filter3(isbuy) == 1 || Entry_Filter3(isbuy) == 3)
&& (Entry_Filter4(isbuy) == 1 || Entry_Filter4(isbuy) == 3)
&& (Entry_Filter5(isbuy) == 1 || Entry_Filter5(isbuy) == 3)
&& (Entry_Filter6(isbuy) == 1 || Entry_Filter6(isbuy) == 3)
&& (Entry_Filter7(isbuy) == 1 || Entry_Filter7(isbuy) == 3)
)
{
return(1);
}
else if (Entry_Rule1(isbuy) == 2 && (Entry_Filter1(isbuy) == 2 || Entry_Filter1(isbuy) == 3)
&& (Entry_Filter2(isbuy) == 2 || Entry_Filter2(isbuy) == 3)
&& (Entry_Filter3(isbuy) == 2 || Entry_Filter3(isbuy) == 3)
&& (Entry_Filter4(isbuy) == 2 || Entry_Filter4(isbuy) == 3)
&& (Entry_Filter5(isbuy) == 2 || Entry_Filter5(isbuy) == 3)
&& (Entry_Filter6(isbuy) == 2 || Entry_Filter6(isbuy) == 3)
&& (Entry_Filter7(isbuy) == 2 || Entry_Filter7(isbuy) == 3)
)
{
return(2);
}
else
{
return(0);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0zln<>}<7D>b |
//+------------------------------------------------------------------+
int Exit1(bool isbuy)
{
if (Exit_Rule1(isbuy) == 3 && Exit_Rule2(isbuy) == 3 && Exit_Rule3(isbuy) == 3
&& Exit_Rule4(isbuy) == 3 && Exit_Rule5(isbuy) == 3)
{
return(0);
}
else if (Exit_Rule1(isbuy) == 1)
{
return(1);
}
else if( Exit_Rule2(isbuy) == 1)
{
return(1);
}
else if (Exit_Rule3(isbuy) == 1)
{
return(1);
}
else if( Exit_Rule4(isbuy) == 1)
{
return(1);
}
else if (Exit_Rule5(isbuy) == 1)
{
return(1);
}
else
{
return(0);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00><>D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0zln<>}<7D>b |
//+------------------------------------------------------------------+
int Exit2(bool isbuy)
{
if (Exit_Rule1(isbuy) == 3 && Exit_Rule2(isbuy) == 3 && Exit_Rule3(isbuy) == 3
&& Exit_Rule4(isbuy) == 3 && Exit_Rule5(isbuy) == 3)
{
return(0);
}
else if (Exit_Rule1(isbuy) == 2)
{
return(2);
}
else if (Exit_Rule2(isbuy) == 2)
{
return(2);
}
else if (Exit_Rule3(isbuy) == 2)
{
return(2);
}
else if (Exit_Rule4(isbuy) == 2)
{
return(2);
}
else if (Exit_Rule5(isbuy) == 2)
{
return(2);
}
else
{
return(0);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Entry_Rule1(bool isbuy)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
// Bf<42><66>6R<36>_k0<6B>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD><53>Bf<42><66>g0<67>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$R<>[
if (GMT_Kadou_OK1 == true || GMT_Kadou_OK1_noFilter == true)
{
return(1);
} // <00><>D0
if (GMT_Kadou_OK2 == true || GMT_Kadou_OK2_noFilter == true)
{
return(2);
} // <00>X<EFBFBD>0
return(0); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Entry_Filter1(bool isbuy)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double spread = MarketInfo(NULL, MODE_SPREAD);
if (Digits == 3 || Digits == 5)
spread /= 10.0;
if (spread > MaxSpread_pips)
{
return(0);
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 N1<4E><31>S
else
{
return(3);
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<30><31>S
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02 |
//+------------------------------------------------------------------+
int Entry_Filter2(bool isbuy)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02
// 12/25~1/3~0g0o0<6F>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0j0D0
int NGMonth = Month();
int NGDay = Day();
if (YearendClose == true
&& ((NGMonth == 12 && NGDay >= 25) || (NGMonth == 1 && NGDay <= 3))
)
{
return(0);
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03 |
//+------------------------------------------------------------------+
int Entry_Filter3(bool isbuy)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03
// N<><4E>S$P<>RM0k0<6B>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06R<36>_
// N<><4E>S0,gn0gؚ$P0g<>[$P<>0Bl<42>0<EFBFBD>0
double MostHigh1 = High[iHighest(NULL, PERIOD_H1, MODE_HIGH, CandleCheckCount1, 1)];
double MostLow1 = Low[iLowest(NULL, PERIOD_H1, MODE_LOW , CandleCheckCount1, 1)];
double MostHigh2 = High[iHighest(NULL, PERIOD_H1, MODE_HIGH, CandleCheckCount2, 1)];
double MostLow2 = Low[iLowest(NULL, PERIOD_H1, MODE_LOW , CandleCheckCount2, 1)];
// N<><4E>S<EFBFBD>%,gk0<6B>%<25>%pips<00>N<EFBFBD>Qn0$P<>RM0`0c0_0<5F>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>ybk
if (isbuy == true && MostHigh1 - MostLow1 < HL_margin1 * xpoint)
{
return(0);
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
if (isbuy == false && MostHigh2 - MostLow2 < HL_margin2 * xpoint)
{
return(0);
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04 |
//+------------------------------------------------------------------+
int Entry_Filter4(bool isbuy)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04
// N<><4E>S$P<>RM0k0<6B>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06R<36>_
// N<><4E>S0,gn0gؚ$P0g<>[$P<>0Bl<42>0<EFBFBD>0
double MostHigh = High[iHighest(NULL, PERIOD_H1, MODE_HIGH, CandleCheckCount_H, 1)];
double MostLow = Low[iLowest(NULL, PERIOD_H1, MODE_LOW , CandleCheckCount_L, 1)];
double HC = MostHigh - Close[1];
double LC = Close[1] - MostLow;
// N<><4E>S<EFBFBD>%,gn00ؚ$Ph01,gMRB}$Pn0<6E>]L0<4C>%<25>%pips<00>N
N`0c0_0<5F>0<EFBFBD><30>D0<44>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>ybk
if (isbuy == true && HC > HC_margin * xpoint)
{
return(0);
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
// N<><4E>S<EFBFBD>%,gn00<>[$Ph01,gMRB}$Pn0<6E>]L0<4C>%<25>%pips<00>N
N`0c0_0<5F>0<EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>ybk
if (isbuy == false && LC > LC_margin * xpoint)
{
return(0);
} // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05 |
//+------------------------------------------------------------------+
int Entry_Filter5(bool isbuy)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05
// MA<00>0<EFBFBD>[<00>
double MA_fast1 = iMA(NULL, PERIOD_H1, MA_PERIOD, 0, MODE_EMA, PRICE_CLOSE, 1); // 1,gMRn0<6E>wgMA
// <00>O<hL0w<30>g<>y<EFBFBD>Rs^GW<47>}<7D>0<EFBFBD>0
Nj0<EFBFBD>0 0<><30>D0 00 Nj0<6A>0 0<>X<EFBFBD>0 0
if (isbuy == true && GMT_Kadou_OK1 == true && Close[1] > MA_fast1)
{
return(1);
} // <00><>D0
if (isbuy == false && GMT_Kadou_OK2 == true && Close[1] <MA_fast1)
{
return(2);
} // <00>X<EFBFBD>0
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0j0W0
if (isbuy == true && GMT_Kadou_OK1_noFilter == true)
{
return(1);
} // <00><>D0
if (isbuy == false && GMT_Kadou_OK2_noFilter == true)
{
return(2);
} // <00>X<EFBFBD>0
return(0);
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06 |
//+------------------------------------------------------------------+
int Entry_Filter6(bool isbuy)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06
// MA<00>0<EFBFBD>[<00>
double MA1 = iMA(NULL, PERIOD_M15, 20, 0, MODE_SMA, PRICE_CLOSE, 1);
// <00>O<hL0<4C>wg<>y<EFBFBD>Rs^GW<47>}n0 Nj0<6A>0 0<><30>D0 00
Nj0<EFBFBD>0 0<>X<EFBFBD>0 0
if (isbuy == true && GMT_Kadou_OK1 == true && MA1 > Close[1])
{
return(1);
} // <00><>D0
if (isbuy == false && GMT_Kadou_OK2 == true && MA1 < Close[1])
{
return(2);
} // <00>X<EFBFBD>0
// <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0j0W0
if (isbuy == true && GMT_Kadou_OK1_noFilter == true)
{
return(1);
} // <00><>D0
if (isbuy == false && GMT_Kadou_OK2_noFilter == true)
{
return(2);
} // <00>X<EFBFBD>0
return(0); // <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qegj0D0
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>07 |
//+------------------------------------------------------------------+
int Entry_Filter7(bool isbuy)
{
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>07
//<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>07<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Exit_Rule1(bool isbuy)
{
// zln<>0<EFBFBD>0<EFBFBD>01
// zln<>0<EFBFBD>0<EFBFBD>01<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<>0<EFBFBD>0<EFBFBD>02 |
//+------------------------------------------------------------------+
int Exit_Rule2(bool isbuy)
{
// zln<>0<EFBFBD>0<EFBFBD>02
// zln<>0<EFBFBD>0<EFBFBD>02<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<>0<EFBFBD>0<EFBFBD>03 |
//+------------------------------------------------------------------+
int Exit_Rule3(bool isbuy)
{
// zln<>0<EFBFBD>0<EFBFBD>03
// zln<>0<EFBFBD>0<EFBFBD>03<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<>0<EFBFBD>0<EFBFBD>04 |
//+------------------------------------------------------------------+
int Exit_Rule4(bool isbuy)
{
// zln<>0<EFBFBD>0<EFBFBD>04
// zln<>0<EFBFBD>0<EFBFBD>04<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<>0<EFBFBD>0<EFBFBD>05 |
//+------------------------------------------------------------------+
int Exit_Rule5(bool isbuy)
{
// zln<>0<EFBFBD>0<EFBFBD>05
// zln<>0<EFBFBD>0<EFBFBD>05<00>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
return(3);
}
//+------------------------------------------------------------------+