GPSForexRobotEURGBP_edu

GPSForexRobotEURGBP_edu最新版

官方版无广告159

更新日期:2022-03-14分类标签: 语言:中文平台:没限制

16 人已下载 手机查看

/*
Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
Website: http://purebeam.biz
E-mail : purebeam@gmail.com
*/
#property copyright “Copyright ?2010, GPSForexRobot.com”
#property link “http://gpsforexrobot.com/”

#import “GPSForexRobotEURGBP.dll”
// int GPSForexRobot(double& a0[], string a1, string a2, int a3, int a4);
int GetGMT();
#import

extern string GPS_Forex_Robot_EURGBP = ” “;
/*
extern string ____Authentication________ = “———————————————“;
extern string EMail = “”;
extern string CBReceipt = “”;
*/
extern string ____Size_of_lots________ = “———————————————“;
extern bool UseMM = FALSE;
extern double Lots = 0.01;
extern double LotsRiskReductor = 10.0;
extern double MaxLots = 1000.0;
extern string ____General_Options_____ = “———————————————“;
extern bool AutoGMTOffset = TRUE;
extern int GMTOffset = 1;
bool gi_160 = FALSE;
int gi_164 = 2;
bool gi_168 = TRUE;
double gd_172 = 34.0;
double gd_180 = 10.0;
int gi_188 = 7;
int gi_192 = 0;
bool gi_196 = FALSE;
bool gi_200 = TRUE;
bool gi_204 = FALSE;
bool gi_208 = TRUE;
bool gi_212 = FALSE;
int gi_216 = -6;
int gi_220 = 1;
int gi_224 = 20100109;
bool gi_228 = TRUE;
double gd_232 = 30.0;
double gd_240 = 11.0;
double gd_248 = 3.0;
int gi_256 = 20100129;
extern string ____Others______________ = “———————————————“;
extern string ExpertComment = “GPS Forex Robot”;
extern color ColorBuy = Blue;
extern color ColorSell = Red;
extern bool SendEmail = FALSE;
extern bool SoundAlert = FALSE;
extern string SoundFileAtOpen = “alert.wav”;
extern string SoundFileAtClose = “alert.wav”;
extern bool WriteLog = FALSE;
extern bool WriteDebugLog = FALSE;
bool gi_316 = TRUE;
int gi_320 = 2;
int gi_324 = 1;
string gs_unused_328 = “New Trade Information”;
string gs_336 = “New Trade Information”;
int g_bool_344;
int gi_348;
int gi_352;
int g_slippage_356;
double gd_360;
double g_maxlot_368;
double g_minlot_376;
double gd_384;
double gd_392;
double g_lotstep_400;
double gd_408;
string g_symbol_416;
string gs_424;
bool gba_432[4];
double gda_436[4];
double gda_440[4];
int gia_444[4];
int gia_448[4];
bool gba_452[4][5];
int gia_456[4];
int gia_460[4];
int gia_464[4];
bool gba_468[4];
double gda_472[4];
double gda_476[4];
double gda_480[4];
int gia_484[4];
bool gi_488;
bool gi_492;
int gi_496 = 0;
bool gi_500 = FALSE;
int gi_504 = 0;
double gda_508[52] = {0};
string gs_512 = “”;
string gs_520 = “”;
string gs_528 = “”;
bool gi_536 = FALSE;

int init() {
gi_492 = TRUE;
if (!IsDllsAllowed()) {
SetCommentPrint(“WARNING: Set Parameter \”AllowDLL Imports\” ON in menu Tools -> Options -> ExpertAdvisors.”, “comment”);
gi_492 = FALSE;
return (0);
}
if (StringSubstr(Symbol(), 0, 6) != “EURGBP”) {
SetCommentPrint(“WARNING: Use GPS Forex Robot EURGBP only on EURGBP pair.”, “comment”);
gi_492 = FALSE;
return (0);
}
if (IsTesting()) {
if (AutoGMTOffset) {
SetCommentPrint(“WARNING: Automatic GMT offset calculation works only on live/demo trading ” + “and should be set as FALSE for backtests – strategy testing.”, “comment”);
gi_492 = FALSE;
return (0);
}
}
if (WriteDebugLog) {
WriteLog = TRUE;
Print(“*************************** Initialization ***************************”);
}
g_symbol_416 = Symbol();
g_maxlot_368 = MarketInfo(g_symbol_416, MODE_MAXLOT);
g_minlot_376 = MarketInfo(g_symbol_416, MODE_MINLOT);
g_lotstep_400 = MarketInfo(g_symbol_416, MODE_LOTSTEP);
if (g_lotstep_400 == 0.01) gi_348 = 2;
else {
if (g_lotstep_400 == 0.1) gi_348 = 1;
else {
if (g_lotstep_400 == 1.0) gi_348 = 0;
else {
if (g_lotstep_400 == 0.001) gi_348 = 3;
else gi_348 = 4;
}
}
}
double l_leverage_0 = AccountLeverage();
gd_408 = NormalizeDouble(LotsRiskReductor * (100 / l_leverage_0), 2);
gs_424 = AccountCurrency();
g_bool_344 = IsTesting();
if (Digits < 4) {
gd_360 = 0.01;
gi_352 = 2;
} else {
gd_360 = 0.0001;
gi_352 = 4;
}
int li_8 = MathPow(10, Digits – gi_352);
g_slippage_356 = gi_164 * li_8;
gd_384 = MarketInfo(Symbol(), MODE_SPREAD) / MathPow(10, Digits – gi_352);
gd_392 = gd_384;
if (IsTesting()) {
Authentication();
if (gi_496 != 1) {
PrintInformation();
gi_492 = FALSE;
return (0);
}
}
gi_488 = TRUE;
return (0);
}

