#property copyright "Copyright © 2007 - 2008, GloboFX Expert" #property link "http://www.globofx.com/expert/" string gs_76 = "GloboFX Expert - Seus comércios de forma automática 24hs por dia"; extern string ExpertName = "GloboFX 300Pips4.8"; extern int MagicNumber = 51913; extern bool SignalMail = TRUE; extern bool EachTickMode = TRUE; extern double Lots = 0.1; extern double risk = 13.0; extern int Slippage = 3; extern bool UseStopLoss = TRUE; extern int StopLoss = 1000; extern bool UseTakeProfit = TRUE; extern int TakeProfit = 10; extern bool UseTrailingStop = FALSE; extern int TrailingStop = 15; extern double DecreaseFactor = 1.0; extern double mm = 1.0; extern bool UseSound = TRUE; extern string NameFileSound = "alert.wav"; int gi_176 = 0; int gi_180; int gi_184; bool gi_188 = FALSE; string gs_192 = "300Pips4.8"; string gs_200 = "suporte@globofx.com"; int init() { ObjectCreate("fxfisherman", OBJ_LABEL, 0, 0, 0); ObjectSetText("fxfisherman", "www.globofx.com", 11, "Verdana", Yellow); ObjectSet("fxfisherman", OBJPROP_CORNER, 2); ObjectSet("fxfisherman", OBJPROP_XDISTANCE, 5); ObjectSet("fxfisherman", OBJPROP_YDISTANCE, 10); return (0); gi_180 = Bars; if (EachTickMode) gi_184 = 0; else gi_184 = 1; return (0); } int deinit() { return (0); } int start() { int li_8; double ld_12; double ld_20; if (CheckTodaysOrders() >= 4) return (0); Comment("GloboFX Expert - Seus comércios de forma automática 24hs por dia" + "", "\n", "Habilitado para: " + AccountName() + " - Expert válido até: 09/07/2008" + "", "\n", "Informações: suporte@globofx.com"); int li_0 = 0; if (mm != 0.0) Lots = MathCeil(AccountFreeMargin() * risk / 10000.0) / 10.0; if (gi_176 > 1) Lots = NormalizeDouble(Lots - Lots * gi_176 / DecreaseFactor, 1); if (Lots < 0.1) Lots = 0.1; if (Period() != PERIOD_M30) { Alert("ERRO: Habilitado para M30."); return (0); } if (Symbol() != "EURUSD") { if (Symbol() != "EURUSD.") { if (Symbol() != "EURUSD,") { if (Symbol() != "EURUSDm") { Alert("ERRO: Habilitado paridade EUR/USD"); return (0); } } } } if (AccountNumber() != 51913) { if (AccountNumber() != 52439) { Alert("ERRO: Operações na conta: " + AccountNumber() + "", "\n", "NÃO ESTÃO HABILITADAS!", "\n", "Informações: " + gs_200 + ""); return (0); } } if (AccountFreeMargin() < 1000.0 * Lots) { Alert("Saldo Insuficiente. Margem Livre = ", AccountFreeMargin()); return (0); } string ls_28 = "2008.07.05"; int li_36 = StrToTime(ls_28); if (TimeCurrent() >= li_36) { Alert("ERRO: Esse EA ", gs_192, " Expirou!!!", "\n", "Informações: " + gs_200 + ""); return (0); } if (EachTickMode && Bars != gi_180) gi_188 = FALSE; int li_4 = OrdersTotal(); li_0 = 0; double ld_40 = iMA(NULL, PERIOD_M30, 12, 0, MODE_EMA, PRICE_CLOSE, gi_184 + 0); double ld_48 = iMA(NULL, PERIOD_M30, 26, 0, MODE_EMA, PRICE_CLOSE, gi_184 + 0); double ld_56 = iADX(NULL, PERIOD_M30, 14, PRICE_CLOSE, MODE_PLUSDI, gi_184 + 0); double ld_64 = iMACD(NULL, PERIOD_M30, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, gi_184 + 0); double ld_72 = iRSI(NULL, PERIOD_M30, 14, PRICE_CLOSE, gi_184 + 0); double ld_80 = iSAR(NULL, PERIOD_M30, 0.02, 0.2, gi_184 + 0); double ld_88 = iMA(NULL, PERIOD_M30, 12, 0, MODE_EMA, PRICE_CLOSE, gi_184 + 0); double ld_96 = iMA(NULL, PERIOD_M30, 26, 0, MODE_EMA, PRICE_CLOSE, gi_184 + 0); double ld_104 = iADX(NULL, PERIOD_M30, 14, PRICE_CLOSE, MODE_PLUSDI, gi_184 + 0); double ld_112 = iADX(NULL, PERIOD_M30, 14, PRICE_CLOSE, MODE_MINUSDI, gi_184 + 0); double ld_120 = iMACD(NULL, PERIOD_M30, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, gi_184 + 0); double ld_128 = iMACD(NULL, PERIOD_M30, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, gi_184 + 0); double ld_136 = iRSI(NULL, PERIOD_M30, 14, PRICE_CLOSE, gi_184 + 0); double ld_144 = 50.0; double ld_152 = iOpen(NULL, PERIOD_M30, gi_184 + 0); double ld_160 = iSAR(NULL, PERIOD_M30, 0.02, 0.2, gi_184 + 0); double ld_168 = iMA(NULL, PERIOD_M30, 12, 0, MODE_EMA, PRICE_CLOSE, gi_184 + 0); double ld_176 = iMA(NULL, PERIOD_M30, 26, 0, MODE_EMA, PRICE_CLOSE, gi_184 + 0); double ld_184 = iADX(NULL, PERIOD_M30, 14, PRICE_CLOSE, MODE_PLUSDI, gi_184 + 0); double ld_192 = iADX(NULL, PERIOD_M30, 14, PRICE_CLOSE, MODE_MINUSDI, gi_184 + 0); double ld_200 = iMACD(NULL, PERIOD_M30, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, gi_184 + 0); double ld_208 = iMACD(NULL, PERIOD_M30, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, gi_184 + 0); double ld_216 = iRSI(NULL, PERIOD_M30, 14, PRICE_CLOSE, gi_184 + 0); double ld_224 = 50.0; double ld_232 = iOpen(NULL, PERIOD_M30, gi_184 + 0); double ld_240 = iSAR(NULL, PERIOD_M30, 0.02, 0.2, gi_184 + 0); bool li_248 = FALSE; for (int li_252 = 0; li_252 < li_4; li_252++) { OrderSelect(li_252, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { li_248 = TRUE; if (OrderType() == OP_BUY) { if (li_0 == 3 && (EachTickMode && !gi_188) || (!EachTickMode && Bars != gi_180)) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) gi_180 = Bars; li_248 = FALSE; } else { if (UseTrailingStop && TrailingStop > 0) { if (Bid - OrderOpenPrice() > Point * TrailingStop) { if (OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); if (!EachTickMode) gi_180 = Bars; } } } } } else { if (li_0 == 4 && (EachTickMode && !gi_188) || (!EachTickMode && Bars != gi_180)) { OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); if (!EachTickMode) gi_180 = Bars; li_248 = FALSE; } else { if (UseTrailingStop && TrailingStop > 0) { if (OrderOpenPrice() - Ask > Point * TrailingStop) { if (OrderStopLoss() > Ask + Point * TrailingStop || OrderStopLoss() == 0.0) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange); if (!EachTickMode) gi_180 = Bars; } } } } } } } if (ld_88 > ld_96 && ld_120 > ld_128) li_0 = 1; if (ld_168 > ld_176 && ld_200 < ld_208) li_0 = 2; if (li_0 == 1 && (EachTickMode && !gi_188) || (!EachTickMode && Bars != gi_180)) { if (!li_248) { if (AccountFreeMargin() < 1000.0 * Lots) { Print("Faltou dinheiro. Margem Livre = ", AccountFreeMargin()); return (0); } if (UseStopLoss) ld_12 = Ask - StopLoss * Point; else ld_12 = 0.0; if (UseTakeProfit) ld_20 = Ask + TakeProfit * Point; else ld_20 = 0.0; li_8 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, ld_12, ld_20, "GloboFX Compra", MagicNumber, 0, DodgerBlue); if (li_8 > 0) { if (OrderSelect(li_8, SELECT_BY_TICKET, MODE_TRADES)) { Print("Ordem de Compra: ", OrderOpenPrice()); if (UseSound) PlaySound(NameFileSound); if (SignalMail) SendMail("[Sinal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy"); } else Print("Erro ao abrir ordem de compra: ", GetLastError()); } if (EachTickMode) gi_188 = TRUE; if (!EachTickMode) gi_180 = Bars; return (0); } } if (li_0 == 2 && (EachTickMode && !gi_188) || (!EachTickMode && Bars != gi_180)) { if (!li_248) { if (AccountFreeMargin() < 1000.0 * Lots) { Print("Faltou dinheiro. Margem Livre = ", AccountFreeMargin()); return (0); } if (UseStopLoss) ld_12 = Bid + StopLoss * Point; else ld_12 = 0.0; if (UseTakeProfit) ld_20 = Bid - TakeProfit * Point; else ld_20 = 0.0; li_8 = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, ld_12, ld_20, "GloboFX Venda", MagicNumber, 0, DeepPink); if (li_8 > 0) { if (OrderSelect(li_8, SELECT_BY_TICKET, MODE_TRADES)) { Print("Ordem de Venda: ", OrderOpenPrice()); if (UseSound) PlaySound(NameFileSound); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell"); } else Print("Erro ao abrir ordem de venda : ", GetLastError()); } if (EachTickMode) gi_188 = TRUE; if (!EachTickMode) gi_180 = Bars; return (0); } } if (!EachTickMode) gi_180 = Bars; return (0); } int CheckTodaysOrders() { int li_0 = 0; for (int li_4 = OrdersTotal() - 1; li_4 >= 0; li_4--) { OrderSelect(li_4, SELECT_BY_POS, MODE_TRADES); if (TimeDayOfYear(OrderOpenTime()) == TimeDayOfYear(TimeCurrent())) li_0++; } for (li_4 = OrdersHistoryTotal() - 1; li_4 >= 0; li_4--) { OrderSelect(li_4, SELECT_BY_POS, MODE_HISTORY); if (TimeDayOfYear(OrderOpenTime()) == TimeDayOfYear(TimeCurrent())) li_0++; } return (li_0); }