#property copyright "Copyright © 2012, SUPRIYANTO"
#property link "http://www.belajarforexgratis.net"
#property show_inputs
int gi_76 = 1;
bool gi_80 = FALSE;
bool gi_84 = TRUE;
extern double EquityRisk = 2.0;
double gd_100 = 3333.0;
extern double Lots = 0.01;
double gd_116 = 2.0;
extern double TakeProfit = 4.0;
double gd_132 = 0.0;
double gd_140 = 10.0;
double gd_148 = 10.0;
double gd_156 = 5.0;
extern int MaxTrades = 20;
bool gi_168 = FALSE;
double gd_172 = 20000.0;
extern bool UseTrailingStop = FALSE;
bool gi_184 = FALSE;
double gd_188 = 100.0;
extern bool TimeFilter = FALSE;
extern int StartHour = 0;
extern int EndHour = 20;
int ti_0 = 9999;
double gd_212;
double gd_220;
double gd_228;
double gd_236;
double gd_244;
double gd_252;
double gd_260;
double gd_268;
double gd_276;
double gd_284;
bool gi_292;
string gs_296 = "www.belajarforexgratis.net";
int gt_304 = 0;
int gi_308;
int gi_312 = 0;
double gd_316;
int gi_324 = 0;
int gi_328;
double gd_332 = 0.0;
bool gi_340 = FALSE;
bool gi_344 = FALSE;
bool gi_348 = FALSE;
int gi_352;
bool gi_356 = TRUE;
int gi_360 = 0;
int gi_364 = 0;
double gd_368;
double gd_376;
int init() {
gd_284 = MarketInfo(Symbol(), MODE_SPREAD) * Point;
if (IsTesting() == TRUE) f0_5();
if (IsTesting() == FALSE) f0_5();
return (0);
**
int deinit() {
ObjectDelete("Market_Price_Label1");
ObjectDelete("Market_Price_Label2");
ObjectDelete("Market_Price_Label3");
ObjectDelete("Market_Price_Label4");
ObjectDelete("Market_Price_Label5");
ObjectDelete("Market_Price_Label6");
ObjectDelete("Market_Price_Label7");
ObjectDelete("Market_Price_Label8");
ObjectDelete("Market_Price_Label9");
ObjectDelete("Market_Price_Label10");
ObjectDelete("Market_Price_Label11");
ObjectDelete("Market_Price_Label12");
ObjectDelete("Market_Price_Label13");
ObjectDelete("Market_Price_Label14");
ObjectDelete("Market_Price_Label15");
ObjectDelete("Market_Price_Label16");
ObjectDelete("Market_Price_Label17");
ObjectDelete("Market_Price_Label18");
ObjectDelete("Market_Price_Label19");
ObjectDelete("Market_Price_Label20");
ObjectDelete("Market_Price_Label21");
ObjectDelete("Market_Price_Label22");
ObjectDelete("Market_Price_Label23");
ObjectDelete("Market_Price_Label24");
ObjectDelete("Market_Price_Label25");
ObjectDelete("Market_Price_Label26");
ObjectDelete("Market_Price_Label27");
ObjectDelete("Market_Price_Label28");
ObjectDelete("Market_Price_Label29");
ObjectDelete("Market_Price_Label30");
ObjectDelete("Market_Price_Label31");
ObjectDelete("Market_Price_Label32");
ObjectDelete("Market_Price_Label33");
ObjectDelete("Market_Price_Label34");
ObjectDelete("Market_Price_Label35");
return (0);
**
int start() {
string ls_20;
double ld_28;
double ld_36;
double ld_44;
double ld_52;
string ls_60;
string ls_68;
double ld_76;
double ld_84;
ls_60 = "false";
ls_68 = "false";
if (TimeFilter == FALSE || (TimeFilter && (EndHour > StartHour && (Hour() >= StartHour && Hour() <= EndHour)) || (StartHour > EndHour && (!(Hour() >= EndHour && Hour() <= StartHour))))) ls_60 = "true";
if (TimeFilter && (EndHour > StartHour && (!(Hour() >= StartHour && Hour() <= EndHour))) || (StartHour > EndHour && (Hour() >= EndHour && Hour() <= StartHour))) ls_68 = "true";
if (UseTrailingStop) f0_15(gd_140, gd_148, gd_244);
if (gi_184) {
if (TimeCurrent() >= gi_308) {
f0_7();
Print("Closed All due to TimeOut");
**
**
if (gt_304 == Time[0]) return (0);
gt_304 = Time[0];
ld_76 = f0_2();
if (gi_168) {
if (ld_76 < 0.0 && MathAbs(ld_76) > gd_172 / 100.0 * f0_12()) {
f0_7();
Print("Closed All due to Stop Out");
gi_356 = FALSE;
**
**
gi_328 = f0_13();
if (gi_328 == 0) gi_292 = FALSE;
for (gi_324 = OrdersTotal() - 1; gi_324 >= 0; gi_324--) {
OrderSelect(gi_324, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) {
if (OrderType() == OP_BUY) {
gi_344 = TRUE;
gi_348 = FALSE;
ld_28 = OrderLots();
break;
**
**
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) {
if (OrderType() == OP_SELL) {
gi_344 = FALSE;
gi_348 = TRUE;
ld_36 = OrderLots();
break;
**
**
**
if (gi_328 > 0 && gi_328 <= MaxTrades) {
RefreshRates();
gd_268 = f0_11();
gd_276 = f0_3();
if (gi_344 && gd_268 - Ask >= gd_156 * Point) gi_340 = TRUE;
if (gi_348 && Bid - gd_276 >= gd_156 * Point) gi_340 = TRUE;
**
if (gi_328 < 1) {
gi_348 = FALSE;
gi_344 = FALSE;
gi_340 = TRUE;
gd_220 = AccountEquity();
**
if (gi_340) {
gd_268 = f0_11();
gd_276 = f0_3();
if (gi_348) {
if (gi_80 || ls_68 == "true") {
f0_6(0, 1);
gd_316 = NormalizeDouble(EquityRisk * ld_36, gd_116);
** else gd_316 = f0_14(OP_SELL);
if (gi_84 && ls_60 == "true") {
gi_312 = gi_328;
if (gd_316 > 0.0) {
RefreshRates();
gi_352 = f0_1(1, gd_316, Bid, gd_100, Ask, 0, 0, gs_296 + "-" + gi_312, ti_0, 0, HotPink);
if (gi_352 < 0) {
Print("Error: ", GetLastError());
return (0);
**
gd_276 = f0_3();
gi_340 = FALSE;
gi_356 = TRUE;
**
**
** else {
if (gi_344) {
if (gi_80 || ls_68 == "true") {
f0_6(1, 0);
gd_316 = NormalizeDouble(EquityRisk * ld_28, gd_116);
** else gd_316 = f0_14(OP_BUY);
if (gi_84 && ls_60 == "true") {
gi_312 = gi_328;
if (gd_316 > 0.0) {
gi_352 = f0_1(0, gd_316, Ask, gd_100, Bid, 0, 0, gs_296 + "-" + gi_312, ti_0, 0, Lime);
if (gi_352 < 0) {
Print("Error: ", GetLastError());
return (0);
**
gd_268 = f0_11();
gi_340 = FALSE;
gi_356 = TRUE;
**
**
**
**
**
if (gi_340 && gi_328 < 1) {
ld_44 = iClose(Symbol(), 0, 2);
ld_52 = iClose(Symbol(), 0, 1);
gd_252 = Bid;
gd_260 = Ask;
if ((!gi_348) && !gi_344 && ls_60 == "true") {
gi_312 = gi_328;
if (ld_44 > ld_52) {
gd_316 = f0_14(OP_SELL);
if (gd_316 > 0.0) {
gi_352 = f0_1(1, gd_316, gd_252, gd_100, gd_252, 0, 0, gs_296 + "-" + gi_312, ti_0, 0, HotPink);
if (gi_352 < 0) {
Print(gd_316, "Error: ", GetLastError());
return (0);
**
gd_268 = f0_11();
gi_356 = TRUE;
**
** else {
gd_316 = f0_14(OP_BUY);
if (gd_316 > 0.0) {
gi_352 = f0_1(0, gd_316, gd_260, gd_100, gd_260, 0, 0, gs_296 + "-" + gi_312, ti_0, 0, Lime);
if (gi_352 < 0) {
Print(gd_316, "Error: ", GetLastError());
return (0);
**
gd_276 = f0_3();
gi_356 = TRUE;
**
**
**
if (gi_352 > 0) gi_308 = TimeCurrent() + 60.0 * (60.0 * gd_188);
gi_340 = FALSE;
**
gi_328 = f0_13();
gd_244 = 0;
ld_84 = 0;
for (gi_324 = OrdersTotal() - 1; gi_324 >= 0; gi_324--) {
OrderSelect(gi_324, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
gd_244 += OrderOpenPrice() * OrderLots();
ld_84 += OrderLots();
**
**
**
if (gi_328 > 0) gd_244 = NormalizeDouble(gd_244 / ld_84, Digits);
if (gi_356) {
for (gi_324 = OrdersTotal() - 1; gi_324 >= 0; gi_324--) {
OrderSelect(gi_324, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) {
if (OrderType() == OP_BUY) {
gd_212 = gd_244 + TakeProfit * Point;
gd_228 = gd_212;
gd_332 = gd_244 - gd_132 * Point;
gi_292 = TRUE;
**
**
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) {
if (OrderType() == OP_SELL) {
gd_212 = gd_244 - TakeProfit * Point;
gd_236 = gd_212;
gd_332 = gd_244 + gd_132 * Point;
gi_292 = TRUE;
**
**
**
**
if (gi_356) {
if (gi_292 == TRUE) {
for (gi_324 = OrdersTotal() - 1; gi_324 >= 0; gi_324--) {
OrderSelect(gi_324, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) OrderModify(OrderTicket(), gd_244, OrderStopLoss(), gd_212, 0, Yellow);
gi_356 = FALSE;
**
**
**
return (0);
**
double f0_9(double ad_0) {
return (NormalizeDouble(ad_0, Digits));
**
int f0_6(bool ai_0 = TRUE, bool ai_4 = TRUE) {
int li_8 = 0;
for (int li_12 = OrdersTotal() - 1; li_12 >= 0; li_12--) {
if (OrderSelect(li_12, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) {
if (OrderType() == OP_BUY && ai_0) {
RefreshRates();
if (!IsTradeContextBusy()) {
if (!OrderClose(OrderTicket(), OrderLots(), f0_9(Bid), 5, CLR_NONE)) {
Print("Error close BUY " + OrderTicket());
li_8 = -1;
**
** else {
if (gi_360 == iTime(NULL, 0, 0)) return (-2);
gi_360 = iTime(NULL, 0, 0);
Print("Need close BUY " + OrderTicket() + ". Trade Context Busy");
return (-2);
**
**
if (OrderType() == OP_SELL && ai_4) {
RefreshRates();
if (!IsTradeContextBusy()) {
if (!((!OrderClose(OrderTicket(), OrderLots(), f0_9(Ask), 5, CLR_NONE)))) continue;
Print("Error close SELL " + OrderTicket());
li_8 = -1;
continue;
**
if (gi_364 == iTime(NULL, 0, 0)) return (-2);
gi_364 = iTime(NULL, 0, 0);
Print("Need close SELL " + OrderTicket() + ". Trade Context Busy");
return (-2);
**
**
**
**
return (li_8);
**
double f0_14(int ai_0) {
double ld_4;
int li_12;
switch (gi_76) {
case 0:
ld_4 = Lots;
break;
case 1:
ld_4 = NormalizeDouble(Lots * MathPow(EquityRisk, gi_312), gd_116);
break;
case 2:
li_12 = 0;
ld_4 = Lots;
for (int li_20 = OrdersHistoryTotal() - 1; li_20 >= 0; li_20--) {
if (!OrderSelect(li_20, SELECT_BY_POS, MODE_HISTORY)) return (-3);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) {
if (li_12 < OrderCloseTime()) {
li_12 = OrderCloseTime();
if (OrderProfit() < 0.0) {
ld_4 = NormalizeDouble(OrderLots() * EquityRisk, gd_116);
continue;
**
ld_4 = Lots;
**
**
**
**
if (AccountFreeMarginCheck(Symbol(), ai_0, ld_4) <= 0.0) return (-1);
if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2);
return (ld_4);
**
int f0_13() {
int li_0 = 0;
for (int li_4 = OrdersTotal() - 1; li_4 >= 0; li_4--) {
OrderSelect(li_4, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0)
if (OrderType() == OP_SELL || OrderType() == OP_BUY) li_0++;
**
return (li_0);
**
void f0_7() {
for (int li_0 = OrdersTotal() - 1; li_0 >= 0; li_0--) {
OrderSelect(li_0, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0) {
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, gd_100, Blue);
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, gd_100, Red);
**
Sleep(1000);
**
**
**
int f0_1(int ai_0, double ad_4, double ad_12, int ai_20, double ad_24, int ai_32, int ai_36, string as_40, int ai_48, int ai_52, color ai_56) {
int li_60 = 0;
int li_64 = 0;
int li_68 = 0;
int li_72 = 100;
switch (ai_0) {
case 2:
for (li_68 = 0; li_68 < li_72; li_68++) {
li_60 = OrderSend(Symbol(), OP_BUYLIMIT, ad_4, ad_12, ai_20, f0_0(ad_24, gd_132), f0_8(ad_12, ai_36), as_40, ai_48, ai_52, ai_56);
li_64 = GetLastError();
if (li_64 == 0/* NO_ERROR */) break;
if (!((li_64 == 4/* SERVER_BUSY */ || li_64 == 137/* BROKER_BUSY */ || li_64 == 146/* TRADE_CONTEXT_BUSY */ || li_64 == 136/* OFF_QUOTES */))) break;
Sleep(1000);
**
break;
case 4:
for (li_68 = 0; li_68 < li_72; li_68++) {
li_60 = OrderSend(Symbol(), OP_BUYSTOP, ad_4, ad_12, ai_20, f0_0(ad_24, gd_132), f0_8(ad_12, ai_36), as_40, ai_48, ai_52, ai_56);
li_64 = GetLastError();
if (li_64 == 0/* NO_ERROR */) break;
if (!((li_64 == 4/* SERVER_BUSY */ || li_64 == 137/* BROKER_BUSY */ || li_64 == 146/* TRADE_CONTEXT_BUSY */ || li_64 == 136/* OFF_QUOTES */))) break;
Sleep(5000);
**
break;
case 0:
for (li_68 = 0; li_68 < li_72; li_68++) {
RefreshRates();
li_60 = OrderSend(Symbol(), OP_BUY, ad_4, Ask, ai_20, f0_0(Bid, gd_132), f0_8(Ask, ai_36), as_40, ai_48, ai_52, ai_56);
li_64 = GetLastError();
if (li_64 == 0/* NO_ERROR */) break;
if (!((li_64 == 4/* SERVER_BUSY */ || li_64 == 137/* BROKER_BUSY */ || li_64 == 146/* TRADE_CONTEXT_BUSY */ || li_64 == 136/* OFF_QUOTES */))) break;
Sleep(5000);
**
break;
case 3:
for (li_68 = 0; li_68 < li_72; li_68++) {
li_60 = OrderSend(Symbol(), OP_SELLLIMIT, ad_4, ad_12, ai_20, f0_4(ad_24, gd_132), f0_10(ad_12, ai_36), as_40, ai_48, ai_52, ai_56);
li_64 = GetLastError();
if (li_64 == 0/* NO_ERROR */) break;
if (!((li_64 == 4/* SERVER_BUSY */ || li_64 == 137/* BROKER_BUSY */ || li_64 == 146/* TRADE_CONTEXT_BUSY */ || li_64 == 136/* OFF_QUOTES */))) break;
Sleep(5000);
**
break;
case 5:
for (li_68 = 0; li_68 < li_72; li_68++) {
li_60 = OrderSend(Symbol(), OP_SELLSTOP, ad_4, ad_12, ai_20, f0_4(ad_24, gd_132), f0_10(ad_12, ai_36), as_40, ai_48, ai_52, ai_56);
li_64 = GetLastError();
if (li_64 == 0/* NO_ERROR */) break;
if (!((li_64 == 4/* SERVER_BUSY */ || li_64 == 137/* BROKER_BUSY */ || li_64 == 146/* TRADE_CONTEXT_BUSY */ || li_64 == 136/* OFF_QUOTES */))) break;
Sleep(5000);
**
break;
case 1:
for (li_68 = 0; li_68 < li_72; li_68++) {
li_60 = OrderSend(Symbol(), OP_SELL, ad_4, Bid, ai_20, f0_4(Ask, gd_132), f0_10(Bid, ai_36), as_40, ai_48, ai_52, ai_56);
li_64 = GetLastError();
if (li_64 == 0/* NO_ERROR */) break;
if (!((li_64 == 4/* SERVER_BUSY */ || li_64 == 137/* BROKER_BUSY */ || li_64 == 146/* TRADE_CONTEXT_BUSY */ || li_64 == 136/* OFF_QUOTES */))) break;
Sleep(5000);
**
**
return (li_60);
**
double f0_0(double ad_0, int ai_8) {
if (ai_8 == 0) return (0);
return (ad_0 - ai_8 * Point);
**
double f0_4(double ad_0, int ai_8) {
if (ai_8 == 0) return (0);
return (ad_0 + ai_8 * Point);
**
double f0_8(double ad_0, int ai_8) {
if (ai_8 == 0) return (0);
return (ad_0 + ai_8 * Point);
**
double f0_10(double ad_0, int ai_8) {
if (ai_8 == 0) return (0);
return (ad_0 - ai_8 * Point);
**
double f0_2() {
double ld_0 = 0;
for (gi_324 = OrdersTotal() - 1; gi_324 >= 0; gi_324--) {
OrderSelect(gi_324, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0)
if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_0 += OrderProfit();
**
return (ld_0);
**
void f0_15(int ai_0, int ai_4, double ad_8) {
int li_16;
double ld_20;
double ld_28;
if (ai_4 != 0) {
for (int li_36 = OrdersTotal() - 1; li_36 >= 0; li_36--) {
if (OrderSelect(li_36, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() || OrderMagicNumber() == ti_0) {
if (OrderType() == OP_BUY) {
li_16 = NormalizeDouble((Bid - ad_8) / Point, 0);
if (li_16 < ai_0) continue;
ld_20 = OrderStopLoss();
ld_28 = Bid - ai_4 * Point;
if (ld_20 == 0.0 || (ld_20 != 0.0 && ld_28 > ld_20)) OrderModify(OrderTicket(), ad_8, ld_28, OrderTakeProfit(), 0, Aqua);
**
if (OrderType() == OP_SELL) {
li_16 = NormalizeDouble((ad_8 - Ask) / Point, 0);
if (li_16 < ai_0) continue;
ld_20 = OrderStopLoss();
ld_28 = Ask + ai_4 * Point;
if (ld_20 == 0.0 || (ld_20 != 0.0 && ld_28 < ld_20)) OrderModify(OrderTicket(), ad_8, ld_28, OrderTakeProfit(), 0, Red);
**
**
Sleep(1000);
**
**
**
**
double f0_12() {
if (f0_13() == 0) gd_368 = AccountEquity();
if (gd_368 < gd_376) gd_368 = gd_376;
else gd_368 = AccountEquity();
gd_376 = AccountEquity();
return (gd_368);
**
double f0_11() {
double ld_0;
int li_8;
double ld_12 = 0;
int li_20 = 0;
for (int li_24 = OrdersTotal() - 1; li_24 >= 0; li_24--) {
OrderSelect(li_24, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0 && OrderType() == OP_BUY) {
li_8 = OrderTicket();
if (li_8 > li_20) {
ld_0 = OrderOpenPrice();
ld_12 = ld_0;
li_20 = li_8;
**
**
**
return (ld_0);
**
double f0_3() {
double ld_0;
int li_8;
double ld_12 = 0;
int li_20 = 0;
for (int li_24 = OrdersTotal() - 1; li_24 >= 0; li_24--) {
OrderSelect(li_24, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != ti_0) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == ti_0 && OrderType() == OP_SELL) {
li_8 = OrderTicket();
if (li_8 > li_20) {
ld_0 = OrderOpenPrice();
ld_12 = ld_0;
li_20 = li_8;
**
**
**
return (ld_0);
**
void f0_5() {
Comment("Supriyanto Scalper 2012 V.2\n", "Suprifx |www.belajarforexgratis.net|=> Robot Forex Gratis <=\n", "Forex Account Server:", AccountServer(),
"\n", "Lots: ", Lots,
"\n", "Symbol: ", Symbol(),
"\n", "Price: ", NormalizeDouble(Bid, 4),
"\n", "Date: ", Month(), "-", Day(), "-", Year(), " Server Time: ", Hour(), ":", Minute(), ":", Seconds(),
"\n");
**