int deinit() {
Comment(“”);
if (WriteDebugLog) Print(“*************************** Deinitialization ***************************”);
return (0);
}

int start() {
double ld_24;
if (!gi_492) return (0);
int l_datetime_0 = TimeCurrent();
if (!IsTesting()) {
if (gi_488) {
if (AutoGMTOffset) {
if (AutoGMTOffset(GMTOffset)) gs_512 = GMTOffset + ” (automatic)”;
else gs_512 = “Error”;
} else gs_512 = GMTOffset + ” (manual)”;
Authentication();
gi_500 = TRUE;
gi_504 = l_datetime_0;
gi_488 = FALSE;
}
if (gi_500 == TRUE && gi_504 < l_datetime_0 – 60) {
gi_500 = FALSE;
gi_504 = l_datetime_0 + 60 * (780 – Rand(120));
}
if (gi_500 == FALSE && l_datetime_0 >= gi_504) {
gi_500 = TRUE;
Authentication();
}
PrintInformation();
}
if (gi_496 != 1) return (0);
gd_384 = MarketInfo(Symbol(), MODE_SPREAD) / MathPow(10, Digits – gi_352);
if (gd_384 > gd_392) gd_392 = gd_384;
int l_datetime_4 = TimeCurrent();
int li_8 = l_datetime_4 – 3600 * GMTOffset;
int l_day_of_week_12 = TimeDayOfWeek(l_datetime_4);
int l_datetime_16 = iTime(NULL, PERIOD_D1, 0);
for (int l_index_20 = 0; l_index_20 < 4; l_index_20++) {
if (gba_432[l_index_20]) {
if (!gi_160) SetOrderLevels(gda_440[l_index_20], gda_436[l_index_20], gia_460[l_index_20]);
WatchOrderLevels(gda_440[l_index_20], gda_436[l_index_20], gia_460[l_index_20]);
if (gba_468[l_index_20]) {
if (!gi_160) SetOrderLevels(gda_476[l_index_20], gda_472[l_index_20], gia_484[l_index_20]);
WatchOrderLevels(gda_476[l_index_20], gda_472[l_index_20], gia_484[l_index_20]);
if (HaveOrdersInDay(-2, gia_484[l_index_20], l_datetime_16) == 0) WatchReverseAfterSL(l_index_20);
}
if (l_day_of_week_12 <= 0 || l_day_of_week_12 > 5) continue;
if ((gba_452[l_index_20][l_day_of_week_12 – 1])) {
if (gia_444[l_index_20] != TimeHour(l_datetime_4) || gia_448[l_index_20] != TimeMinute(l_datetime_4)) continue;
if (HaveOrdersInDay(-2, gia_460[l_index_20], l_datetime_16) <= 0) {
ld_24 = LotsOptimized(gia_464[l_index_20]);
if (gia_456[l_index_20] >= 0)
if (l_day_of_week_12 == gia_456[l_index_20]) ld_24 = NormalizeDouble(2.0 * ld_24, gi_348);
OpenOrder(gia_464[l_index_20], gia_460[l_index_20], ExpertComment, ld_24);
}
}
}
}
return (0);
}

