#property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #include #include #include #include #include bool gba_76[100]; int gia_unused_80[100]; double gda_unused_84[100]; string gsa_unused_88[100]; int gia_unused_92[100]; double gda_unused_96[25]; string gsa_100[] = {"None", "Limit", "Stop"}; int gi_unused_104 = 1; int gi_unused_108 = 2; int gi_unused_112 = 1; int gi_unused_116 = 0; int gi_unused_120 = 3; int gi_unused_124 = -1; int gi_unused_128 = -1; int gi_unused_132 = 3; int gi_136 = 2; int gi_140 = 1; int gi_unused_144 = 3; int gi_unused_148 = 2; int gi_unused_152 = 1; int gi_unused_156 = 1; int gi_unused_160 = 2; int gi_unused_164 = 2; int gi_unused_168 = 1; int gi_172 = 2; int gi_176 = 1; int gi_unused_180 = 0; int gi_unused_184 = 1; int gi_unused_188 = 2; int gi_unused_192 = 3; int gi_unused_196 = 4; string gsa_200[] = {"Reset", "Waiting", "In trade", "Closing", "Done Today"}; bool gi_unused_204 = FALSE; bool gi_unused_208 = TRUE; int gi_unused_212 = 60; int gi_unused_216 = 900; int gi_unused_220 = 1800; int gi_unused_224 = 3600; int gi_unused_228 = 5400; int gi_unused_232 = 7200; int gi_unused_236 = 1; int gi_unused_240 = 2; int gi_unused_244 = 3; int gi_unused_248 = 4; int gi_252 = 1; int gi_unused_256 = 0; int gi_unused_260 = 1; int gi_unused_264 = 0; int gi_unused_268 = 1; int gi_unused_272 = 0; int gi_unused_276 = 1; int gi_unused_280 = 0; int gi_unused_284 = 1; int gi_unused_288 = 0; int gi_unused_292 = 1; int gi_unused_296 = 0; int gi_unused_300 = 1; int gi_unused_304 = 0; int gi_unused_308 = 0; int gi_unused_312 = 1; int gi_unused_316 = 0; int gi_unused_320 = 1; int gi_unused_324 = 0; int gi_328 = 1; int gi_unused_332 = 2; int gi_unused_336 = 3; int gi_unused_340 = 1; string gsa_344[] = {"blank", "Waiting", "Preset", "Entry", "Manage"}; string gsa_348[] = {"blank", "SHORT", "LONG", "NEUTRAL"}; string gsa_352[] = {"blank", "Below", "Above"}; string gsa_356[] = {"blank", "Check", "Clear", "Set"}; string gsa_360[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}; string gsa_364[] = {"Manual", "Auto"}; string gsa_368[] = {"Micro", "Mini", "Standard"}; string gsa_372[] = {"blank", "Short", "Long"}; int gi_376; int gi_380; string gs_384; string gs_392; string gsa_400[] = {"Aussie Loonie ", "Aussie Kiwi ", "Aussie Yen ", "Aussie Dollar ", "Swissy Yen", "Euro Aussie", "Euro Loonie", "Euro Swissy", "Euro Pound ", "Euro Yen ", "Euro ", "Pound Swissy ", "Pound Yen ", "Pound ", "Loonie ", "Swissy ", "Dollar Yen ", "Gold ", "Silver ", "Kiwi Yen", "Kiwi Dollar"}; string gsa_404[] = {"DEMO", "Invalid", "Connect"}; int gia_unused_408[10]; double gda_unused_412[1000]; double gda_unused_416[1000]; double gda_unused_420[1000]; double gda_unused_424[1000]; string gsa_428[] = {"Server", "GMT", "Local"}; string gsa_432[] = {"Unknown", "Interbank FX, LLC", "FXDirectDealer", "Demo Account", "North Finance Company Ltd", "FOREX", "Alpari (UK) Ltd.", "Rosenthal Collins Group, LLC"}; int gi_unused_436 = 8; int gi_unused_444 = 1; int gi_unused_448 = 2; int gia_452[] = {0, 0, 3, 3, 3, 0, 2, 5}; string gs_000000_456 = "000000"; string gs_464 = "info@PowerTradeLive.com"; string gs_472 = "Copyright © 2008"; bool gi_480 = FALSE; bool gi_484 = TRUE; bool gi_488 = FALSE; int gi_492 = 0; string g_str_concat_496; string gs_dummy_504; string gs_512; string gs_dummy_520; extern string EASettings = "=== EA Settings==="; extern bool TradeEnable = FALSE; extern bool CloseAll = FALSE; extern bool ShowData = TRUE; extern int EA_ID = 1; extern int Grid_Size = 0; extern int Take_Profit = 0; extern double Lots = 0.0; extern bool InstantOrders = TRUE; bool gi_unused_572 = FALSE; bool gi_576 = FALSE; bool gi_580 = FALSE; bool gi_584 = TRUE; bool gi_unused_588 = FALSE; bool gi_592 = FALSE; bool gi_596 = FALSE; int gi_unused_600 = 1; int gi_unused_604 = 100; int gi_unused_608 = 5; string gs_dummy_612; bool gi_unused_620 = TRUE; bool gi_624 = TRUE; bool gi_unused_628 = TRUE; bool gi_unused_632 = TRUE; int gi_unused_636 = 10; int gi_640 = 10; int gi_644 = 16711680; int gi_648 = 8388608; int gi_652 = 9221330; int gi_656 = 16777215; extern int Code = 0; int gi_664; int gi_668; double gd_672; string gs_unused_680; int gi_unused_688 = D'20.09.2008 04:29'; double gd_692 = 0.0; double gd_unused_700 = 3.0; double gd_708 = 0.0; double gd_716; double gd_724; double gd_732; double gd_740; bool gi_748 = FALSE; bool gi_752 = FALSE; int gi_756 = 0; int gi_760; int gi_unused_764 = 12; int gi_776 = 0; string gsa_780[] = {"Resetting", "Direction", " Up", " Down"}; int gi_784 = 0; int gi_788; bool gi_792 = TRUE; bool g_global_var_796; int init() { gs_384 = "Power Trader"; gs_392 = "3.4"; gs_unused_680 = gs_384; if (gi_480) { Grid_Size = TRUE; Take_Profit = 3; Lots = 0.01; TradeEnable = TRUE; } else { if (Code == 159753) gi_480 = TRUE; else { doHUD(1); gi_480 = FALSE; } } gs_000000_456 = AccountNumber(); if (EA_ID > 0) gi_760 = EA_ID; gi_376 = GetPair(Symbol()); gi_380 = 1000000 * gi_376 + gi_760; TradeGate(gs_384, 4, gi_380, 0); if (!IsDemo() && AccountNumber() == StrToInteger(gs_000000_456)) { gi_488 = TRUE; MyAlerts("Welcome to " + gs_384 + " " + gs_392 + ", Account Number " + gs_000000_456 + " >>> " + gsa_400[gi_376], gi_252, gi_576, gi_596, gi_592, gi_580); } else { if (!IsDemo() && AccountNumber() != StrToInteger(gs_000000_456)) { gi_488 = FALSE; MyAlerts("Your EA does not support this account, please try on a Demo Account", gi_252, gi_576, gi_596, gi_592, gi_580); doHUD(1); return (0); } gi_488 = FALSE; MyAlerts("Welcome to " + gs_384 + " " + gs_392 + " DEMO TRADING >>> " + gsa_400[gi_376], gi_252, gi_576, gi_596, gi_592, gi_580); } if (gi_488) { g_str_concat_496 = StringConcatenate("p", gs_000000_456); if (QuickCheck("ftp.powertradeliveauth.com", g_str_concat_496, gs_000000_456, 1)) gi_492 = gi_172; else gi_492 = gi_176; if (gi_492 == gi_176) { MyAlerts("Sorry, this account is not currently active. Please contact " + gs_464, gi_252, gi_576, gi_596, gi_592, gi_580); doHUD(1); return (0); } } if (CloseAll) { if (MessageBox("Are you sure you want to close all trades ?", "Last chance", MB_YESNO|MB_ICONQUESTION) == IDYES) { if (TradeOn(Symbol(), 0, gi_760)) CloseAllTrades(gi_136, gi_380); else if (TradeOn(Symbol(), 1, gi_760)) CloseAllTrades(gi_140, gi_380); CloseAll = FALSE; if (MessageBox("Shall we restart the EA ?", "Enable EA", MB_YESNO|MB_ICONQUESTION) == IDYES) TradeEnable = TRUE; else TradeEnable = FALSE; } } if (gi_624) { gi_664 = gi_652; gi_668 = gi_656; } else { gi_664 = gi_644; gi_668 = gi_648; } gi_788 = TimeCheckBroker(); gs_512 = TimeToStr(TimeLocal(), TIME_DATE) + " - " + gs_384 + " - " + gsa_400[gi_376] + " Activity"; if (gi_584) { Log(gs_512, " ", 0); Log(gs_512, "<- Server time\t\t" + gs_384 + " " + gs_392 + " ready >> " + gsa_432[gi_788] + " TimeSource:" + gi_784 + " CpID:" + gi_380, 0); Log(gs_512, BrokerData(), 0); Log(gs_512, "Grid: " + DoubleToStr(Grid_Size, 2) + " TP: " + DoubleToStr(Take_Profit, 2) + " Lots: " + DoubleToStr(Lots, 2), 0); } gd_708 = 0; gi_776 = 0; if (GlobalVariableCheck("$BuildBasket")) g_global_var_796 = GlobalVariableGet("$BuildBasket"); else g_global_var_796 = TRUE; doHUD(0); CheckEaStatus(gba_76); return (0); } int deinit() { if (gi_480) ObjectsDeleteAll(); return (0); } int start() { int l_ticket_52; bool l_bool_56; if (!IsDemo() && AccountNumber() == StrToInteger(gs_000000_456)) { gi_488 = TRUE; if (QuickCheck("ftp.powertradeliveauth.com", g_str_concat_496, gs_000000_456, 0)) gi_492 = gi_172; else { gi_492 = gi_176; return (0); } } else { if (!IsDemo() && AccountNumber() != StrToInteger(gs_000000_456)) { gi_488 = FALSE; return (0); } gi_488 = FALSE; } gd_672 = Ask - Bid; string ls_44 = gs_384 + " "; if (AccountFreeMargin() < 1000.0 * Lots) return (0); if (GlobalVariableCheck("$BuildBasket")) g_global_var_796 = GlobalVariableGet("$BuildBasket"); else g_global_var_796 = TRUE; if (gd_708 == 0.0) { gd_708 = 1; gd_692 = Grid_Size + gd_672 / Point; gd_732 = 999; gd_716 = Ask + Grid_Size * Point; gd_724 = Bid - Grid_Size * Point; gd_740 = 0; } if (gi_776 != 2 && gi_776 != 3) gi_776 = 1; if (Bid >= gd_716) { gi_776 = 2; if (TradeEnable && g_global_var_796) { if (gi_484) { if (!InstantOrders) { l_ticket_52 = MyOrderSend(Symbol(), 1, Lots, Bid, 0, 0, ls_44 + gs_392 + " > " + gi_760, gi_760, gi_380); Print(gs_384 + " sent new market trade, got Order# " + l_ticket_52); if (l_ticket_52 != -1) { OrderSelect(l_ticket_52, SELECT_BY_TICKET); l_bool_56 = OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() - Take_Profit * Point, 0); Print("Modifying Order#" + l_ticket_52 + "returned: " + l_bool_56); } } else { l_ticket_52 = MyOrderSend(Symbol(), 1, Lots, Bid, 0, Bid - Take_Profit * Point, ls_44 + gs_392 + " > " + gi_760, gi_760, gi_380); Print(gs_384 + " sent new instant trade, got Order# " + l_ticket_52); } } else { if (!InstantOrders) { l_ticket_52 = MyOrderSend(Symbol(), 0, Lots, Ask, 0, 0, ls_44 + gs_392 + " > " + gi_760, gi_760, gi_380); Print(gs_384 + " sent new market trade, got Order# " + l_ticket_52); if (l_ticket_52 != -1) { OrderSelect(l_ticket_52, SELECT_BY_TICKET); l_bool_56 = OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() + Take_Profit * Point, 0); Print("Modifying Order#" + l_ticket_52 + "returned: " + l_bool_56); } } else { l_ticket_52 = MyOrderSend(Symbol(), 0, Lots, Ask, 0, Ask + Take_Profit * Point, ls_44 + gs_392 + " > " + gi_760, gi_760, gi_380); Print(gs_384 + " sent new instant trade, got Order# " + l_ticket_52); } } } gd_716 += gd_692 * Point; gd_740 = gd_716 - (gd_692 + Grid_Size) * Point; gi_748 = TRUE; gi_752 = FALSE; } if (Ask <= gd_724) { gi_776 = 3; if (TradeEnable && g_global_var_796) { if (gi_484) { if (!InstantOrders) { l_ticket_52 = MyOrderSend(Symbol(), 0, Lots, Ask, 0, 0, ls_44 + gs_392 + " > " + gi_760, gi_760, gi_380); Print(gs_384 + " sent new market trade, got Order# " + l_ticket_52); if (l_ticket_52 != -1) { OrderSelect(l_ticket_52, SELECT_BY_TICKET); l_bool_56 = OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() + Take_Profit * Point, 0); Print("Modifying Order#" + l_ticket_52 + "returned: " + l_bool_56); } } else { l_ticket_52 = MyOrderSend(Symbol(), 0, Lots, Ask, 0, Ask + Take_Profit * Point, ls_44 + gs_392 + " > " + gi_760, gi_760, gi_380); Print(gs_384 + " sent new instant trade, got Order# " + l_ticket_52); } } else { if (!InstantOrders) { l_ticket_52 = MyOrderSend(Symbol(), 1, Lots, Bid, 0, 0, ls_44 + gs_392 + " > " + gi_760, gi_760, gi_380); Print(gs_384 + " sent new market trade, got Order# " + l_ticket_52); if (l_ticket_52 != -1) { OrderSelect(l_ticket_52, SELECT_BY_TICKET); l_bool_56 = OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() - Take_Profit * Point, 0); Print("Modifying Order#" + l_ticket_52 + "returned: " + l_bool_56); } } else { l_ticket_52 = MyOrderSend(Symbol(), 1, Take_Profit, Bid, 0, Bid - Take_Profit * Point, ls_44 + gs_392 + " > " + gi_760, gi_760, gi_380); Print(gs_384 + " sent new instant trade, got Order# " + l_ticket_52); } } } gd_724 -= gd_692 * Point; gd_732 = gd_724 + (gd_692 + Grid_Size) * Point; gi_748 = FALSE; gi_752 = TRUE; } if (Ask <= gd_740 && gi_748) { gd_740 -= gd_692 * Point; gd_716 -= gd_692 * Point; } if (Bid >= gd_732 && gi_752) { gd_732 += gd_692 * Point; gd_724 += gd_692 * Point; } doHUD(0); gi_792 = FALSE; GlobalVariableSet("PowerTrader" + gi_380, gi_756); return (0); } int doHUD(bool ai_0) { int li_8 = gi_328; int l_count_4 = 1; WaterMark(gs_384, "Version " + gs_392 + " " + gs_472, 0, 3, 16711935); if (gi_480) MyComment(gi_792, 3, 2, " ", "DEBUG", 65535, 65535, 20); else MyComment(gi_792, 3, 2, " ", " ", 65535, 65535, 20); if (gi_488) { if (gi_492 == 1) { MyComment(gi_792, li_8, l_count_4, "User Status", gsa_404[gi_492], gi_664, gi_668, gi_640); l_count_4++; } else { MyComment(gi_792, li_8, l_count_4, "User Status", gsa_404[gi_492], gi_664, 65535, gi_640); l_count_4++; } } else { MyComment(gi_792, li_8, l_count_4, "User Status", "DEMO", gi_664, gi_668, gi_640); l_count_4++; } MyComment(gi_792, li_8, l_count_4, "Trade Enable", Bool2Text(TradeEnable), gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "Status", gsa_780[gi_776], gi_664, gi_668, gi_640); l_count_4++; if (gi_480) { l_count_4++; MyComment(gi_792, li_8, l_count_4, "Original", Bool2Text(gi_484), gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "Direction", gsa_348[gi_756], gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "NextUpDown", DoubleToStr(gd_740, Digits), gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "NextUp", DoubleToStr(gd_716, Digits), gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "NextDown", DoubleToStr(gd_724, Digits), gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "NextDownUp", DoubleToStr(gd_732, Digits), gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "Grid", Grid_Size, gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "Take Profit", Take_Profit, gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "Lots", DoubleToStr(Lots, 2), gi_664, gi_668, gi_640); l_count_4++; } if (ShowData) { li_8 = gi_328; MyComment(gi_792, li_8, l_count_4, "Grid Size", Grid_Size, gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "Take Profit", Take_Profit, gi_664, gi_668, gi_640); l_count_4++; MyComment(gi_792, li_8, l_count_4, "Lots", DoubleToStr(Lots, Digits), gi_664, gi_668, gi_640); l_count_4++; } if (ai_0) for (l_count_4 = 0; l_count_4 < 10; l_count_4++) MyComment(gi_792, li_8, l_count_4, " ", " ", gi_664, gi_668, gi_640); ObjectsRedraw(); return (0); }