gryps2/EA-code/handy_systems/RELEASE-CANDIDATE/84002-BITTERSWEET for AUDNZD/BITTERSWEET for AUDNZD.mq4

2113 lines
116 KiB
MQL4
Raw Permalink Normal View History

2025-05-30 14:58:21 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| BITTERSWEET for AUDNZD.mq4 |
//| Copyright (c) 2024, HANDY SYSTEMS, All Rights Reserved. |
//| https://www.handy-systems.com/ |
//+------------------------------------------------------------------+
#property strict
//PRODUCTION<EFBFBD>0<EFBFBD>0<EFBFBD>0g0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0 N<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>00
#define _DEVELOPMENT
//PRODUCTION<EFBFBD>0<EFBFBD>0<EFBFBD>0g0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0
N<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>00
//EA-BANK<EFBFBD>S<EFBFBD>^~<EFBFBD>0k0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0 Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>d<EFBFBD>Y0<EFBFBD>00
//#define _EA_BANK
//EA-BANK<EFBFBD>S<EFBFBD>^~<EFBFBD>0k0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0
Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>d<EFBFBD>Y0<EFBFBD>00
//GogoJungleb__<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0 Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>d<EFBFBD>Y0<EFBFBD>00
//#define _GOGOJUNGLE
//GogoJungleb__<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0
Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>d<EFBFBD>Y0<EFBFBD>00
//LET'S REALb__EAk0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0 Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>d<EFBFBD>Y0<EFBFBD>00
//#define _LETS_REAL
//LET'S REALb__EAk0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0
Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>d<EFBFBD>Y0<EFBFBD>00
//MQL5.comb__EAk0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0 Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>d<EFBFBD>Y0<EFBFBD>00
//#define _MQL5_COM
//MQL5.comb__EAk0Y0<EFBFBD>0Bfo00S0S0K0<EFBFBD>0
Nn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>d<EFBFBD>Y0<EFBFBD>00
#include <stdlib.mqh>
//----------EA-BANK certification begin
#ifdef _EA_BANK
#include <auth.mqh>
#endif // _EA_BANK
//----------EA-BANK certification end
#property copyright "Copyright (c) 2024, HANDY SYSTEMS, All Rights Reserved."
//N,<EFBFBD><EFBFBD>vj0<EFBFBD>Q<EFBFBD>T<EFBFBD>0<EFBFBD>0<EFBFBD>0g0o0Y<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0o01<EFBFBD><EFBFBD>SU0<EFBFBD>0f0D0j0D0_0<EFBFBD>00S0S0K0<EFBFBD>0 Nn0L<EFBFBD>o0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
//#property link "https://www.handy-systems.com/"
//N,<EFBFBD><EFBFBD>vj0<EFBFBD>Q<EFBFBD>T<EFBFBD>0<EFBFBD>0<EFBFBD>0g0o0Y<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0o01<EFBFBD><EFBFBD>SU0<EFBFBD>0f0D0j0D0_0<EFBFBD>00S0S0K0<EFBFBD>0
Nn0L<EFBFBD>o0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
#property icon "HANDY-SYSTEMS-LOGO.ico"
#property version "1.0"
#ifdef _DEVELOPMENT
#define dinput input
#else
#define dinput
#endif //_DEVELOPMENT_
#ifdef _GOGOJUNGLE
const string STR_EA_ID = "XXXXX";
const string STR_EA_NAME = STR_EA_ID + ":" + "BITTERSWEET_for_AUDNZD";
#else
const string STR_EA_NAME = "BITTERSWEET_for_AUDNZD";
#endif // _GOGOJUNGLE
const string STR_OP_BUY = "BUY";
const string STR_OP_SELL = "SELL";
// comment string
const string STR_COMMENT_BUY = STR_EA_NAME + " " + STR_OP_BUY;
const string STR_COMMENT_SELL = STR_EA_NAME + " " + STR_OP_SELL;
// maximum character limit of MQL4
const int COMMENT_LENGTH = MathMax(StringLen(STR_COMMENT_BUY), StringLen(STR_COMMENT_SELL));
const int MAX_COMMENT_LENGTH = 31;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input int MagicNumber = 84002; // MagicNumber
// <EFBFBD>0<EFBFBD>0<EFBFBD>0pe
input double Lots = 0.01; // Lots
// g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 (pips)
input double MaxSpread = 3.5; // MaxSpread (pips)
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0c$P<EFBFBD>0<EFBFBD>c$P <EFBFBD>
input double TakeProfit_pips = 1000.0; // Take Profot (pips)
input double StopLoss_pips = 300.0; // Stop Loss (pips)
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Oc(u<EFBFBD>i <EFBFBD>SO
struct Parameters
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<hE^<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
double Rikaku_pips; // <EFBFBD>Q<EFBFBD><EFBFBD>)R<EFBFBD>x<EFBFBD>O<hE^ (pips)
double Songiri_pips; // <EFBFBD>Q<EFBFBD><EFBFBD> dR<EFBFBD>0<EFBFBD>O<hE^ (pips)
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double TrailingStopStartPips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>YY0<EFBFBD>0<EFBFBD>O<hE^ (pips)
double TrailingStopPips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>O<hE^ (pips)
//c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double ReLimitActionPips; // c$P<EFBFBD>l<EFBFBD>e<EFBFBD>0<EFBFBD>Q-<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>O<hE^ (pip) <EFBFBD>
double ReLimitPips; // c$P<EFBFBD>l<EFBFBD>e<EFBFBD>Q-<EFBFBD><EFBFBD>[Bfn0c$PE^<EFBFBD>pips <EFBFBD>
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double MinExpected_Pips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
// zlnBfn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double TP_Acceptable_Pips; // 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
double SL_Acceptable_Pips; // 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
};
//<EFBFBD>`<EFBFBD>[g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
const double MAX_ESTIMATED_SPREAD = 35.0;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0;R0E^
const double SPREAD_TICK_SIZE = 3.5;
//T<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u<EFBFBD>i <EFBFBD>SOn0-<EFBFBD><EFBFBD>[$P
/*
const Parameters PARAMETERS[] =
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>3.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
5.0,
120.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
40.0,
5.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
5.0,
35.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
5.5,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
43.5
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>7.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
700.0,
980.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
35.0,
5.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
5.0,
80.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
9.5,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
176.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>11.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
650.0,
940.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
100.0,
85.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
10.0,
60.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
12.5,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
192.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>14.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
120.0,
1000.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
100.0,
100.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
5.0,
100.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
8.5,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
131.5
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>17.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
150.0,
1000.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
100.0,
50.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
40.0,
75.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
9.5,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
132.5
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>21.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
90.0,
850.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
650.0,
10.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
35.0,
40.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
6.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
136.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>24.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
85.0,
850.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
1000.0,
100.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
30.0,
35.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
51.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
256.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>28.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
1400.0,
1000.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
500.0,
250.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
5.0,
80.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
51.5,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
259.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>31.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
1350.0,
2100.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
600.0,
100.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
5.0,
80.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
51.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
262.5
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>35.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
1800.0,
2100.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
750.0,
70.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
75.0,
115.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
51.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
91.5
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>035.0^<EFBFBD> (pips) = 40.0<EFBFBD>0<EFBFBD>`<EFBFBD>[
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
800.0,
3000.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
40.0,
165.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
160.0,
140.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
51.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
192.5
}
};
*/
const Parameters PARAMETERS[] =
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>3.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
5.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
5.0,
35.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
19.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
910.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
300.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>7.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>11.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>14.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>17.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>21.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>24.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>28.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>31.5 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>35.0 (pips)
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
},
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>035.0^<EFBFBD> (pips) = 40.0<EFBFBD>0<EFBFBD>`<EFBFBD>[
{
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<h<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
0.0,
0.0,
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
0.0,
// 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
0.0
}
};
//T<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Oc(u<EFBFBD>i <EFBFBD>SOn0g'Y<EFBFBD><EFBFBD> }pe
const int PARAMETERS_COUNT = (int)ArraySize(PARAMETERS); // = 10
//T<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0(u<EFBFBD>i <EFBFBD>SOk0<EFBFBD>[Y0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>kn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
enum PARAMETERS_INDEX
{
PARAMETERS_NONE = 0, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0c<EFBFBD>[j0W0
PARAMETERS_035 = 0, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>3.5 (pips)
PARAMETERS_070 = 1, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>7.0 (pips)
PARAMETERS_115 = 2, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>11.5 (pips)
PARAMETERS_140 = 3, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>14.0 (pips)
PARAMETERS_175 = 4, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>17.5 (pips)
PARAMETERS_210 = 5, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>21.0 (pips)
PARAMETERS_245 = 6, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>24.5 (pips)
PARAMETERS_280 = 7, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>28.0 (pips)
PARAMETERS_315 = 8, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>31.5 (pips)
PARAMETERS_350 = 9, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>35.0 (pips)
PARAMETERS_OVER = 10 // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>035.0^<EFBFBD> (pips)
};
/*
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<hE^<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
dinput double Rikaku_pips = PARAMETERS[PARAMETERS_NONE].Rikaku_pips; // <EFBFBD>Q<EFBFBD><EFBFBD>)R<EFBFBD>x<EFBFBD>O<hE^ (pips)
dinput double Songiri_pips = PARAMETERS[PARAMETERS_NONE].Songiri_pips; // <EFBFBD>Q<EFBFBD><EFBFBD> dR<EFBFBD>0<EFBFBD>O<hE^ (pips)
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
dinput double TrailingStopStartPips = PARAMETERS[PARAMETERS_NONE].TrailingStopStartPips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>YY0<EFBFBD>0<EFBFBD>O<hE^ (pips)
dinput double TrailingStopPips = PARAMETERS[PARAMETERS_NONE].TrailingStopPips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>O<hE^ (pips)
//c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
dinput double ReLimitActionPips = PARAMETERS[PARAMETERS_NONE].ReLimitActionPips; // c$P<EFBFBD>l<EFBFBD>e<EFBFBD>0<EFBFBD>Q-<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>O<hE^ (pip) <EFBFBD>
dinput double ReLimitPips = PARAMETERS[PARAMETERS_NONE].ReLimitPips; // c$P<EFBFBD>l<EFBFBD>e<EFBFBD>Q-<EFBFBD><EFBFBD>[Bfn0c$PE^<EFBFBD>pips <EFBFBD>
*/
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<hE^<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
dinput double Rikaku_pips = 500.0; // <EFBFBD>Q<EFBFBD><EFBFBD>)R<EFBFBD>x<EFBFBD>O<hE^ (pips)
dinput double Songiri_pips = 40.0; // <EFBFBD>Q<EFBFBD><EFBFBD> dR<EFBFBD>0<EFBFBD>O<hE^ (pips)
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
dinput double TrailingStopStartPips = 400.0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>YY0<EFBFBD>0<EFBFBD>O<hE^ (pips)
dinput double TrailingStopPips = 0.5; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>O<hE^ (pips)
//c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
dinput double ReLimitActionPips = 5.0; // c$P<EFBFBD>l<EFBFBD>e<EFBFBD>0<EFBFBD>Q-<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>O<hE^ (pip) <EFBFBD>
dinput double ReLimitPips = 500.0; // c$P<EFBFBD>l<EFBFBD>e<EFBFBD>Q-<EFBFBD><EFBFBD>[Bfn0c$PE^<EFBFBD>pips <EFBFBD>
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int Slippage = 3;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Vpe
const int MAX_ORDER_REPEAT = 5;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>__jBf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>y <EFBFBD>
const int TIME_WAIT_FOR_MARKET_OPEN = 3600;
int xBars = 0, xxBars = 0;
double BuyStop = 0, SellStop = DBL_MAX;
double BuyLimit = DBL_MAX, SellLimit = 0;
//g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe<EFBFBD>00 N<EFBFBD>g0eQ<EFBFBD>Rc<EFBFBD>[W0f0 NU0D00
int maxposition = 1;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00k0<z<EFBFBD>PU0[0<EFBFBD>04XTo00truek0W0f0 NU0D00
bool CandleStartStarting = true;
//gi<EFBFBD>S6R<EFBFBD>_<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
#define OPTIMIZE_RF 0x0001
#define OPTIMIZE_TR 0x0002
#define OPTIMIZE_WR 0x0004
enum OPTYPE
{
OPTYPE_RF_ONLY = OPTIMIZE_RF, // RF
OPTYPE_TR_ONLY = OPTIMIZE_TR, // <EFBFBD>S_pe
OPTYPE_WR_ONLY = OPTIMIZE_WR, // <EFBFBD>R<EFBFBD>s
OPTYPE_RF_TR = OPTIMIZE_RF |
OPTIMIZE_TR, // RF+<EFBFBD>S_pe
OPTYPE_RF_WR = OPTIMIZE_RF |
OPTIMIZE_WR, // RF+<EFBFBD>R<EFBFBD>s
OPTYPE_TR_WR = OPTIMIZE_TR |
OPTIMIZE_WR, // <EFBFBD>S_pe+<EFBFBD>R<EFBFBD>s
OPTYPE_RF_TR_WR = OPTIMIZE_RF |
OPTIMIZE_TR |
OPTIMIZE_WR, // RF+<EFBFBD>S_pe+<EFBFBD>R<EFBFBD>s
OPTYPE_NONE = 0 // j0W0
};
/*
dinput OPTYPE OP_Type = OPTYPE_RF_ONLY; // gi<EFBFBD>S<EFBFBD>0<EFBFBD>0<EFBFBD>0
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype<EFBFBD>0 N<EFBFBD>k0<EFBFBD><EFBFBD><EFBFBD>0d0Q0~0Y00
dinput double MinExpected_Pips = PARAMETERS[PARAMETERS_NONE].MinExpected_Pips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype<EFBFBD>0 N<EFBFBD>k0<EFBFBD><EFBFBD><EFBFBD>0d0Q0~0Y00
//zln<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype<EFBFBD>0 N<EFBFBD>k0<EFBFBD><EFBFBD><EFBFBD>0d0Q0~0Y00
dinput double SL_Acceptable_Pips = PARAMETERS[PARAMETERS_NONE].SL_Acceptable_Pips; // 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0+T0 d (pips)
*/
dinput OPTYPE OP_Type = OPTYPE_RF_ONLY; // gi<EFBFBD>S<EFBFBD>0<EFBFBD>0<EFBFBD>0
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype<EFBFBD>0 N<EFBFBD>k0<EFBFBD><EFBFBD><EFBFBD>0d0Q0~0Y00
dinput double MinExpected_Pips = 70.0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype<EFBFBD>0 N<EFBFBD>k0<EFBFBD><EFBFBD><EFBFBD>0d0Q0~0Y00
//zln<EFBFBD>0<EFBFBD>0<EFBFBD>0n0T Ype<EFBFBD>0 N<EFBFBD>k0<EFBFBD><EFBFBD><EFBFBD>0d0Q0~0Y00
dinput double TP_Acceptable_Pips = 70.0; // 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
dinput double SL_Acceptable_Pips = 15.0; // 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
#ifdef _LETS_REAL
// LET'S REALn0<EFBFBD><EFBFBD><<EFBFBD>(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>[<EFBFBD>Y0<EFBFBD>0
int lr_product_id=758; // PRODUCT ID
#import "wininet.dll"
int InternetAttemptConnect(int x);
int InternetOpenW(string &sAgent,int lAccessType,string &sProxyName,string &sProxyBypass,int lFlags);
int InternetConnectW(int hInternet,string &szServerName,int nServerPort,string &lpszUsername,string &lpszPassword,int dwService,int dwFlags,int dwContext);
int HttpOpenRequestW(int hConnect,string &Verb,string &ObjectName,string &Version,string &Referer,string &AcceptTypes,uint dwFlags,int dwContext);
int HttpSendRequestW(int hRequest,string &lpszHeaders,int dwHeadersLength,uchar &lpOptional[],int dwOptionalLength);
int HttpQueryInfoW(int hRequest,int dwInfoLevel,int &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
int InternetReadFile(int hFile,uchar &sBuffer[],int lNumBytesToRead,int &lNumberOfBytesRead);
int InternetCloseHandle(int hInet);
#import
#define OPEN_TYPE_PRECONFIG 0
#define FLAG_KEEP_CONNECTION 0x00400000
#define FLAG_PRAGMA_NOCACHE 0x00000100
#define FLAG_RELOAD 0x80000000
#define SERVICE_HTTP 3
#define CloseHandle InternetCloseHandle(lr_session);InternetCloseHandle(lr_connect);InternetCloseHandle(lr_request);InternetCloseHandle(lr_send);
string
lr_is_demo="0",
lr_platform="MT4_EA",
lr_version="1.07",
lr_host="api.lets-real.com",
lr_path="index.php?route=api/register",
lr_vers="HTTP/1.1",
lr_verb="POST",
lr_head="Content-Type: application/x-www-form-urlencoded",
lr_useragent="Mozilla",
lr_result,
lr_nill,
lr_postdata,
lr_ct,
lr_msg,
lr_msg1="Authentication Failed! ",
lr_msg2=" from lets-real.com ";
int lr_port=80,lr_session,lr_connect,lr_readfile,lr_request,lr_send,lr_auth_failure_times;
bool lr_auth_success=false,lr_auth_exec=true;
datetime lr_auth_time;
#endif // _LETS_REAL
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
#ifdef _EA_BANK
//----------EA-BANK certification begin
if (!auth()) {
return -1;
}
//----------EA-BANK certification end
//<EFBFBD><EFBFBD><<EFBFBD>OKn0<EFBFBD>eW[R<EFBFBD>0h<EFBFBD>:yY0<EFBFBD>0
Comment("EA-BANK<00><><<3C><1A>OK");
#endif // _EA_BANK
#ifdef _LETS_REAL
// LET'S REALn0<EFBFBD><EFBFBD><<EFBFBD>(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>[<EFBFBD>Y0<EFBFBD>0
lr_is_demo=IsDemo()?"1":"0";
if (IsTesting())
{
lr_auth_exec=false;
lr_auth_success=true;
}
if (lr_auth_exec && !IsDllsAllowed())
{
lr_msg=lr_msg1+"Please allow use of DLL "+lr_msg2;
Alert(lr_msg);
Print(lr_msg);
ExpertRemove();
return(INIT_FAILED);
}
#endif // _LETS_REAL
//O(uW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0^<EFBFBD>h<EFBFBD>:yk0Y0<EFBFBD>0
HideTestIndicators(true);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0w<EFBFBD>o0g'Y<EFBFBD>eW[pe6RP<EFBFBD>$P<EFBFBD>N<EFBFBD>QK0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if (!Validate(COMMENT_LENGTH <= MAX_COMMENT_LENGTH, "The comment exceeds the maximum character length"))
{
return(INIT_PARAMETERS_INCORRECT);
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
#ifdef _EA_BANK
//----------EA-BANK certification begin
if (!auth()) {
return;
}
//----------EA-BANK certification end
#endif // _EA_BANK
#ifdef _LETS_REAL
// LET'S REALn0<EFBFBD><EFBFBD><<EFBFBD>(u<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>[<EFBFBD>Y0<EFBFBD>0
if (lr_auth_exec && TimeCurrent()>=lr_auth_time)
{
CloseHandle
string lr_p0,lr_p1,lr_p2,lr_p3;
char lr_data[];
lr_p0=IntegerToString(IsTradeAllowed());
lr_p1=AccountCompany();
lr_p2=IntegerToString(AccountNumber());
lr_p3=StringSubstr(WindowExpertName(),StringLen(WindowExpertName())-8,8);
lr_postdata="trade_allowed="+lr_p0+"&fx_company="+lr_p1+"&fx_account="+lr_p2+"&key="+lr_p3+"&ver="+lr_version+"&product_id="+IntegerToString(lr_product_id)+"&platform="+lr_platform+"&is_demo="+lr_is_demo;
StringToCharArray(lr_postdata,lr_data,0,WHOLE_ARRAY,CP_UTF8);
lr_session=InternetOpenW(lr_useragent,OPEN_TYPE_PRECONFIG,lr_nill,lr_nill,0);
lr_connect=InternetConnectW(lr_session,lr_host,lr_port,lr_nill,lr_nill,SERVICE_HTTP,0,0);
lr_request=HttpOpenRequestW(lr_connect,lr_verb,lr_path,lr_vers,lr_nill,lr_nill,FLAG_KEEP_CONNECTION|FLAG_RELOAD|FLAG_PRAGMA_NOCACHE,0);
lr_send=HttpSendRequestW(lr_request,lr_head,StringLen(lr_head),lr_data,ArraySize(lr_data)-1);
if (lr_send<=0)
{
lr_msg=lr_msg1+lr_msg2+"\n"+"Please check your network."+"\n"+
"InternetAttemptConnect="+IntegerToString(InternetAttemptConnect(0))+"\n"+
"session="+IntegerToString(lr_session)+"\n"+
"connect="+IntegerToString(lr_connect)+"\n"+
"request="+IntegerToString(lr_request)+"\n"+
"send="+IntegerToString(lr_send);
Comment(lr_msg);
return;
}
else
{
uchar response[100];
int dwBytes1;
lr_result="";
while(InternetReadFile(lr_request,response,0,dwBytes1))
{
lr_readfile=InternetReadFile(lr_request,response,100,dwBytes1);
if (dwBytes1<=0)
break;
lr_result=lr_result+CharArrayToString(response,0,dwBytes1);
}
string lr_to_split=lr_result;
string lr_sep=",";
string lr_respara[];
ushort lr_u_sep=StringGetCharacter(lr_sep,0);
int k=StringSplit(lr_to_split,lr_u_sep,lr_respara);
if (k>0)
{
for(int j=0; j<k; j++)
{
StringReplace(lr_respara[j],"{","");
StringReplace(lr_respara[j],"}","");
int lr_position=StringFind(lr_respara[j],":",0);
lr_respara[j]=StringSubstr(lr_respara[j],lr_position+1);
}
}
else
{
ArrayResize(lr_respara,1);
lr_respara[0]="false";
}
if (lr_respara[0]!="true")
{
lr_auth_success=false;
lr_auth_failure_times++;
int seconds=lr_auth_failure_times>4?60:5;
lr_auth_time=TimeCurrent()+seconds;
lr_msg=lr_msg1+lr_to_split+lr_msg2;
Comment(lr_msg);
Print(lr_result,lr_msg2);
}
else
{
lr_auth_success=true;
lr_auth_failure_times=0;
lr_auth_time=TimeCurrent()+43200;
Print("Authentication Success "+lr_msg2);
if (StringLen(lr_msg)>0)
Comment("");
}
}
}
if (!lr_auth_success)
return;
#endif // _LETS_REAL
int i;
int ticket;
int CountBuy = 0,CountSell = 0;
double profit;
bool res;
double xpoint = Point;
// \pe<EFBFBD>p<EFBFBD>N Nn0Ahpek0<EFBFBD>_X0f0Pipsn0$P<EFBFBD>0<EFBFBD><EFBFBD>teY0<EFBFBD>0
if (Digits() == 3 || Digits() == 5)
{
xpoint = xpoint * 10;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00<z<EFBFBD>P<EFBFBD>x<EFBFBD><EFBFBD>b_ <EFBFBD>n04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if (Bars != xBars || CandleStartStarting == false)
{
xBars = Bars;
//-------- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><EFBFBD>0<EFBFBD>0K0<EFBFBD>0 <EFBFBD>--------
/*
// zv<EFBFBD>ln0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0pe=0n04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$Pk0<EFBFBD>_X0_0<EFBFBD>Q<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0
if (CountBuy + CountSell == 0)
{
// c<EFBFBD>[U0<EFBFBD>0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>O<h<EFBFBD>`1XL0<EFBFBD>f<EFBFBD>eU0<EFBFBD>0f0D0<EFBFBD>0K0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
MqlTick lastTick;
if (SymbolInfoTick(Symbol(), lastTick))
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$Pk0<EFBFBD>_X0f0<EFBFBD>Q<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0
PrintFormat("Set parameters. but count: %d, sell counr: %d", CountBuy, CountSell);
SetParametersBySpreadValue();
}
}
*/
//-------- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><EFBFBD>0<EFBFBD>0~0g0 <EFBFBD>--------
//-------- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 --------
// @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;
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 (profit >= Rikaku_pips * xpoint || profit <= -Songiri_pips * xpoint || Exit2() == 2)
{
res = WrapperOrderClose(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 (profit >= Rikaku_pips * xpoint || profit <= -Songiri_pips * xpoint || Exit1() == 1)
{
res = WrapperOrderClose(OrderTicket(),
OrderLots(),
Ask,
NULL,
Green);
}
}
}
//-------- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<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<EFBFBD>0<EFBFBD>0 --------
// @b gW0f0D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0SL, TP<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<EFBFBD><EFBFBD>b(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderSymbol() != Symbol()) continue;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderMagicNumber() != MagicNumber) continue;
if (OrderType() == OP_BUY)
{
profit = Bid - OrderOpenPrice(); // <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<EFBFBD>v<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
// TrailingStop<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD>Y0<EFBFBD>0
if (profit >= TrailingStopStartPips * xpoint && OrderStopLoss() < NormalizeDouble(Bid - TrailingStopPips * xpoint, Digits()))
{
res = WrapperOrderModify(OrderTicket(),
OrderOpenPrice(),
Bid - TrailingStopPips * xpoint,
OrderTakeProfit(),
0,
Green);
}
// c$Pn0nM0j0J0W0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD>Y0<EFBFBD>0
else if (Bid <= NormalizeDouble(OrderOpenPrice() - ReLimitActionPips * xpoint, Digits())
&& OrderTakeProfit() != NormalizeDouble(OrderOpenPrice() + ReLimitPips * xpoint, Digits()))
{
res = WrapperOrderModify(OrderTicket(),
OrderOpenPrice(),
OrderStopLoss(),
OrderOpenPrice() + ReLimitPips * xpoint,
0,
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
// TrailingStop<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD>Y0<EFBFBD>0
if (profit >= TrailingStopStartPips * xpoint && OrderStopLoss() > NormalizeDouble(Ask + TrailingStopPips * xpoint, Digits()))
{
res = WrapperOrderModify(OrderTicket(),
OrderOpenPrice(),
Ask + TrailingStopPips * xpoint,
OrderTakeProfit(),
0,
Green);
}
// c$Pn0nM0j0J0W0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD>Y0<EFBFBD>0
else if (Ask >= NormalizeDouble(OrderOpenPrice() + ReLimitActionPips * xpoint, Digits())
&& OrderTakeProfit() != NormalizeDouble(OrderOpenPrice() - ReLimitPips * xpoint, Digits()))
{
res = WrapperOrderModify(OrderTicket(),
OrderOpenPrice(),
OrderStopLoss(),
OrderOpenPrice() - ReLimitPips * xpoint,
0,
Green);
}
}
}
//-------- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD> --------
//-------- <EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 --------
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>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;
}
}
double lots = Lots;
double correct_volume;
string message;
//<EFBFBD>l<EFBFBD>epeϑ<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if (!CheckVolumeValue(Lots, correct_volume, message))
{
// <EFBFBD>l<EFBFBD>epeϑL0 Nckj04XTo00i<EFBFBD>Rj0peϑ<EFBFBD>0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0
Print(message);
lots = correct_volume;
}
// <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() == 1 && CountBuy < maxposition && xxBars != Bars)
{
// <EFBFBD>S_njё<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if (!CheckMoneyForTrade(OrderSymbol(), lots, OrderType()))
{
return;
}
ticket = WrapperOrderSend(Symbol(),
OP_BUY,
lots,
Ask,
Slippage,
0,
0,
STR_COMMENT_BUY,
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 = WrapperOrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() - StopLoss_pips * xpoint,
OrderOpenPrice() + TakeProfit_pips * xpoint,
0,
MediumSeaGreen);
}
}
xxBars = Bars;
}
else if (Entry() == 2 && CountSell < maxposition && xxBars != Bars)
{
// <EFBFBD>S_njё<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
if (!CheckMoneyForTrade(OrderSymbol(), lots, OrderType()))
{
return;
}
ticket = WrapperOrderSend(Symbol(),
OP_SELL,
lots,
Bid,
Slippage,
0,
0,
STR_COMMENT_SELL,
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 = WrapperOrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() + StopLoss_pips * xpoint,
OrderOpenPrice() - TakeProfit_pips * xpoint,
0,
MediumSeaGreen);
}
}
xxBars = Bars;
}
//-------- <EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD> --------
}
//0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Y$Pn00<z<EFBFBD>P<EFBFBD>x<EFBFBD><EFBFBD>b_ <EFBFBD>n0<EFBFBD>{<EFBFBD>Vo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
//-------- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0TP, SLn0<EFBFBD>0<EFBFBD>0<EFBFBD>0 --------
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0TP, SL<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for(i=OrdersTotal()-1; i>=0; i--)
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0x<EFBFBD><EFBFBD>b(<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0uX0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0K0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>QY0)
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false)
{
Print("OrderSelect returned the error of ", GetLastError() );
break;
}
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderSymbol() != Symbol()) continue;
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0N<EFBFBD><EFBFBD>W0j0D04XTo00for<EFBFBD>en0HQ-<EFBFBD>k0;b<EFBFBD>0 <EFBFBD>
if (OrderMagicNumber() != MagicNumber) continue;
// <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (OrderType() == OP_BUY)
{
profit = Bid - OrderOpenPrice(); // <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0`0c0_04XTn00+T0 d<EFBFBD>v<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
// TP, SLL0i0a0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[U0<EFBFBD>0f0D0j0Q0<EFBFBD>0p00TP, SL<EFBFBD>0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0
if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
{
res = WrapperOrderModify(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 = WrapperOrderModify(OrderTicket(),
OrderOpenPrice(),
OrderOpenPrice() + StopLoss_pips * xpoint,
OrderOpenPrice() - TakeProfit_pips * xpoint,
0,
MediumSeaGreen);
}
}
}
//-------- <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0TP, SLn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 <EFBFBD> --------
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>}<EFBFBD>b |
//+------------------------------------------------------------------+
int Entry()
{
if (Entry_Rule1() == 1 && (Entry_Filter1() == 1 || Entry_Filter1() == 3)
&& (Entry_Filter2() == 1 || Entry_Filter2() == 3)
&& (Entry_Filter3() == 1 || Entry_Filter3() == 3)
&& (Entry_Filter4() == 1 || Entry_Filter4() == 3)
&& (Entry_Filter5() == 1 || Entry_Filter5() == 3)
)
{
return(1);
}
else if (Entry_Rule1() == 2 && (Entry_Filter1() == 2 || Entry_Filter1() == 3)
&& (Entry_Filter2() == 2 || Entry_Filter2() == 3)
&& (Entry_Filter3() == 2 || Entry_Filter3() == 3)
&& (Entry_Filter4() == 2 || Entry_Filter4() == 3)
&& (Entry_Filter5() == 2 || Entry_Filter5() == 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()
{
if (Exit_Rule1() == 3 && Exit_Rule2() == 3 && Exit_Rule3() == 3 && Exit_Rule4() == 3 && Exit_Rule5() == 3)
{
return(0);
}
else if (Exit_Rule1() == 1)
{
return(1);
}
else if (Exit_Rule2() == 1)
{
return(1);
}
else if (Exit_Rule3() == 1)
{
return(1);
}
else if (Exit_Rule4() == 1)
{
return(1);
}
else if (Exit_Rule5() == 1)
{
return(1);
}
else
{
return(0);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0zln<EFBFBD>}<EFBFBD>b |
//+------------------------------------------------------------------+
int Exit2()
{
if (Exit_Rule1() == 3 && Exit_Rule2() == 3 && Exit_Rule3() == 3 && Exit_Rule4() == 3 && Exit_Rule5() == 3)
{
return(0);
}
else if (Exit_Rule1() == 2)
{
return(2);
}
else if (Exit_Rule2() == 2)
{
return(2);
}
else if (Exit_Rule3() == 2)
{
return(2);
}
else if (Exit_Rule4() == 2)
{
return(2);
}
else if (Exit_Rule5() == 2)
{
return(2);
}
else
{
return(0);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>l<EFBFBD>epeϑn0ck<EFBFBD>xU0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0 |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,double &correct_volume, string &message)
{
//<EFBFBD>S_<EFBFBD>d\Og01<EFBFBD><EFBFBD>SU0<EFBFBD>0<EFBFBD>0g\peϑ
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
if (volume<min_volume)
{
message=StringFormat("Volume is less than the minimal allowed SYMBOL_VOLUME_MIN=%.2f",min_volume);
correct_volume = min_volume;
return(false);
}
//<EFBFBD>S_<EFBFBD>d\Og01<EFBFBD><EFBFBD>SU0<EFBFBD>0<EFBFBD>0g'Ypeϑ
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
if (volume>max_volume)
{
message=StringFormat("Volume is greater than the maximal allowed SYMBOL_VOLUME_MAX=%.2f",max_volume);
correct_volume = max_volume;
return(false);
}
//peϑ Y<EFBFBD>fn0g\<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>_Y0<EFBFBD>0
double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
int ratio=(int)MathRound(volume/volume_step);
if (MathAbs(ratio*volume_step-volume)>0.0000001)
{
message=StringFormat("Volume is not a multiple of the minimal step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f",
volume_step,ratio*volume_step);
correct_volume = ratio*volume_step;
return(false);
}
message="Correct volume value";
correct_volume = volume;
return(true);
}
//+------------------------------------------------------------------+
//| <EFBFBD>S_njёL0 N<EFBFBD><EFBFBD>W0f0D0<EFBFBD>0K0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0 |
//+------------------------------------------------------------------+
bool CheckMoneyForTrade(string symbol, double lots,int type)
{
if (!IsTesting())
{
double free_margin=AccountFreeMarginCheck(symbol, type, lots);
// njёL0 N<EFBFBD><EFBFBD>W0f0D0<EFBFBD>04XT
if (free_margin<0)
{
string op = (type == OP_BUY ? "Buy" : "Sell");
Print("Not enough money for ", op," ",lots, " ", symbol, " Error code=",GetLastError());
return(false);
}
}
return(true);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#ifdef _DEVELOPMENT
//+------------------------------------------------------------------+
//| OnTester - c<EFBFBD>[U0<EFBFBD>0_0gi<EFBFBD>S<EFBFBD>0<EFBFBD>0<EFBFBD>0g0gi<EFBFBD>SY0<EFBFBD>0 0000000 00|
//+------------------------------------------------------------------+
double OnTester()
{
// <EFBFBD>S_pen0gi<EFBFBD>S<EFBFBD>W<EFBFBD>n$P<EFBFBD>01000k0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0
const double TRADES_STANDARD = 1000.0;
// gi<EFBFBD>S<EFBFBD>W<EFBFBD>n$P<EFBFBD>0RgSY0<EFBFBD>0
double optimization_value = 0.0;
double recovery_factor = 0.0;
double trades_optimization_factor = 0.0;
double win_rate = 0.0;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0_0<EFBFBD>00}<EFBFBD>vh0<<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0n0g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>S<EFBFBD>_Y0<EFBFBD>0
double profit = TesterStatistics(STAT_PROFIT);
double max_drawdown = TesterStatistics(STAT_EQUITY_DD);
// g'Y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L00<EFBFBD>NYn04XTo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
if (max_drawdown != 0)
{
recovery_factor = profit / max_drawdown;
}
// <EFBFBD>S_pe<EFBFBD>0<EFBFBD>S<EFBFBD>_Y0<EFBFBD>0
double trades = TesterStatistics(STAT_TRADES);
// <EFBFBD>S_peL00<EFBFBD>NYn04XTo00<EFBFBD>R<EFBFBD>s<EFBFBD><EFBFBD>}<EFBFBD>Ra0pe/<EFBFBD>}<EFBFBD>S_pe <EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
if (trades != 0)
{
win_rate = TesterStatistics(STAT_PROFIT_TRADES) / trades;
}
//0<EFBFBD>S_pen0gi<EFBFBD>S<EFBFBD>Ope<EFBFBD>0Bl<EFBFBD>0<EFBFBD>0
trades_optimization_factor = trades / TRADES_STANDARD;
// gi<EFBFBD>S<EFBFBD>W<EFBFBD>n$P = gi<EFBFBD>S<EFBFBD>0<EFBFBD>0<EFBFBD>0k0<EFBFBD>_X0_0<EFBFBD><EFBFBD> }n0$Pn0Mz<EFBFBD>{$P
switch(OP_Type)
{
case OPTYPE_RF_ONLY:
optimization_value = recovery_factor;
break;
case OPTYPE_TR_ONLY:
optimization_value = trades_optimization_factor;
break;
case OPTYPE_WR_ONLY:
optimization_value = win_rate;
break;
case OPTYPE_RF_TR:
optimization_value = recovery_factor * trades_optimization_factor;
break;
case OPTYPE_RF_WR:
optimization_value = recovery_factor * win_rate;
break;
case OPTYPE_TR_WR:
optimization_value = trades_optimization_factor * win_rate;
break;
case OPTYPE_RF_TR_WR:
optimization_value = recovery_factor * trades_optimization_factor * win_rate;
break;
case OPTYPE_NONE:
optimization_value = 0.0;
break;
default:
optimization_value = 0.0;
break;
}
return(optimization_value);
}
//+------------------------------------------------------------------+
#endif // _DEVELOPMENT
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0f0D0<EFBFBD>0K0<EFBFBD>x<EFBFBD><EFBFBD>Y0<EFBFBD>0 000000000 |
//+------------------------------------------------------------------+
inline bool IsMarketOpen(string symbol = NULL, int mode = SYMBOL_TRADE_MODE_FULL)
{
datetime currentTime = TimeCurrent();
// c<EFBFBD>[U0<EFBFBD>0_0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>S_Bf<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>S<EFBFBD>_
int tradingHours = (int)SymbolInfoInteger(symbol, SYMBOL_TRADE_MODE);
// <EFBFBD>S_Bf<EFBFBD><EFBFBD>k0<EFBFBD>We0D0f0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>rKa<EFBFBD>0$R<EFBFBD>e
if (tradingHours == SYMBOL_TRADE_MODE_DISABLED)
{
// <EFBFBD>S_ N<EFBFBD>S
return false;
}
else if (tradingHours == SYMBOL_TRADE_MODE_CLOSEONLY)
{
if (mode == SYMBOL_TRADE_MODE_CLOSEONLY)
{
// zln<EFBFBD>l<EFBFBD>en00<EFBFBD>S<EFBFBD><EFBFBD>
return true;
}
else
{
// <EFBFBD>S_ N<EFBFBD>S
return false;
}
}
else if (tradingHours == SYMBOL_TRADE_MODE_FULL)
{
// <EFBFBD>8^<EFBFBD>S_<EFBFBD>S<EFBFBD><EFBFBD>
return true;
}
//
N<EFBFBD><EFBFBD>NYn04XTo0<EFBFBD>S_ N<EFBFBD>Sh0$R<EFBFBD>e
return false;
}
//+------------------------------------------------------------------+
//| <EFBFBD>O<h<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>XSMOK0<EFBFBD>0pipsXSMOk0 Y<EFBFBD>cY0<EFBFBD>0 |
//+------------------------------------------------------------------+
double PriceToPips(
double price, // pipsXSMOk0 Y<EFBFBD>cY0<EFBFBD>0<EFBFBD>O<h
int round_digits = 1 // 8N<EFBFBD>0<EFBFBD>0\pe<EFBFBD>p<EFBFBD>N Nn0Ahpe
)
{
// <EFBFBD>c<EFBFBD>{P}<EFBFBD>gn0pips$P<EFBFBD>0<EFBFBD>[<EFBFBD>Y0<EFBFBD>0
double pips = 0.0;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0\pe<EFBFBD>p<EFBFBD>N NAhpe<EFBFBD>OcXSMOk0<EFBFBD>_X0f00<EFBFBD>c<EFBFBD>{n0_0<EFBFBD>0n0 Ppe<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
int digits = Digits;
// 3Ah<EFBFBD>05Ahn0FX<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (digits == 3 || digits == 5)
{
pips = price * MathPow(10, digits) / 10;
}
// 2Ah<EFBFBD>04Ahn0FX<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
else if (digits == 2 || digits == 4)
{
pips = price * MathPow(10, digits);
}
// c<EFBFBD>[U0<EFBFBD>0_0Ahpeg0\pe<EFBFBD>p<EFBFBD>N N<EFBFBD>08N<EFBFBD>0<EFBFBD>0
pips = NormalizeDouble(pips, round_digits);
return(pips);
}
//+------------------------------------------------------------------+
//| <EFBFBD>O<h<EFBFBD>0pipsXSMOK0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>XSMOk0 Y<EFBFBD>cY0<EFBFBD>0 |
//+------------------------------------------------------------------+
double PipsToPrice(double pips)
{
// <EFBFBD>c<EFBFBD>{P}<EFBFBD>gn0<EFBFBD>O<h$P<EFBFBD>0<EFBFBD>[<EFBFBD>Y0<EFBFBD>0
double price = 0;
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0\pe<EFBFBD>p<EFBFBD>N NAhpe<EFBFBD>OcXSMOk0<EFBFBD>_X0f00<EFBFBD>c<EFBFBD>{n0_0<EFBFBD>0n0 Ppe<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
int digits = Digits;
// 3Ah<EFBFBD>05Ahn0FX<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (digits == 3 || digits == 5)
{
price = pips / MathPow(10, digits) * 10;
}
// 2Ah<EFBFBD>04Ahn0FX<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
else if (digits == 2 || digits == 4)
{
price = pips / MathPow(10, digits);
}
// <EFBFBD>O<h<EFBFBD>0 g<EFBFBD>RAhpeg08N<EFBFBD>0<EFBFBD>0
price = NormalizeDouble(price, digits);
return(price);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0k0<EFBFBD>_X0f0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0 0|
//+------------------------------------------------------------------+
bool Validate(bool condition, string message)
{
if (!(condition))
{
Print("Validation failed: ", message);
return false;
}
return true;
}
//+------------------------------------------------------------------+
//| <EFBFBD>s(Wn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0pips$P<EFBFBD>0<EFBFBD>S<EFBFBD>_Y0<EFBFBD>0 |
//+------------------------------------------------------------------+
double GetSpreadValue()
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0pips$P<EFBFBD>0<EFBFBD>[<EFBFBD>Y0<EFBFBD>0
double spread_pips = 0.0;
// (Ask - Bid)K0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>O<h$P<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
double spread_price = (Ask - Bid);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0\pe<EFBFBD>p<EFBFBD>N NAhpe<EFBFBD>OcXSMOk0<EFBFBD>_X0f00<EFBFBD>c<EFBFBD>{n0_0<EFBFBD>0n0 Ppe<EFBFBD>0<EFBFBD><EFBFBD>{Y0<EFBFBD>0
int digits = Digits;
// 2Ahn0FX<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
switch (digits)
{
case 2:
spread_pips = spread_price * 10;
break;
case 3:
spread_pips = spread_price * 10 * 10;
break;
case 4:
spread_pips = spread_price * 10 * 10 * 10;
break;
case 5:
spread_pips = spread_price * 10 * 10 * 10 * 10;
break;
default:
spread_pips = spread_price * MathPow(10, digits) / 10;
break;
}
// c<EFBFBD>[U0<EFBFBD>0_0Ahpeg0\pe<EFBFBD>p<EFBFBD>N N<EFBFBD>08N<EFBFBD>0<EFBFBD>0
spread_pips = ((int)(spread_pips * 10)) / 10;
return spread_pips;
}
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0$Pk0<EFBFBD>_X0f0<EFBFBD>Q<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0-<EFBFBD><EFBFBD>[Y0<EFBFBD>0 |
//+------------------------------------------------------------------+
/*
void SetParametersBySpreadValue()
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0pips$P<EFBFBD>0<EFBFBD>S<EFBFBD>_Y0<EFBFBD>0
double spread = GetSpreadValue();
Parameters parameters = PARAMETERS[PARAMETERS_NONE];
if (spread <= SPREAD_TICK_SIZE * PARAMETERS_035)
{
parameters = PARAMETERS[PARAMETERS_035];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_070)
{
parameters = PARAMETERS[PARAMETERS_070];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_115)
{
parameters = PARAMETERS[PARAMETERS_115];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_140)
{
parameters = PARAMETERS[PARAMETERS_140];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_175)
{
parameters = PARAMETERS[PARAMETERS_175];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_210)
{
parameters = PARAMETERS[PARAMETERS_210];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_245)
{
parameters = PARAMETERS[PARAMETERS_245];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_280)
{
parameters = PARAMETERS[PARAMETERS_280];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_315)
{
parameters = PARAMETERS[PARAMETERS_315];
}
else if (spread <= SPREAD_TICK_SIZE * PARAMETERS_350)
{
parameters = PARAMETERS[PARAMETERS_350];
}
else
{
parameters = PARAMETERS[PARAMETERS_OVER];
}
// )R<EFBFBD>x<EFBFBD>0 dR<EFBFBD>0<EFBFBD>O<hE^<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>6R<EFBFBD>_ <EFBFBD>
Rikaku_pips = parameters.Rikaku_pips; // <EFBFBD>Q<EFBFBD><EFBFBD>)R<EFBFBD>x<EFBFBD>O<hE^ (pips)
Songiri_pips = parameters.Songiri_pips; // <EFBFBD>Q<EFBFBD><EFBFBD> dR<EFBFBD>0<EFBFBD>O<hE^ (pips)
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
TrailingStopStartPips = parameters.TrailingStopStartPips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>YY0<EFBFBD>0<EFBFBD>O<hE^ (pips)
TrailingStopPips = parameters.TrailingStopPips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0<EFBFBD>O<hE^ (pips)
// c$PR<EFBFBD>0 NR0n0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
ReLimitActionPips = parameters.ReLimitActionPips; // c$P<EFBFBD>l<EFBFBD>e<EFBFBD>0<EFBFBD>Q-<EFBFBD><EFBFBD>[Y0<EFBFBD>0<EFBFBD>O<hE^ (pip) <EFBFBD>
ReLimitPips = parameters.ReLimitPips; // c$P<EFBFBD>l<EFBFBD>e<EFBFBD>Q-<EFBFBD><EFBFBD>[Bfn0c$PE^<EFBFBD>pips <EFBFBD>
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
MinExpected_Pips = parameters.MinExpected_Pips; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0g\g<EFBFBD>_)R<EFBFBD>v (pips)
// zlnBfn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
TP_Acceptable_Pips = parameters.TP_Acceptable_Pips; // 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0)R<EFBFBD>v (pips)
SL_Acceptable_Pips = parameters.SL_Acceptable_Pips; // 1<EFBFBD><EFBFBD>[<EFBFBD>S<EFBFBD><EFBFBD>j0 d1Y (pips)
}
*/
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Entry_Rule1()
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
int shift = 0;
// <EFBFBD>vMRn0B}$Ph0<EFBFBD>s(W<EFBFBD>O<hn0MOn<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>0<EFBFBD>x<EFBFBD><EFBFBD>
double close = iClose(NULL, 0, shift+1);
double ask = Ask;
double bid = Bid;
double open = iOpen(NULL, 0, shift);
// g<EFBFBD>_U0<EFBFBD>0<EFBFBD>0pipspe<EFBFBD>0<EFBFBD><EFBFBD>{
double expected_pips = 0;
// <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (close > open)
{
// <EFBFBD>vMRn0B}$PK0<EFBFBD>0<EFBFBD>s(Wn0Ask~0g0n0pipspe<EFBFBD>0<EFBFBD><EFBFBD>{
expected_pips = PriceToPips(close - ask);
if (expected_pips >= MinExpected_Pips)
{
return(1);
}
}
// <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
else if (close < open)
{
// <EFBFBD>s(Wn0BidK0<EFBFBD>0<EFBFBD>vMRn0B}$P~0g0n0pipspe<EFBFBD>0<EFBFBD><EFBFBD>{
expected_pips = PriceToPips(bid - close);
if (expected_pips >= MinExpected_Pips)
{
return(2);
}
}
return(0);
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Entry_Filter1()
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
if (GetSpreadValue() > MaxSpread)
return(0); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 N1<EFBFBD><EFBFBD>S
else
return(3); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>S
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
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()
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
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()
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
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()
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
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()
{
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>01 |
//+------------------------------------------------------------------+
int Exit_Rule1()
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
// +T0 d<EFBFBD>vL0<EFBFBD>Qf0D0<EFBFBD>04XTo007_6Rzln<EFBFBD>0L<EFBFBD>F0
double profit = 0.0; // +T0 d<EFBFBD>v
// <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (OrderType() == OP_BUY)
{
profit = OrderProfit(); // <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
if (PriceToPips(profit) >= TP_Acceptable_Pips)
{
// +T0<EFBFBD>vL0g<EFBFBD>_$P<EFBFBD>N
Nn04XTo007_6Rzln<EFBFBD>X<EFBFBD>0
return(2);
}
} /// zln<EFBFBD>X<EFBFBD>0
// <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
else if (OrderType() == OP_SELL)
{
profit = OrderProfit(); // <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
if (PriceToPips(profit) >= TP_Acceptable_Pips)
{
// +T0<EFBFBD>vL0g<EFBFBD>_$P<EFBFBD>N
Nn04XTo007_6Rzln<EFBFBD><EFBFBD>D0
return(1);
}
} // zln<EFBFBD><EFBFBD>D0
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>02 |
//+------------------------------------------------------------------+
int Exit_Rule2()
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>02<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
// +T0 d<EFBFBD>vL0<EFBFBD>Qf0D0<EFBFBD>04XTo007_6Rzln<EFBFBD>0L<EFBFBD>F0
double profit = 0.0; // +T0 d<EFBFBD>v
// <EFBFBD><EFBFBD>D0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
if (OrderType() == OP_BUY)
{
profit = OrderProfit(); // <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
if (PriceToPips(profit) < -SL_Acceptable_Pips)
{
// +T0 dL01<EFBFBD><EFBFBD>[$P<EFBFBD>0<EFBFBD><EFBFBD>H0f0D0<EFBFBD>04XTo007_6Rzln<EFBFBD>X<EFBFBD>0
return(2);
}
} /// zln<EFBFBD>X<EFBFBD>0
// <EFBFBD>X<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n04XT
else if (OrderType() == OP_SELL)
{
profit = OrderProfit(); // <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
if (PriceToPips(profit) < -SL_Acceptable_Pips)
{
// +T0 dL01<EFBFBD><EFBFBD>[$P<EFBFBD>0<EFBFBD><EFBFBD>H0f0D0<EFBFBD>04XTo007_6Rzln<EFBFBD><EFBFBD>D0
return(1);
}
} // zln<EFBFBD><EFBFBD>D0
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>02<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>03 |
//+------------------------------------------------------------------+
int Exit_Rule3()
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>03<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
if (GetSpreadValue() > MaxSpread)
return(0); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 N1<EFBFBD><EFBFBD>S
else
return(3); // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01<EFBFBD><EFBFBD>S
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>03<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>04 |
//+------------------------------------------------------------------+
int Exit_Rule4()
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>04<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>04<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| zln<EFBFBD>0<EFBFBD>0<EFBFBD>05 |
//+------------------------------------------------------------------+
int Exit_Rule5()
{
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>05<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00 N<EFBFBD><EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
// zln<EFBFBD>0<EFBFBD>0<EFBFBD>05<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0<EFBFBD>0Bfo00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>]W0<EFBFBD>fH0f0 NU0D00
return(3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>pe<EFBFBD>0 |
//+------------------------------------------------------------------+
// OrderSendn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>pe
// 0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n06R}k0TF0b_k0SL0TP<EFBFBD>0<EFBFBD>OckW0_0n0a0zv<EFBFBD>lW0
// OederSendn0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0J0<EFBFBD>0s0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD>0<EFBFBD>[<EFBFBD>eY0<EFBFBD>0
int WrapperOrderSend(string symbol, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int cmd, // <EFBFBD>l<EFBFBD>en0.z^<EFBFBD>
double volume, // <EFBFBD>0<EFBFBD>0<EFBFBD>0
double price, // <EFBFBD>l<EFBFBD>e<EFBFBD>O<h
int slippage, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double stoploss, // StopLoss
double takeprofit, // TakeProfit
string comment=NULL, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
int magic=0, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
datetime expiration=0, // g<EFBFBD>RgP<EFBFBD>
color arrow_color=clrNONE // <EFBFBD>wpSn0<EFBFBD>0<EFBFBD>0<EFBFBD>0
)
{
int i;
int err = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0No.
int res = 0; // OrderSendn0;b<EFBFBD>0$P
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0~0g0<EFBFBD>__jY0<EFBFBD>0
datetime currentTime = TimeCurrent();
datetime waitEndTime = currentTime + TIME_WAIT_FOR_MARKET_OPEN;
while (TimeCurrent() < waitEndTime)
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0f0D0_0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>0
if (IsMarketOpen())
{
break;
}
// !kn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0~0g0500msec<EFBFBD>_d0
Sleep(500);
// <EFBFBD>__jBf<EFBFBD><EFBFBD>n06RP<EFBFBD>k0T<EFBFBD>W0f0D0<EFBFBD>0K0<EFBFBD>x<EFBFBD><EFBFBD>Y0<EFBFBD>0
if (TimeCurrent() >= waitEndTime)
{
PrintFormat("WrapperOrderSend error: The waiting time limit (&d s) has been reached.", (waitEndTime - currentTime));
return(res);
}
}
// MAX_ORDER_REPEAT<EFBFBD>Vpe`0Q0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for ( i=0; i<MAX_ORDER_REPEAT; i++ )
{
res = OrderSend(symbol,
cmd,
volume,
NormalizeDouble(price, Digits()),
slippage,
NormalizeDouble(stoploss, Digits()),
NormalizeDouble(takeprofit, Digits()),
comment,
magic,
expiration,
arrow_color);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zv<EFBFBD>lk0b<EFBFBD>RW0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0No.<EFBFBD>0ԏW0<EFBFBD><EFBFBD>pe<EFBFBD>0B}<EFBFBD>NY0<EFBFBD>0
if ( res != -1 ) return(res);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zv<EFBFBD>lk01YWeW0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:yW0_0n0a0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
if ( res == -1 )
{
err = GetLastError();
Print("OrderSend return error: code=",err, ", Error=", ErrorDescription(err));
// !kn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0~0g0500msec<EFBFBD>_d0
Sleep(500);
}
}
return(res);
}
// OrderModifyn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>pe
// 0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n06R}k0TF0b_k0SL0TP<EFBFBD>0<EFBFBD>OckW0_0n0a0zv<EFBFBD>lW0
// OederModifyn0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0J0<EFBFBD>0s0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD>0<EFBFBD>[<EFBFBD>eY0<EFBFBD>0
bool WrapperOrderModify(int ticket, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double price, // <EFBFBD>l<EFBFBD>e<EFBFBD>O<h
double stoploss, // StopLoss
double takeprofit, // TakeProfit
datetime expiration, // g<EFBFBD>RgP<EFBFBD>
color arrow_color // <EFBFBD>wpSn0<EFBFBD>0<EFBFBD>0<EFBFBD>0
)
{
int i;
int err = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0No.
bool res = false; // OrderModifyn0;b<EFBFBD>0$P
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0~0g0<EFBFBD>__jY0<EFBFBD>0
datetime currentTime = TimeCurrent();
datetime waitEndTime = currentTime + TIME_WAIT_FOR_MARKET_OPEN;
while (TimeCurrent() < waitEndTime)
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0f0D0_0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>0
if (IsMarketOpen())
{
break;
}
// !kn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0~0g0500msec<EFBFBD>_d0
Sleep(500);
// <EFBFBD>__jBf<EFBFBD><EFBFBD>n06RP<EFBFBD>k0T<EFBFBD>W0f0D0<EFBFBD>0K0<EFBFBD>x<EFBFBD><EFBFBD>Y0<EFBFBD>0
if (TimeCurrent() >= waitEndTime)
{
PrintFormat("WrapperOrderModify error: The waiting time limit (&d s) has been reached.", (waitEndTime - currentTime));
return(res);
}
}
// MAX_ORDER_REPEAT<EFBFBD>Vpe`0Q0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for ( i=0; i<MAX_ORDER_REPEAT; i++ )
{
res = OrderModify(ticket,
NormalizeDouble(price, Digits()),
NormalizeDouble(stoploss, Digits()),
NormalizeDouble(takeprofit, Digits()),
expiration,
arrow_color);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zv<EFBFBD>lk0b<EFBFBD>RW0_04XT0B}<EFBFBD>N<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0ԏY0
if (res) return(res);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zv<EFBFBD>lk01YWeW0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:yW0_0n0a0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
if ( !res )
{
err = GetLastError();
Print("OrderModify return error: code=",err, ", Error=", ErrorDescription(err));
// !kn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0~0g0500msec<EFBFBD>_d0
Sleep(500);
}
}
return(res);
}
// OrderClosen0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD><EFBFBD>pe
// 0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n06R}k0TF0b_k0SL0TP<EFBFBD>0<EFBFBD>OckW0_0n0a0zv<EFBFBD>lW0
// OederClosen0<EFBFBD>0<EFBFBD>0<EFBFBD>0Bfn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0J0<EFBFBD>0s0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>Qt<EFBFBD>0<EFBFBD>[<EFBFBD>eY0<EFBFBD>0
bool WrapperOrderClose(int ticket, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double lots, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
double price, // <EFBFBD>l<EFBFBD>e<EFBFBD>O<h
int slippage, // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
color arrow_color // <EFBFBD>wpSn0<EFBFBD>0<EFBFBD>0<EFBFBD>0
)
{
int i;
int err = 0; // <EFBFBD>0<EFBFBD>0<EFBFBD>0No.
bool res = false; // OrderClosen0;b<EFBFBD>0$P
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0~0g0<EFBFBD>__jY0<EFBFBD>0
datetime currentTime = TimeCurrent();
datetime waitEndTime = currentTime + TIME_WAIT_FOR_MARKET_OPEN;
while (TimeCurrent() < waitEndTime)
{
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0L0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0W0f0D0_0<EFBFBD>00<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>bQ0<EFBFBD>0
if (IsMarketOpen(NULL, SYMBOL_TRADE_MODE_CLOSEONLY))
{
break;
}
// !kn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0~0g0500msec<EFBFBD>_d0
Sleep(500);
// <EFBFBD>__jBf<EFBFBD><EFBFBD>n06RP<EFBFBD>k0T<EFBFBD>W0f0D0<EFBFBD>0K0<EFBFBD>x<EFBFBD><EFBFBD>Y0<EFBFBD>0
if (TimeCurrent() >= waitEndTime)
{
PrintFormat("WrapperOrderClose error: The waiting time limit (&d s) has been reached.", (waitEndTime - currentTime));
return(res);
}
}
// MAX_ORDER_REPEAT<EFBFBD>Vpe`0Q0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
for ( i=0; i<MAX_ORDER_REPEAT; i++ )
{
res = OrderClose(ticket,
lots,
NormalizeDouble(price, Digits()),
slippage,
arrow_color);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zv<EFBFBD>lk0b<EFBFBD>RW0_04XT0B}<EFBFBD>N<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0ԏY0
if ( res ) return(res);
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0zv<EFBFBD>lk01YWeW0_04XT0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:yW0_0n0a0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0Y0<EFBFBD>0
if ( !res )
{
err = GetLastError();
Print("OrderClose return error: code=",err, ", Error=", ErrorDescription(err));
// !kn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0~0g0500msec<EFBFBD>_d0
Sleep(500);
}
}
return(res);
}