string ErrorDescription(int ai_0) {
string ls_ret_8;
switch (ai_0) {
case 0:
case 1:
ls_ret_8 = “no error”;
break;
case 2:
ls_ret_8 = “common error”;
break;
case 3:
ls_ret_8 = “invalid trade parameters”;
break;
case 4:
ls_ret_8 = “trade server is busy”;
break;
case 5:
ls_ret_8 = “old version of the client terminal”;
break;
case 6:
ls_ret_8 = “no connection with trade server”;
break;
case 7:
ls_ret_8 = “not enough rights”;
break;
case 8:
ls_ret_8 = “too frequent requests”;
break;
case 9:
ls_ret_8 = “malfunctional trade operation (never returned error)”;
break;
case 64:
ls_ret_8 = “account disabled”;
break;
case 65:
ls_ret_8 = “invalid account”;
break;
case 128:
ls_ret_8 = “trade timeout”;
break;
case 129:
ls_ret_8 = “invalid price”;
break;
case 130:
ls_ret_8 = “invalid stops”;
break;
case 131:
ls_ret_8 = “invalid trade volume”;
break;
case 132:
ls_ret_8 = “market is closed”;
break;
case 133:
ls_ret_8 = “trade is disabled”;
break;
case 134:
ls_ret_8 = “not enough money”;
break;
case 135:
ls_ret_8 = “price changed”;
break;
case 136:
ls_ret_8 = “off quotes”;
break;
case 137:
ls_ret_8 = “broker is busy (never returned error)”;
break;
case 138:
ls_ret_8 = “requote”;
break;
case 139:
ls_ret_8 = “order is locked”;
break;
case 140:
ls_ret_8 = “long positions only allowed”;
break;
case 141:
ls_ret_8 = “too many requests”;
break;
case 145:
ls_ret_8 = “modification denied because order too close to market”;
break;
case 146:
ls_ret_8 = “trade context is busy”;
break;
case 147:
ls_ret_8 = “expirations are denied by broker”;
break;
case 148:
ls_ret_8 = “amount of open and pending orders has reached the limit”;
break;
case 149:
ls_ret_8 = “hedging is prohibited”;
break;
case 150:
ls_ret_8 = “prohibited by FIFO rules”;
break;
case 4000:
ls_ret_8 = “no error (never generated code)”;
break;
case 4001:
ls_ret_8 = “wrong function pointer”;
break;
case 4002:
ls_ret_8 = “array index is out of range”;
break;
case 4003:
ls_ret_8 = “no memory for function call stack”;
break;
case 4004:
ls_ret_8 = “recursive stack overflow”;
break;
case 4005:
ls_ret_8 = “not enough stack for parameter”;
break;
case 4006:
ls_ret_8 = “no memory for parameter string”;
break;
case 4007:
ls_ret_8 = “no memory for temp string”;
break;
case 4008:
ls_ret_8 = “not initialized string”;
break;
case 4009:
ls_ret_8 = “not initialized string in array”;
break;
case 4010:
ls_ret_8 = “no memory for array\’ string”;
break;
case 4011:
ls_ret_8 = “too long string”;
break;
case 4012:
ls_ret_8 = “remainder from zero divide”;
break;
case 4013:
ls_ret_8 = “zero divide”;
break;
case 4014:
ls_ret_8 = “unknown command”;
break;
case 4015:
ls_ret_8 = “wrong jump (never generated error)”;
break;
case 4016:
ls_ret_8 = “not initialized array”;
break;
case 4017:
ls_ret_8 = “dll calls are not allowed”;
break;
case 4018:
ls_ret_8 = “cannot load library”;
break;
case 4019:
ls_ret_8 = “cannot call function”;
break;
case 4020:
ls_ret_8 = “expert function calls are not allowed”;
break;
case 4021:
ls_ret_8 = “not enough memory for temp string returned from function”;
break;
case 4022:
ls_ret_8 = “system is busy (never generated error)”;
break;
case 4050:
ls_ret_8 = “invalid function parameters count”;
break;
case 4051:
ls_ret_8 = “invalid function parameter value”;
break;
case 4052:
ls_ret_8 = “string function internal error”;
break;
case 4053:
ls_ret_8 = “some array error”;
break;
case 4054:
ls_ret_8 = “incorrect series array using”;
break;
case 4055:
ls_ret_8 = “custom indicator error”;
break;
case 4056:
ls_ret_8 = “arrays are incompatible”;
break;
case 4057:
ls_ret_8 = “global variables processing error”;
break;
case 4058:
ls_ret_8 = “global variable not found”;
break;
case 4059:
ls_ret_8 = “function is not allowed in testing mode”;
break;
case 4060:
ls_ret_8 = “function is not confirmed”;
break;
case 4061:
ls_ret_8 = “send mail error”;
break;
case 4062:
ls_ret_8 = “string parameter expected”;
break;
case 4063:
ls_ret_8 = “integer parameter expected”;
break;
case 4064:
ls_ret_8 = “double parameter expected”;
break;
case 4065:
ls_ret_8 = “array as parameter expected”;
break;
case 4066:
ls_ret_8 = “requested history data in update state”;
break;
case 4099:
ls_ret_8 = “end of file”;
break;
case 4100:
ls_ret_8 = “some file error”;
break;
case 4101:
ls_ret_8 = “wrong file name”;
break;
case 4102:
ls_ret_8 = “too many opened files”;
break;
case 4103:
ls_ret_8 = “cannot open file”;
break;
case 4104:
ls_ret_8 = “incompatible access to a file”;
break;
case 4105:
ls_ret_8 = “no order selected”;
break;
case 4106:
ls_ret_8 = “unknown symbol”;
break;
case 4107:
ls_ret_8 = “invalid price parameter for trade function”;
break;
case 4108:
ls_ret_8 = “invalid ticket”;
break;
case 4109:
ls_ret_8 = “trade is not allowed in the expert properties”;
break;
case 4110:
ls_ret_8 = “longs are not allowed in the expert properties”;
break;
case 4111:
ls_ret_8 = “shorts are not allowed in the expert properties”;
break;
case 4200:
ls_ret_8 = “object is already exist”;
break;
case 4201:
ls_ret_8 = “unknown object property”;
break;
case 4202:
ls_ret_8 = “object is not exist”;
break;
case 4203:
ls_ret_8 = “unknown object type”;
break;
case 4204:
ls_ret_8 = “no object name”;
break;
case 4205:
ls_ret_8 = “object coordinates error”;
break;
case 4206:
ls_ret_8 = “no specified subwindow”;
break;
default:
ls_ret_8 = “unknown error”;
}
return (ls_ret_8);
}

string OrderTypeToStr(int ai_0) {
string ls_ret_8;
switch (ai_0) {
case 0:
ls_ret_8 = “Buy”;
break;
case 1:
ls_ret_8 = “Sell”;
break;
case 2:
ls_ret_8 = “BuyLimit”;
break;
case 3:
ls_ret_8 = “SellLimit”;
break;
case 4:
ls_ret_8 = “BuyStop”;
break;
case 5:
ls_ret_8 = “SellStop”;
break;
default:
ls_ret_8 = “Unknown”;
}
return (ls_ret_8);
}

int GetGMTCorrection(int ai_0) {
ai_0 += GMTOffset;
while (true) {
if (ai_0 >= 24) {
ai_0 -= 24;
continue;
}
if (ai_0 >= 0) break;
ai_0 += 24;
}
return (ai_0);
}

