#property copyright "Copyright © 2008,Risdyanto " #property link "risdyantotrader@gmail.com" int gi_76 = D'16.06.2009 16:00'; int gi_80 = 3; bool gi_84 = FALSE; bool gi_88 = TRUE; extern int lot = 1; int g_period_96 = 8; int gi_unused_100 = 35; int gi_unused_104 = 150; int gi_108 = 30; int gi_112 = 5000; int gi_116 = 0; int gi_120 = 0; int gi_124 = 6; int gi_128 = 0; int gi_132 = 400; extern int grid = 40; extern int Target_Profit = 1000; bool gi_144 = TRUE; extern int Batas_Loss = -2000; int gi_unused_152 = 0; int g_slippage_156 = 3; int gi_160; double g_ilow_164; double g_ihigh_172; string gs_180; string gs_dummy_188; string gs_dummy_196; string gs_dummy_204; extern int timeFrame = 5; double g_ibands_232; double g_ibands_240; double g_ibands_264; double g_ibands_272; double gd_280; int gi_unused_304; string gs_unused_308 = "Monex-Server"; int init() { gi_160 = 2 * gi_132; ObjectCreate("Aris", OBJ_LABEL, 0, 0, 0, 0, 0); ObjectSet("Aris", OBJPROP_XDISTANCE, 20); ObjectSet("Aris", OBJPROP_YDISTANCE, 20); ObjectSetText("Aris", " Bollinger Trading Expert 2009, Copyright : Risdyanto", 8, "Arial", White); return (0); } int deinit() { ObjectsDeleteAll(); return (0); } int start() { if (CheckTodaysOrders() >= gi_160) return (0); if (TimeHour(TimeCurrent()) == gi_124 && TimeMinute(TimeCurrent()) == gi_128) { gi_unused_304 = 0; return (0); } if (TimeCurrent() > gi_76) { Alert("Time expired! \nContact me on : 021-91722164 or 08561175898 (Risdyanto)"); return (0); } if (TimeHour(TimeCurrent()) >= gi_116 && TimeMinute(TimeCurrent()) >= gi_120) { gi_unused_304 = 1; MarketAnalize(); CheckForOpen(); CheckForClose(); } return (0); } void MarketAnalize() { for (int li_0 = 1; li_0 <= gi_80; li_0++) { g_ilow_164 = iLow(Symbol(), timeFrame, li_0); g_ihigh_172 = iHigh(Symbol(), timeFrame, li_0); } g_ibands_240 = iBands(Symbol(), timeFrame, 8, 2, 2, PRICE_WEIGHTED, MODE_LOWER, 0); g_ibands_232 = iBands(Symbol(), timeFrame, 8, 2, 2, PRICE_WEIGHTED, MODE_UPPER, 0); g_ibands_264 = g_ibands_232; g_ibands_272 = g_ibands_240; gd_280 = (g_ibands_264 + g_ibands_272) / 2.0; double l_ima_4 = iMA(Symbol(), timeFrame, 20, 0, MODE_SMA, PRICE_CLOSE, 0); if (Ask > l_ima_4) gs_180 = "Naik"; if (Bid < l_ima_4) gs_180 = "Turun"; } void CheckForOpen() { int l_ticket_8; int li_12; double l_ima_0 = iMA(Symbol(), timeFrame, 1, 0, MODE_SMA, PRICE_CLOSE, 0); if (OrdersTotal() <= 0) { if (gs_180 == "Naik") { if (Ask > g_ibands_232) { if (l_ticket_8 > 0) { if (OrderSelect(l_ticket_8, SELECT_BY_TICKET, MODE_TRADES)) { Print("BUY order opened : ", OrderOpenPrice()); if (gi_84) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy"); } else Print("Error opening BUY order : ", GetLastError()); } } } if (gs_180 == "Turun") { if (Bid < g_ibands_240) { if (l_ticket_8 > 0) { if (OrderSelect(l_ticket_8, SELECT_BY_TICKET, MODE_TRADES)) { Print("SELL order opened : ", OrderOpenPrice()); if (gi_84) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell"); } else Print("Error opening SELL order : ", GetLastError()); } } } if (gi_144) { li_12 = grid; OrderSelect(0, SELECT_BY_POS); if (Open[1] > Open[0]) { for (int li_16 = 1; li_16 < 25; li_16++) { OrderSend(Symbol(), OP_BUYSTOP, lot, Ask + li_16 * li_12 * Point, 3, 0, 0); OrderSend(Symbol(), OP_SELLSTOP, lot, Bid - li_16 * li_12 * Point, 3, 0, 0); } } if (Open[1] < Open[0]) { for (int li_20 = 1; li_20 < 25; li_20++) { OrderSend(Symbol(), OP_SELLSTOP, lot, Bid - li_20 * li_12 * Point, 3, 0, 0); OrderSend(Symbol(), OP_BUYSTOP, lot, Ask + li_20 * li_12 * Point, 3, 0, 0); } } } } } void CheckForClose() { double l_ima_0 = iMA(Symbol(), timeFrame, 1, 0, MODE_SMA, PRICE_CLOSE, 0); double l_ima_8 = iMA(Symbol(), timeFrame, g_period_96, 0, MODE_SMA, PRICE_CLOSE, 0); double l_ima_16 = iMA(Symbol(), timeFrame, g_period_96, 0, MODE_SMA, PRICE_CLOSE, 0); if (getProfit() >= Target_Profit) CloseAll(); for (int l_pos_24 = 0; l_pos_24 < OrdersTotal(); l_pos_24++) { OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES); if (gi_88) { if (OrderType() == OP_BUY) { if (Ask > OrderOpenPrice() + Point * gi_112) { if (Bid - OrderOpenPrice() > Point * gi_108) { if (OrderStopLoss() < Bid - Point * gi_108) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * gi_108, OrderTakeProfit(), 0, Green); return; } } } } if (OrderType() == OP_SELL) { if (Bid < OrderOpenPrice() - Point * gi_112) { if (OrderOpenPrice() - Ask > Point * gi_108) { if (OrderStopLoss() > Ask + Point * gi_108 || OrderStopLoss() == 0.0) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * gi_108, OrderTakeProfit(), 0, Red); return; } } } } } } } int CheckTodaysOrders() { int l_count_0 = 0; for (int l_pos_4 = OrdersTotal() - 1; l_pos_4 >= 0; l_pos_4--) { OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES); if (TimeDayOfYear(OrderOpenTime()) == TimeDayOfYear(TimeCurrent())) l_count_0++; } for (l_pos_4 = OrdersHistoryTotal() - 1; l_pos_4 >= 0; l_pos_4--) { OrderSelect(l_pos_4, SELECT_BY_POS, MODE_HISTORY); if (TimeDayOfYear(OrderOpenTime()) == TimeDayOfYear(TimeCurrent())) l_count_0 += 2; } return (l_count_0); } void CloseAll() { int li_0; int l_cmd_8; int l_error_12; RefreshRates(); int l_ord_total_16 = OrdersTotal(); if (l_ord_total_16 > 0) { for (int l_pos_4 = l_ord_total_16 - 1; l_pos_4 >= 0; l_pos_4--) { if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES) == TRUE) { l_cmd_8 = OrderType(); if (l_cmd_8 == OP_BUY) li_0 = OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_156, CLR_NONE); if (l_cmd_8 == OP_SELL) li_0 = OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_156, CLR_NONE); if (l_cmd_8 == OP_BUYSTOP || l_cmd_8 == OP_SELLSTOP || l_cmd_8 == OP_BUYLIMIT || l_cmd_8 == OP_SELLLIMIT) li_0 = OrderDelete(OrderTicket(), CLR_NONE); if (li_0 != 1) { l_error_12 = GetLastError(); Print("LastError = ", l_error_12); } else l_error_12 = 0; } } } } double getProfit() { double ld_ret_0 = 0; for (int l_ord_total_8 = OrdersTotal(); l_ord_total_8 >= 0; l_ord_total_8--) if (OrderSelect(l_ord_total_8, SELECT_BY_POS, MODE_TRADES)) ld_ret_0 = ld_ret_0 + OrderProfit() + OrderSwap() + OrderCommission(); return (ld_ret_0); }