example,
Why don't you check the source codes or the input parameters of 'v17'? If it's ver17 as what you claimed, why the input parameter has v16 written on it?
change it to V17,just simple..it should like this..
/*
Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
Website:
http://purebeam.biz
E-mail :
[email protected]
*/
#property copyright "Copyright © 2010, MT4 Trading"
#property link "http://www.forexharvester.com"
#import "forexharvester17.dll"
bool quad_f1(string& a0[], double& a1[], double& a2[], double& a3[]);
double quad_f2(string& a0[], double& a1[], double& a2[], double& a3[]);
#import
extern string l0 = "=== License Settings ===";
extern string ClickBankReceipt = "";
extern string EMailAddress = "";
extern string l1 = "=== Money Management Settings ===";
extern bool UseMM = TRUE;
extern double Risk = 20.0;
extern double LotSize = 1.0;
extern int MaxOrders = 3;
extern int stop.loss = 0;
int gi_136 = 5;
extern string l2 = "=== Trade Settings ===";
extern int Slippage = 10;
bool gi_152 = TRUE;
extern string l3 = "=== General Settings ===";
extern bool StatusDisplay = TRUE;
extern int MagicNumber = 1976;
extern string ExpertComment = "Forex Harvester v17";

double gd_unused_180 = 0.0;
double gd_188 = 17.0;
double gd_196;
double gd_204;
double gd_212;
int g_count_220;
double gda_224[40];
double gda_228[2000][6];
double gda_232[2000][6];
string gsa_236[10];
double gd_288 = 0.0;
string gs_dummy_304;
string gs_dummy_312;
string gs_dummy_320;
bool gi_332;
bool gi_336;
bool gi_340;
double gd_352;
string gs_dummy_364;
string gs_dummy_372;
double gd_380;
double gd_388;
double g_price_396;
bool gi_404;
int init() {
string ls_0 = StringSubstr(Symbol(), 0, 6);
gi_404 = FALSE;
gsa_236[5] = Symbol();
gsa_236[6] = Symbol();
if (ls_0 == "EURUSD" || ls_0 == "USDCHF" || ls_0 == "GBPUSD" || ls_0 == "EURJPY" || ls_0 == "USDJPY") gi_404 = TRUE;
else Alert("This EA only runs on the EURUSD, USDCHF, GBPUSD, EURJPY, USDJPY");
if (EMailAddress == "" || StringLen(EMailAddress) < 8 || StringFind(EMailAddress, "@", 0) < 1) {
gi_404 = FALSE;
Alert("Please enter a valid EMail address");
}
prepare_arrays();
if (!quad_f1(gsa_236, gda_224, gda_228, gda_232)) gi_404 = FALSE;
return (0);
}
int deinit() {
return (0);
}
int start() {
double ld_0;
if (gi_404) {
gd_352 = 0.01;
if (Digits >= 4) {
gd_352 = 0.0001;
Slippage = 10 * Slippage;
}
prepare_arrays();
analyse.positions();
display.status();
gd_288 = Ask - Bid;
if (Month() == 1 && Day() <= 14) return (0);
if (Month() == 12 && Day() >= 14) return (0);
if (DayOfWeek() > 1) {
gda_224[25] = 1;
gi_340 = FALSE;
}
if (g_count_220 == 0) {
gd_380 = 0;
gd_388 = 0;
gi_332 = FALSE;
gi_336 = FALSE;
}
if (g_count_220 > 0) {
if (gi_332 && Bid >= gd_204) close.all();
if (gi_336 && Bid <= gd_212) close.all();
if (gi_152) panther.start();
}
if (!gi_340 && DayOfWeek() == 0 || DayOfWeek() == 1 && Minute() < 35) {
ld_0 = quad_f2(gsa_236, gda_224, gda_228, gda_232);
if (ld_0 == 0.0 && gda_224[25] == 3.0) {
Print("Valid trade setup detected, but spread too high (", DoubleToStr(gd_288 / gd_352, 1), "). Waiting");
return (0);
}
if (ld_0 == 1.0) {
Print("Valid trade setup detected");
gi_336 = FALSE;
gi_332 = FALSE;
gd_204 = gda_224[21];
gd_212 = gda_224[22];
if (gda_224[17] == 1.0) gi_336 = TRUE;
if (gda_224[17] == 2.0) gi_332 = TRUE;
if (gi_336) entry.short();
if (gi_332) entry.long();
}
}
}
return (0);
}
void entry.long() {
if (!UseMM) gda_224[19] = LotSize;
double l_price_0 = Ask;
if (Ask == 0.0) l_price_0 = Bid;
if (OrderSend(Symbol(), OP_BUY, gda_224[19], l_price_0, Slippage, 0, 0, ExpertComment, MagicNumber, 0, Blue) > 0) {
g_price_396 = l_price_0;
gi_340 = TRUE;
return;
}
Print("Long order failed with code " + GetLastError());
gda_224[25] = 3;
}
void entry.short() {
if (!UseMM) gda_224[19] = LotSize;
if (OrderSend(Symbol(), OP_SELL, gda_224[19], Bid, Slippage, 0, 0, ExpertComment, MagicNumber, 0, Red) > 0) {
g_price_396 = Bid;
gi_340 = TRUE;
return;
}
Print("Short order failed with code " + GetLastError());
gda_224[25] = 3;
}
void analyse.positions() {
gd_196 = 0;
g_count_220 = 0;
if (OrdersTotal() > 0) {
for (int l_pos_0 = OrdersTotal() - 1; l_pos_0 >= 0; l_pos_0--) {
OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES);
gd_196 += OrderProfit();
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
if (OrderStopLoss() == 0.0 && OrderType() == OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - gda_224[14], OrderOpenPrice() + gi_136 * MaxOrders * gd_352, 0, CLR_NONE);
if (OrderStopLoss() == 0.0 && OrderType() == OP_SELL) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + gda_224[14], OrderOpenPrice() - gi_136 * MaxOrders * gd_352, 0, CLR_NONE);
g_count_220++;
}
}
}
if (g_count_220 > MaxOrders) prune.orders();
}
void panther.start() {
if (gi_332) {
gd_380 = g_price_396 + gi_136 * gd_352;
if (Ask >= gd_380 && gd_380 + gd_288 < gd_204) entry.long();
}
if (gi_336) {
gd_388 = g_price_396 - gi_136 * gd_352;
if (Bid <= gd_388 && gd_388 - gd_288 > gd_212) entry.short();
}
}
void close.all() {
double l_price_4;
for (int l_pos_0 = OrdersTotal() - 1; l_pos_0 >= 0; l_pos_0--) {
OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderProfit() > 0.0) {
l_price_4 = Ask;
if (OrderType() == OP_BUY) l_price_4 = Bid;
OrderClose(OrderTicket(), OrderLots(), l_price_4, Slippage, CLR_NONE);
}
}
}
void display.status() {
string ls_0;
string ls_unused_8;
if (StatusDisplay) {
ls_0 = "false";
if (UseMM) ls_0 = "true";
Comment("----Forex Harvester V17----\n",

"---------------------------",
"\n", "Account : ", AccountNumber(),
"\n", "Name : ", AccountName(),
"\n", "FreeMargin : ", AccountFreeMargin(),
"\n", "Currency : ", AccountCurrency(),
"\n", "---------------------------",
"\n", "MM : ", ls_0,
"\n", "Risk : ", Risk, "%\n", "---------------------------",
"\n", "Open Trades : ", g_count_220,
"\n", "Profit : ", gd_196,
"\n", "Arr2[25] : ", gda_224[25],
"\n", "Arr2[17] : ", gda_224[17],
"\n", "---------------------------",
"\n", "---------------------------",
"\n");
}
}
void prune.orders() {
double l_price_12;
double l_ord_profit_0 = 0;
int l_ticket_8 = 0;
for (int l_pos_20 = OrdersTotal() - 1; l_pos_20 >= 0; l_pos_20--) {
OrderSelect(l_pos_20, SELECT_BY_POS, MODE_TRADES);
if (OrderProfit() > l_ord_profit_0 && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
l_ord_profit_0 = OrderProfit();
l_ticket_8 = OrderTicket();
}
}
if (l_ord_profit_0 > 0.0) {
OrderSelect(l_ticket_8, SELECT_BY_TICKET, MODE_TRADES);
if (OrderType() == OP_BUY) l_price_12 = Bid;
if (OrderType() == OP_SELL) l_price_12 = Ask;
OrderClose(OrderTicket(), OrderLots(), l_price_12, Slippage, CLR_NONE);
}
}
void prepare_arrays() {
gda_224[1] = Digits;
gda_224[2] = Bid;
gda_224[3] = Ask;
gda_224[4] = MarketInfo(Symbol(), MODE_LOTSTEP);
gda_224[5] = MarketInfo(Symbol(), MODE_MINLOT);
gda_224[6] = MarketInfo(Symbol(), MODE_MAXLOT);
gda_224[7] = Risk;
gda_224[8] = MarketInfo(Symbol(), MODE_TICKVALUE);
gda_224[10] = AccountFreeMargin();
gda_224[11] = MaxOrders;
gda_224[13] = MarketInfo(Symbol(), MODE_LOTSIZE);
gda_224[15] = Bars;
gda_224[16] = gd_188;
gda_224[23] = ArrayCopyRates(gda_228, Symbol(), PERIOD_H1);
gda_224[24] = ArrayCopyRates(gda_232, Symbol(), PERIOD_D1);
gda_224[29] = stop.loss;
gsa_236[1] = Symbol();
gsa_236[2] = ClickBankReceipt;
gsa_236[3] = EMailAddress;
gsa_236[4] = DoubleToStr(AccountNumber(), 0);
gsa_236[7] = AccountCurrency();
}
p:s/tukar v16 kepada v17 kat org yg ketawa begolek tu je..