void SetOrderLevels(double ad_0, double ad_8, int a_magic_16) {
int l_cmd_36;
double ld_40;
double l_price_48;
double ld_56;
double ld_64;
bool li_72;
double l_price_76;
bool li_84;
double l_price_88;
bool l_bool_96;
double ld_20 = NormalizeDouble(MarketInfo(g_symbol_416, MODE_STOPLEVEL) * Point, Digits);
int li_28 = OrdersTotal() – 1;
for (int l_pos_32 = li_28; l_pos_32 >= 0; l_pos_32–) {
if (!OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES)) {
if (WriteLog) Print(StringConcatenate(“SetOrderLevels: OrderSelect() error = “, ErrorDescription(GetLastError())));
} else {
if (OrderMagicNumber() == a_magic_16) {
if (OrderSymbol() == g_symbol_416) {
l_cmd_36 = OrderType();
ld_40 = NormalizeDouble(OrderClosePrice(), Digits);
l_price_48 = NormalizeDouble(OrderOpenPrice(), Digits);
if (l_cmd_36 > OP_SELL)
if (NormalizeDouble(MathAbs(l_price_48 – ld_40), Digits) <= ld_20) continue;
ld_56 = NormalizeDouble(OrderStopLoss(), Digits);
ld_64 = NormalizeDouble(OrderTakeProfit(), Digits);
li_72 = FALSE;
if (ld_56 == 0.0) {
if (ad_8 < 0.0) {
if (l_cmd_36 % 2 == 0) {
l_price_76 = NormalizeDouble(l_price_48 + ad_8, Digits);
if (NormalizeDouble(ld_40 – l_price_76, Digits) > ld_20) li_72 = TRUE;
else l_price_76 = ld_56;
} else {
l_price_76 = NormalizeDouble(l_price_48 – ad_8, Digits);
if (NormalizeDouble(l_price_76 – ld_40, Digits) > ld_20) li_72 = TRUE;
else l_price_76 = ld_56;
}
} else l_price_76 = ld_56;
} else l_price_76 = ld_56;
li_84 = FALSE;
if (ld_64 == 0.0) {
if (ad_0 > 0.0) {
if (l_cmd_36 % 2 == 0) {
l_price_88 = NormalizeDouble(l_price_48 + ad_0, Digits);
if (NormalizeDouble(l_price_88 – ld_40, Digits) > ld_20) li_84 = TRUE;
else l_price_88 = ld_64;
} else {
l_price_88 = NormalizeDouble(l_price_48 – ad_0, Digits);
if (NormalizeDouble(ld_40 – l_price_88, Digits) > ld_20) li_84 = TRUE;
else l_price_88 = ld_64;
}
} else l_price_88 = ld_64;
} else l_price_88 = ld_64;
if (li_72 || li_84) {
while (!IsTradeAllowed()) Sleep(1000);
l_bool_96 = OrderModify(OrderTicket(), l_price_48, l_price_76, l_price_88, 0, CLR_NONE);
if (!l_bool_96)
if (WriteLog) Print(StringConcatenate(“SetOrderLevels: OrderModify(“, OrderTypeToStr(OrderType()), “) error = “, ErrorDescription(GetLastError())));
}
}
}
}
}
}

void WatchOrderLevels(double ad_0, double ad_8, int a_magic_16) {
double ld_28;
double ld_36;
double ld_44;
if (ad_0 <= 0.0 && ad_8 >= 0.0) return;
int li_20 = OrdersTotal() – 1;
for (int l_pos_24 = li_20; l_pos_24 >= 0; l_pos_24–) {
if (!OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES)) {
if (WriteLog) Print(StringConcatenate(“WatchOrderLevels: OrderSelect() error = “, ErrorDescription(GetLastError())));
} else {
if (OrderMagicNumber() == a_magic_16) {
if (OrderType() <= OP_SELL) {
if (OrderSymbol() == g_symbol_416) {
ld_28 = NormalizeDouble(OrderClosePrice(), Digits);
ld_36 = NormalizeDouble(OrderOpenPrice(), Digits);
if (OrderType() == OP_BUY) {
ld_44 = NormalizeDouble(ld_28 – ld_36, Digits);
if ((ad_0 > 0.0 && ld_44 >= ad_0) || (ad_8 < 0.0 && ld_44 <= ad_8)) {
if (WriteLog) Print(“WatchOrderLevels: level for close BUY”);
CloseOrder(OrderTicket(), OrderLots(), 0, g_slippage_356);
}
} else {
ld_44 = NormalizeDouble(ld_36 – ld_28, Digits);
if ((ad_0 > 0.0 && ld_44 >= ad_0) || (ad_8 < 0.0 && ld_44 <= ad_8)) {
if (WriteLog) Print(“WatchOrderLevels: level for close SELL”);
CloseOrder(OrderTicket(), OrderLots(), 1, g_slippage_356);
}
}
}
}
}
}
}
}

double LotsOptimized(int ai_unused_0) {
double ld_ret_4;
double ld_12;
double ld_20;
if (!UseMM) ld_ret_4 = Lots;
else {
ld_12 = AccountFreeMargin() * gd_408 / 100.0;
ld_20 = MarketInfo(g_symbol_416, MODE_MARGINREQUIRED) * g_lotstep_400;
ld_ret_4 = NormalizeDouble(MathFloor(ld_12 / ld_20) * g_lotstep_400, gi_348);
}
if (ld_ret_4 > MaxLots) ld_ret_4 = MaxLots;
if (ld_ret_4 < g_minlot_376) ld_ret_4 = g_minlot_376;
if (ld_ret_4 > g_maxlot_368) ld_ret_4 = g_maxlot_368;
return (ld_ret_4);
}

int OpenOrder(int a_cmd_0, int a_magic_4, string a_comment_8, double ad_16, double a_price_24 = 0.0) {
color l_color_36;
int l_ticket_72;
int l_error_76;
double ld_80;
if (a_cmd_0 > OP_SELL && a_price_24 == 0.0) return (-1);
int l_cmd_32 = a_cmd_0 % 2;
if (ad_16 < g_minlot_376) ad_16 = g_minlot_376;
else
if (ad_16 > g_maxlot_368) ad_16 = g_maxlot_368;
if (AccountFreeMarginCheck(g_symbol_416, l_cmd_32, ad_16) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) {
if (WriteLog) Print(“OpenOrder: you don\’t have free margin.”);
return (-1);
}
if (l_cmd_32 == OP_BUY) l_color_36 = ColorBuy;
else l_color_36 = ColorSell;
RefreshRates();
double ld_40 = NormalizeDouble(MarketInfo(g_symbol_416, MODE_STOPLEVEL) * Point, Digits);
double ld_48 = NormalizeDouble(Ask, Digits);
double ld_56 = NormalizeDouble(Bid, Digits);
switch (a_cmd_0) {
case OP_BUY:
a_price_24 = ld_48;
break;
case OP_SELL:
a_price_24 = ld_56;
break;
case OP_BUYLIMIT:
if (a_price_24 >= ld_48) {
a_price_24 = ld_48;
a_cmd_0 = 0;
} else
if (NormalizeDouble(ld_48 – a_price_24, Digits) < ld_40) return (-1);
break;
case OP_SELLLIMIT:
if (a_price_24 <= ld_56) {
a_price_24 = ld_56;
a_cmd_0 = 1;
} else
if (NormalizeDouble(a_price_24 – ld_56, Digits) < ld_40) return (-1);
break;
case OP_BUYSTOP:
if (a_price_24 <= ld_48) {
a_price_24 = ld_48;
a_cmd_0 = 0;
} else
if (NormalizeDouble(a_price_24 – ld_48, Digits) < ld_40) return (-1);
break;
case OP_SELLSTOP:
if (a_price_24 >= ld_56) {
a_price_24 = ld_56;
a_cmd_0 = 1;
} else
if (NormalizeDouble(ld_56 – a_price_24, Digits) < ld_40) return (-1);
break;
default:
return (-1);
}
int li_68 = gi_320;
while (li_68 > 0) {
while (!IsTradeAllowed()) Sleep(1000);
l_ticket_72 = OrderSend(g_symbol_416, a_cmd_0, ad_16, a_price_24, g_slippage_356, 0, 0, a_comment_8, a_magic_4, 0, l_color_36);
Sleep(MathRand() / 1000);
if (l_ticket_72 < 0) {
l_error_76 = GetLastError();
if (WriteLog) {
Print(“OpenOrder: OrderSend(“, OrderTypeToStr(a_cmd_0), “) error = “, ErrorDescription(l_error_76));
Print(“OpenOrder: order “, g_symbol_416, ” “, OrderTypeToStr(a_cmd_0), ” lot = “, DoubleToStr(ad_16, 8), ” op = “, DoubleToStr(a_price_24, 8), ” slippage = “, g_slippage_356);
}
if (l_error_76 != 136/* OFF_QUOTES */) break;
if (!(gi_316)) break;
Sleep(6000);
RefreshRates();
if (a_cmd_0 == OP_BUY) ld_80 = NormalizeDouble(Ask, Digits);
else ld_80 = NormalizeDouble(Bid, Digits);
if (NormalizeDouble(MathAbs((ld_80 – a_price_24) / gd_360), 0) > gi_324) break;
a_price_24 = ld_80;
li_68–;
if (li_68 > 0)
if (WriteLog) Print(“… Possible to open order.”);
ad_16 = NormalizeDouble(ad_16 / 2.0, gi_348);
if (ad_16 < g_minlot_376) ad_16 = g_minlot_376;
} else {
if (OrderSelect(l_ticket_72, SELECT_BY_TICKET)) a_price_24 = OrderOpenPrice();
if (SendEmail) {
SendMail(gs_336, StringConcatenate(“GPS Forex Robot trade Information\nCurrency Pair: “, StringSubstr(g_symbol_416, 0, 6),
“\nTime: “, TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS),
“\nOrder Type: “, OrderTypeToStr(a_cmd_0),
“\nPrice: “, DoubleToStr(a_price_24, Digits),
“\nLot size: “, DoubleToStr(ad_16, gi_348),
“\nEvent: Trade Opened”,
“\n\nCurrent Balance: “, DoubleToStr(AccountBalance(), 2), ” “, gs_424,
“\nCurrent Equity: “, DoubleToStr(AccountEquity(), 2), ” “, gs_424));
}
if (!(SoundAlert)) break;
PlaySound(SoundFileAtOpen);
break;
}
}
return (l_ticket_72);
}

int CloseOrder(int a_ticket_0, double a_lots_4, int ai_12, int a_slippage_16) {
color l_color_20;
double l_price_40;
bool l_ord_close_48;
int l_error_52;
bool li_56;
if (ai_12 == 0) l_color_20 = ColorBuy;
else l_color_20 = ColorSell;
int l_count_24 = 0;
int l_count_28 = 0;
int l_count_32 = 0;
int l_count_36 = 0;
while (true) {
while (!IsTradeAllowed()) Sleep(1000);
RefreshRates();
if (ai_12 == 0) l_price_40 = NormalizeDouble(Bid, Digits);
else l_price_40 = NormalizeDouble(Ask, Digits);
l_ord_close_48 = OrderClose(a_ticket_0, a_lots_4, l_price_40, a_slippage_16, l_color_20);
if (!l_ord_close_48) {
l_error_52 = GetLastError();
if (WriteLog) Print(StringConcatenate(“OrderClose(“, OrderTypeToStr(ai_12), “,”, DoubleToStr(a_ticket_0, 0), “) error = “, ErrorDescription(l_error_52)));
li_56 = FALSE;
switch (l_error_52) {
case 0/* NO_ERROR */:
Sleep(10000);
if (OrderSelect(a_ticket_0, SELECT_BY_TICKET))
if (OrderCloseTime() == 0) li_56 = TRUE;
break;
case 1/* NO_RESULT */: break;
case 2/* COMMON_ERROR */: break;
case 3/* INVALID_TRADE_PARAMETERS */: break;
case 4/* SERVER_BUSY */: break;
case 5/* OLD_VERSION */: break;
case 6/* NO_CONNECTION */:
Sleep(10000);
if (IsConnected()) li_56 = TRUE;
break;
case 7/* NOT_ENOUGH_RIGHTS */: break;
case 8/* TOO_FREQUENT_REQUESTS */: break;
case 9/* MALFUNCTIONAL_TRADE */: break;
case 64/* ACCOUNT_DISABLED */: break;
case 65/* INVALID_ACCOUNT */: break;
case 128/* TRADE_TIMEOUT */:
Sleep(70000);
if (OrderSelect(a_ticket_0, SELECT_BY_TICKET))
if (OrderCloseTime() == 0) li_56 = TRUE;
break;
case 129/* INVALID_PRICE */:
Sleep(6000);
l_count_24++;
if (l_count_24 <= 3) li_56 = TRUE;
break;
case 130/* INVALID_STOPS */:
Sleep(6000);
l_count_28++;
if (l_count_28 <= 3) li_56 = TRUE;
break;
case 131/* INVALID_TRADE_VOLUME */: break;
case 132/* MARKET_CLOSED */: break;
case 133/* TRADE_DISABLED */: break;
case 134/* NOT_ENOUGH_MONEY */: break;
case 135/* PRICE_CHANGED */:
li_56 = TRUE;
break;
case 136/* OFF_QUOTES */:
Sleep(6000);
li_56 = TRUE;
break;
case 137/* BROKER_BUSY */:
Sleep(20000);
l_count_32++;
if (l_count_32 <= 3) li_56 = TRUE;
break;
case 138/* REQUOTE */:
l_count_36++;
if (l_count_36 <= 3) li_56 = TRUE;
break;
case 139/* ORDER_LOCKED */: break;
case 140/* LONG_POSITIONS_ONLY_ALLOWED */: break;
case 141/* TOO_MANY_REQUESTS */: break;
case 142:
Sleep(70000);
if (OrderSelect(a_ticket_0, SELECT_BY_TICKET))
if (OrderCloseTime() == 0) li_56 = TRUE;
break;
case 143:
Sleep(70000);
if (OrderSelect(a_ticket_0, SELECT_BY_TICKET))
if (OrderCloseTime() == 0) li_56 = TRUE;
break;
case 144: break;
case 145/* TRADE_MODIFY_DENIED */:
Sleep(20000);
li_56 = TRUE;
break;
case 146/* TRADE_CONTEXT_BUSY */:
while (IsTradeContextBusy()) Sleep(1000);
li_56 = TRUE;
break;
case 147/* ERR_TRADE_EXPIRATION_DENIED */: break;
case 148/* ERR_TRADE_TOO_MANY_ORDERS */: break;
case 149/* ? */: break;
case 150: break;
case 4000/* NO_MQLERROR */:
Sleep(10000);
if (OrderSelect(a_ticket_0, SELECT_BY_TICKET))
if (OrderCloseTime() == 0) li_56 = TRUE;
case 4051/* INVALID_FUNCTION_PARAMETER_VALUE */: break;
case 4062/* STRING_PARAMETER_EXPECTED */: break;
case 4063/* INTEGER_PARAMETER_EXPECTED */: break;
case 4064/* DOUBLE_PARAMETER_EXPECTED */: break;
case 4105/* NO_ORDER_SELECTED */: break;
case 4106/* UNKNOWN_SYMBOL */: break;
case 4107/* INVALID_PRICE_PARAM */: break;
case 4108/* INVALID_TICKET */: break;
case 4109/* TRADE_NOT_ALLOWED */: break;
case 4110/* LONGS__NOT_ALLOWED */: break;
case 4111/* SHORTS_NOT_ALLOWED */: break;
}
if (!(li_56)) break;
continue;
}
if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) l_price_40 = OrderClosePrice();
if (SendEmail) {
SendMail(gs_336, StringConcatenate(“GPS Forex Robot trade Information\nCurrency Pair: “, StringSubstr(g_symbol_416, 0, 6),
“\nTime: “, TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS),
“\nOrder Type: “, OrderTypeToStr(ai_12),
“\nPrice: “, DoubleToStr(l_price_40, Digits),
“\nLot size: “, DoubleToStr(a_lots_4, gi_348),
“\nEvent: Trade Closed”,
“\n\nCurrent Balance: “, DoubleToStr(AccountBalance(), 2), ” “, gs_424,
“\nCurrent Equity: “, DoubleToStr(AccountEquity(), 2), ” “, gs_424));
}
if (!(SoundAlert)) break;
PlaySound(SoundFileAtClose);
break;
}
return (l_ord_close_48);
}

int HaveOrdersInDay(int a_cmd_0, int a_magic_4, int ai_8) {
int l_cmd_24;
int l_count_12 = 0;
int li_16 = OrdersTotal() – 1;
for (int l_pos_20 = li_16; l_pos_20 >= 0; l_pos_20–) {
if (!OrderSelect(l_pos_20, SELECT_BY_POS, MODE_TRADES)) {
if (WriteLog) Print(StringConcatenate(“HaveOrdersInDay: OrderSelect() error = “, ErrorDescription(GetLastError())));
} else {
if (OrderMagicNumber() == a_magic_4) {
if (OrderSymbol() == g_symbol_416) {
l_cmd_24 = OrderType();
if (a_cmd_0 == -4) {
if (l_cmd_24 % 2 != 0) continue;
} else {
if (a_cmd_0 == -5) {
if (l_cmd_24 % 2 != 1) continue;
} else {
if (a_cmd_0 == -3) {
if (l_cmd_24 <= OP_SELL) continue;
} else {
if (a_cmd_0 == -2) {
if (l_cmd_24 > OP_SELL) continue;
} else {
if (a_cmd_0 >= OP_BUY)
if (l_cmd_24 != a_cmd_0) continue;
}
}
}
}
if (OrderOpenTime() >= ai_8) l_count_12++;
}
}
}
}
if (l_count_12 == 0) {
li_16 = OrdersHistoryTotal() – 1;
for (l_pos_20 = li_16; l_pos_20 >= 0; l_pos_20–) {
if (!OrderSelect(l_pos_20, SELECT_BY_POS, MODE_HISTORY)) {
if (WriteLog) Print(StringConcatenate(“HaveOrdersInDay: OrderSelect_2() error = “, ErrorDescription(GetLastError())));
} else {
if (OrderMagicNumber() == a_magic_4) {
if (OrderSymbol() == g_symbol_416) {
l_cmd_24 = OrderType();
if (a_cmd_0 == -4) {
if (l_cmd_24 % 2 != 0) continue;
} else {
if (a_cmd_0 == -5) {
if (l_cmd_24 % 2 != 1) continue;
} else {
if (a_cmd_0 == -3) {
if (l_cmd_24 <= OP_SELL) continue;
} else {
if (a_cmd_0 == -2) {
if (l_cmd_24 > OP_SELL) continue;
} else {
if (a_cmd_0 >= OP_BUY)
if (l_cmd_24 != a_cmd_0) continue;
}
}
}
}
if (OrderOpenTime() < ai_8) break;
l_count_12++;
}
}
}
}
}
return (l_count_12);
}

void WatchReverseAfterSL(int ai_0) {
int l_magic_12;
int l_datetime_16;
double ld_20;
int li_4 = OrdersHistoryTotal() – 1;
for (int l_pos_8 = li_4; l_pos_8 >= 0; l_pos_8–) {
if (!OrderSelect(l_pos_8, SELECT_BY_POS, MODE_HISTORY)) {
if (WriteLog) Print(StringConcatenate(“WatchReverseAfterSL: OrderSelect() error = “, ErrorDescription(GetLastError())));
} else {
l_magic_12 = OrderMagicNumber();
if (l_magic_12 == gia_484[ai_0]) break;
if (l_magic_12 == gia_460[ai_0]) {
if (OrderSymbol() == g_symbol_416) {
if (OrderProfit() >= 0.0) break;
l_datetime_16 = OrderCloseTime();
if (TimeHour(l_datetime_16) != Hour()) break;
if (TimeMinute(l_datetime_16) != Minute()) break;
if (TimeDay(l_datetime_16) != Day()) break;
if (TimeMonth(l_datetime_16) != Month()) break;
ld_20 = NormalizeDouble(OrderLots() * gda_480[ai_0], gi_348);
if (ld_20 > MaxLots) ld_20 = MaxLots;
if (ld_20 < g_minlot_376) ld_20 = g_minlot_376;
if (ld_20 > g_maxlot_368) ld_20 = g_maxlot_368;
OpenOrder(MathAbs(gia_464[ai_0] – 1), gia_484[ai_0], ExpertComment, ld_20);
return;
}
}
}
}
}

bool AutoGMTOffset(int &ai_0) {
int li_4 = GetGMT();
if (li_4 < 0) return (FALSE);
int li_8 = TimeCurrent() – li_4;
ai_0 = MathFloor((li_8 + 1800) / 3600);
return (TRUE);
}

int SetCommentPrint(string as_0, string as_8 = “”) {
Comment(“\n\n” + “GPS FOREX ROBOT”
+ “\n”
+ “www.gpsforexrobot.com”
+ “\n\n” + as_0);
if (as_8 != “”) {
if (as_8 == “comment”) Print(as_0);
else Print(as_8);
}
return (1);
}

int PrintInformation() {
string ls_0;
if (gi_496 == 1) {
if (IsDemo()) ls_0 = “Demo”;
else ls_0 = “Real”;
SetCommentPrint(“AUTHENTICATION STATUS: ”
+ “\n”
+ gs_520
+ “\n”
+ “—————————————————”
+ “\n”
+ “GENERAL INFORMATION:”
+ “\n”
+ “Broker Company: ” + AccountCompany()
+ “\n”
+ “Terminal Company: ” + TerminalCompany()
+ “\n”
+ “Server Name: ” + AccountServer()
+ “\n”
+ “Current Server Time: ” + TimeToStr(TimeCurrent(), TIME_SECONDS)
+ “\n”
+ “—————————————————”
+ “\n”
+ “ACCOUNT INFORMATION:”
+ “\n”
+ “Account Name: ” + AccountName()
+ “\n”
+ “Account Number: ” + AccountNumber()
+ “\n”
+ “Account Type: ” + ls_0
+ “\n”
+ “Account Leverage: 1:” + DoubleToStr(AccountLeverage(), 0)
+ “\n”
+ “Account Balance: ” + DoubleToStr(AccountBalance(), 2)
+ “\n”
+ “Account Equity: ” + DoubleToStr(AccountEquity(), 2)
+ “\n”
+ “Account Floating P/L: ” + DoubleToStr(AccountProfit(), 2)
+ “\n”
+ “Account Currency: ” + AccountCurrency()
+ “\n”
+ “—————————————————”
+ “\n”
+ “ADDITIONAL INFORMATION:”
+ “\n”
+ “Current Spread: ” + DoubleToStr(gd_384, Digits – gi_352)
+ “\n”
+ “Maximum Spread: ” + DoubleToStr(gd_392, Digits – gi_352)
+ “\n”
+ “Free Margin: ” + DoubleToStr(AccountFreeMargin(), 2)
+ “\n”
+ “Used Margin: ” + DoubleToStr(AccountMargin(), 2)
+ “\n”
+ “—————————————————”
+ “\n”
+ “GMT SETTINGS:”
+ “\n”
+ “GMT Offset: ” + gs_512);
} else {
if (!gi_536) {
SetCommentPrint(“AUTHENTICATION STATUS: ”
+ “\n”
+ gs_520, gs_528);
gi_536 = TRUE;
}
}
return (0);
}

int SetVariables() {
gda_508[16] = 1.00000000;
gda_508[17] = 2.00000000;
gda_508[18] = 86.50000000;
gda_508[19] = 3.00000000;
gda_508[20] = 23.00000000;
gda_508[21] = 0.00000000;
gda_508[22] = 0.00000000;
gda_508[23] = 0.00000000;
gda_508[24] = 1.00000000;
gda_508[25] = 1.00000000;
gda_508[26] = 1.00000000;
gda_508[27] = 1.00000000;
gda_508[28] = 0.00000000;
gda_508[29] = -2.00000000;
gda_508[30] = 1.00000000;
gda_508[31] = 220.00000000;
gda_508[32] = 14.60000000;
gda_508[33] = 6.00000000;

if (gda_508[16] == 1.0) gi_160 = TRUE;
else gi_160 = FALSE;
gi_164 = gda_508[17];
gd_172 = gda_508[18];
gd_180 = gda_508[19];
gi_188 = gda_508[20];
gi_192 = gda_508[21];
if (gda_508[22] == 1.0) gi_196 = TRUE;
else gi_196 = FALSE;
if (gda_508[23] == 1.0) gi_200 = TRUE;
else gi_200 = FALSE;
if (GMTOffset <= 0) {
if (gda_508[24] == 1.0) gi_200 = TRUE;
else gi_200 = FALSE;
}
if (gda_508[25] == 1.0) gi_204 = TRUE;
else gi_204 = FALSE;
if (gda_508[26] == 1.0) gi_208 = TRUE;
else gi_208 = FALSE;
if (gda_508[27] == 1.0) gi_212 = TRUE;
else gi_212 = FALSE;
if (GMTOffset <= 0) {
if (gda_508[28] == 1.0) gi_212 = TRUE;
else gi_212 = FALSE;
}
gi_216 = gda_508[29];
if (gda_508[30] == 1.0) gi_220 = TRUE;
else gi_220 = FALSE;
gd_232 = gda_508[31];
gd_240 = gda_508[32];
gd_248 = gda_508[33];
gba_432[0] = gi_168;
gda_436[0] = NormalizeDouble((-1.0 * gd_172) * gd_360, Digits);
gda_440[0] = NormalizeDouble(gd_180 * gd_360, Digits);
gia_444[0] = GetGMTCorrection(gi_188);
gia_448[0] = gi_192;
gba_452[0][0] = gi_196;
gba_452[0][1] = gi_200;
gba_452[0][2] = gi_204;
gba_452[0][3] = gi_208;
gba_452[0][4] = gi_212;
gia_456[0] = gi_216;
gia_464[0] = gi_220;
gia_460[0] = gi_224;
gba_468[0] = gi_228;
gda_472[0] = NormalizeDouble((-1.0 * gd_232) * gd_360, Digits);
gda_476[0] = NormalizeDouble(gd_240 * gd_360, Digits);
gda_480[0] = gd_248;
gia_484[0] = gi_256;
return (1);
}

int Authentication() {
/*
gi_496 = GPSForexRobot(gda_508, EMail, CBReceipt, IsDemo(), AccountNumber());
if (gi_496 == -1) {
gs_520 = “Authentication Failed [Invalid Internet Connection]\n[Trades are not available]”;
gs_528 = “Authentication Failed: [Invalid Internet Connection] [Trades are not available]”;
return (-1);
}
if (gi_496 == -2) {
gs_520 = “Authentication Failed [Invalid Internet Connection]\n[Trades are not available]”;
gs_528 = “Authentication Failed: [Invalid Internet Connection] [Trades are not available]”;
return (-2);
}
if (gi_496 == -3) {
gs_520 = “Authentication Failed [Wrong E-Mail or CBReceipt]\n[Trades are not available]”;
gs_528 = “Authentication Failed: [Wrong E-Mail or CBReceipt] [Trades are not available]”;
return (-2);
}
if (gi_496 == -4) {
gs_520 = “Authentication Failed [Invalid Real Money Account Number]\n[Trades are not available]”;
gs_528 = “Authentication Failed: [Invalid Real Money Account Number] [Trades are not available]”;
return (-2);
}
if (*/gi_496 = 1;/*) {*/
SetVariables();
gs_520 = “Authenticated [Trades are available]\nThank you for joining the GPS Robot Team!”;
gs_528 = “Authenticatd: [Trades are available]”;
return (1);
/*
}
return (0);
*/
}

int Rand(int ai_0) {
MathSrand(TimeLocal());
return (MathRand() % ai_0);
}

如果你对文件有了解,请帮助投票!

If you are familiar with the file, please help vote!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位投票人。

相关资源

暂无评论

暂无评论...
Ads Blocker Image Powered by Code Help Pro

检测到广告拦截程序!!!Ads Blocker Detected!!!

我们检测到您正在使用扩展来屏蔽广告。请通过禁用这些广告屏蔽程序或者把网站加入白名单来支持我们。

We have detected that you are using an extension to block advertisements. Please support us by disabling these advertising blocking programs or adding the website to the whitelist.