#property strict /* v19.1 Younus Trade Updated v19.0 Sources updated Gold pro taking its own trade v18.3 Alex Removed v18.2 Normalize Double added in younus trade v18.1 Limit 0.05 Lot size for Younus trade v18.0 Younus Trade Copier Ready No Pending Order Delete */ #include #include #include CAppDialog OurInterface; #include CButton SetTPButton,SetSLButton; #include CEdit LotSize,LotSize2,LotSize3,SD,TP,SL,newTP,newSL; #include CLabel LotLabel,LotLabel2,LotLabel3,SDLabel,TPLabel,SLLabel; CCustomBot bot; bool removeFromThisChartOnly = true; double TradeVolume_Demo =1.1; double TradeVolume_GP = 1; double TradeVolume_KL = 0.12; double TradeVolume_YS = 0.06; double sd= 0; // Start Diffrence double sl = 1000; double tp = 1000; double tsl= 0; double killer_sl= 200; double refsl = 500; double breakevensl=50; double booksomeprofitsl=200; double sl_margin =50; double newtp = 0; double newsl = 0; double MaxAccountBalance = AccountBalance(); double MinAccountBalance = 1000000; double InitialAccountBalance = AccountBalance(); int max_trades_same_type = 3; const string LotName = "Lot_Volume"; const string LotName2 = "Lot_Volume2"; const string LotName3 = "Lot_Volume3"; const string SD_Value = "SD_Value"; const string TP_Value = "TP_Value"; const string SL_Value = "SL_Value"; const string newTP_Value = "newTP_Value"; const string newSL_Value = "newSL_Value"; string symbols[]={"XAUUSD","XAGUSD","XTIUSD","USDJPY","EURJPY","GBPJPY","CADJPY","CHFJPY","USDCAD","AUDUSD", "EURUSD","EURGBP","EURNZD","GBPUSD","NZDCAD","GBPNZD","GBPAUD","EURAUD","NZDCHF"}; string sources[] ={"Own","Alex","GoldPro","GoldKiller","Gold2Pro"}; int count_symbols = ArraySize(symbols); int count_sources = ArraySize(sources); datetime timetostart = TimeCurrent(); datetime timetostart2 = TimeCurrent(); datetime timetostart3 = TimeCurrent(); datetime timetostart4 = TimeCurrent(); string content_msg; string content_file; string buysell; string account_name; string trade_status; int ress = 0; ulong chat_id_UK = -1002466214276; datetime timetostartcopyorderfilecreate = TimeCurrent(); datetime timetostartcloseorderfiledelete = TimeCurrent(); string InpToken= "8181067618:AAGqA6S1y59CG5JgxX-c2rcgEt0kvpgCBvY"; // UK Bot int check_telegram_updates = 2150; //miliseconds int capture_previous_update_id= 0; ulong chat_id = 0; string Broker = "IC-Market"; string OK_TO_COPY_TRADE = "NG"; string OK_TO_TRADE_YOUNUS_SOBIA = "NG"; string OK_TO_TRADE_PRO = "NG"; string OK_TO_TRADE_KILLER = "NG"; int account=AccountNumber(); int account_goldpro = 21766110; int account_goldkiller = 66725446; int account_younus = 220091436; int account_self_ic = 310058720; int account_self_ex = 16541506; int account_ex_demo = 22571934; int OnInit() { if (account == account_younus) { account_name="Younus-Sobia"; OK_TO_COPY_TRADE = "OK"; OK_TO_TRADE_KILLER = "OK"; } if (account == account_self_ic) { account_name="Self-Real-IC"; OK_TO_COPY_TRADE = "OK"; OK_TO_TRADE_PRO = "OK"; } if (account == account_goldpro) { account_name="Demo-GoldPro"; // OK_TO_COPY_TRADE = "OK"; OK_TO_TRADE_PRO = "OK"; } if (account==account_ex_demo) { Broker = "Exness"; OK_TO_TRADE_YOUNUS_SOBIA = "OK"; } if (account==account_self_ex) { Broker = "Exness"; OK_TO_TRADE_YOUNUS_SOBIA = "OK"; } bot.Token(InpToken); // Random Number Generator MathSrand(GetTickCount()); EventSetMillisecondTimer(check_telegram_updates); telegram_to_mt4(); ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true); OurInterface.Create(0,"AutoTrading Bot v19.2",0,180,70,400,350); LotLabel.Create(0,"LotLabel",0,10,10,50,30); OurInterface.Add(LotLabel); LotLabel.Text("Lot Size Demo:"); LotSize.Create(0,LotName,0,130,10,200,30); OurInterface.Add(LotSize); LotSize.Text(string(TradeVolume_Demo)); LotLabel2.Create(0,"LotLabel2",0,10,40,50,60); OurInterface.Add(LotLabel2); LotLabel2.Text("Lot Size GP:"); LotSize2.Create(0,LotName2,0,130,40,200,60); OurInterface.Add(LotSize2); LotSize2.Text(string(TradeVolume_GP)); LotLabel3.Create(0,"LotLabel3",0,10,70,50,90); OurInterface.Add(LotLabel3); LotLabel3.Text("Lot Size YS:"); LotSize3.Create(0,LotName3,0,130,70,200,90); OurInterface.Add(LotSize3); LotSize3.Text(string(TradeVolume_YS)); SDLabel.Create(0,"SDLabel",0,10,100,50,120); OurInterface.Add(SDLabel); SDLabel.Text("SD:"); SD.Create(0,SD_Value,0,90,100,160,120); OurInterface.Add(SD); SD.Text(string(sd)); TPLabel.Create(0,"TPLabel",0,10,130,50,150); OurInterface.Add(TPLabel); TPLabel.Text("TP:"); TP.Create(0,TP_Value,0,90,130,160,150); OurInterface.Add(TP); TP.Text(string(tp)); SLLabel.Create(0,"SLLabel",0,10,160,50,180); OurInterface.Add(SLLabel); SLLabel.Text("SL:"); SL.Create(0,SL_Value,0,90,160,160,180); OurInterface.Add(SL); SL.Text(string(sl)); newTP.Create(0,newTP_Value,0,10,190,100,210); OurInterface.Add(newTP); newTP.Text(string(newtp)); newSL.Create(0,newSL_Value,0,10,220,100,240); OurInterface.Add(newSL); newSL.Text(string(newsl)); SetTPButton.Create(0,"SetTPButton",0,110,190,200,210); OurInterface.Add(SetTPButton); SetTPButton.Text("Set new TP"); SetSLButton.Create(0,"SetSLButton",0,110,220,200,240); OurInterface.Add(SetSLButton); SetSLButton.Text("Set new SL"); OurInterface.Run(); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); // Kill the timer OurInterface.Destroy(reason); } void OnTick() { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if((OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) && OrderMagicNumber()!=0) { datetime ctm= TimeCurrent()-OrderOpenTime(); if (ctm>1200 && OrderSymbol()=="XAUUSD") { int OpenDelete = OrderDelete(OrderTicket()); } if (ctm>21600) { // int OpenDelete = OrderDelete(OrderTicket()); }}}} if (TimeCurrent()-timetostart>10) { Print ("Checking All TP1/TP2/TP3 now"); timetostart=TimeCurrent(); long CID = ChartFirst(); while(CID>=0) { ObjectCreate (CID, "1TPSL_"+ChartSymbol(CID), OBJ_LABEL, 0,0,0); ObjectSetInteger (CID,"1TPSL_"+ChartSymbol(CID),OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetInteger (CID,"1TPSL_"+ChartSymbol(CID), OBJPROP_XDISTANCE,4); ObjectSetInteger (CID,"1TPSL_"+ChartSymbol(CID), OBJPROP_YDISTANCE,30); ObjectSetInteger (CID,"1TPSL_"+ChartSymbol(CID), OBJPROP_COLOR, clrBlack); ObjectSetInteger (CID,"1TPSL_"+ChartSymbol(CID), OBJPROP_FONTSIZE,8); ObjectCreate (CID, "2TPSL_"+ChartSymbol(CID), OBJ_LABEL, 0,0,0); ObjectSetInteger (CID,"2TPSL_"+ChartSymbol(CID),OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetInteger (CID,"2TPSL_"+ChartSymbol(CID), OBJPROP_XDISTANCE,4); ObjectSetInteger (CID,"2TPSL_"+ChartSymbol(CID), OBJPROP_YDISTANCE,45); ObjectSetInteger (CID,"2TPSL_"+ChartSymbol(CID), OBJPROP_COLOR, clrBlack); ObjectSetInteger (CID,"2TPSL_"+ChartSymbol(CID), OBJPROP_FONTSIZE,8); CID=ChartNext(CID); } // Gold Killer TP1,TP2 and TP3 updater for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderMagicNumber()!=0) { if(GetMagicSource(OrderMagicNumber())=="GoldKiller") { if (OrderType()==OP_BUY) { int filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-TP1.txt",FILE_READ); double temp_tp1 = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-TP2.txt",FILE_READ); double temp_tp2 = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-TP3.txt",FILE_READ); double temp_tp3 = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-SL.txt",FILE_READ); double temp_sl = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); long ChID = GetChartIDSymbol(GetMagicSymbol(OrderMagicNumber())); ObjectSetString(ChID,"1TPSL_"+GetMagicSymbol(OrderMagicNumber()),OBJPROP_TEXT, GetMagicSource(OrderMagicNumber())+ "-"+GetMagicSymbol(OrderMagicNumber())+ "-"+GetMagicType(OrderMagicNumber())+ "-Price:"+TruncateNumber(DoubleToStr(OrderOpenPrice()))); ObjectSetString(ChID,"2TPSL_"+GetMagicSymbol(OrderMagicNumber()),OBJPROP_TEXT, "TP1:"+TruncateNumber(DoubleToStr(temp_tp1))+ ", TP2:"+TruncateNumber(DoubleToStr(temp_tp2))+ ", TP3:"+TruncateNumber(DoubleToStr(temp_tp3))+ ", SL:"+TruncateNumber(DoubleToStr(temp_sl))); if ((MarketInfo(OrderSymbol(),MODE_ASK))>temp_tp1 && temp_tp1>OrderStopLoss()) { double updatedsl = OrderOpenPrice()+(PipsToPrice(breakevensl, OrderSymbol())); if (updatedsl!=OrderStopLoss()) int Modify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); } if ((MarketInfo(OrderSymbol(),MODE_ASK))>temp_tp2 && temp_tp2>OrderStopLoss()) { double updatedsl = temp_tp1; if (updatedsl!=OrderStopLoss()) int Modify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); } if ((MarketInfo(OrderSymbol(),MODE_ASK))>((temp_tp2+temp_tp3)/2)&& temp_tp2>OrderStopLoss()) { double updatedsl = temp_tp2; if (updatedsl!=OrderStopLoss()) int Modify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); } } if (OrderType()==OP_SELL) { int filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Sell-TP1.txt",FILE_READ); double temp_tp1 = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Sell-TP2.txt",FILE_READ); double temp_tp2 = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Sell-TP3.txt",FILE_READ); double temp_tp3 = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Sell-SL.txt",FILE_READ); double temp_sl = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); long ChID = GetChartIDSymbol(GetMagicSymbol(OrderMagicNumber())); ObjectSetString(ChID,"1TPSL_"+GetMagicSymbol(OrderMagicNumber()),OBJPROP_TEXT, GetMagicSource(OrderMagicNumber())+ "-"+GetMagicSymbol(OrderMagicNumber())+ "-"+GetMagicType(OrderMagicNumber())+ "-Price:"+TruncateNumber(DoubleToStr(OrderOpenPrice()))); ObjectSetString(ChID,"2TPSL_"+GetMagicSymbol(OrderMagicNumber()),OBJPROP_TEXT, "TP1:"+TruncateNumber(DoubleToStr(temp_tp1))+ ", TP2:"+TruncateNumber(DoubleToStr(temp_tp2))+ ", TP3:"+TruncateNumber(DoubleToStr(temp_tp3))+ ", SL:"+TruncateNumber(DoubleToStr(temp_sl))); if ((MarketInfo(OrderSymbol(),MODE_BID))0 && temp_tp10 && temp_tp20 && ((temp_tp2+temp_tp3)/2) AccountBalance()) MinAccountBalance = AccountBalance(); Comment ("Initial Account Balance was ",InitialAccountBalance,", Minimum Balance was ",MinAccountBalance,", Max Balance was ", MaxAccountBalance,", Current Balance is ",CurrentAccountBalance," and Current Equity is ",AccountEquity(), ""); } // End of On Tick void OnTimer() { // Print ("Timer is working"); if (OK_TO_COPY_TRADE == "OK") // Start of Trade Copier { if (TimeCurrent()-timetostartcopyorderfilecreate>6) // Making File for Active Orders { Print ("Making File for Active Trades"); timetostartcopyorderfilecreate=TimeCurrent(); // Find Open Trades and Record in file for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderType()==0) buysell="BUY"; if (OrderType()==1) buysell="SELL"; if (OrderType()==2) buysell="BUY_LIMIT"; if (OrderType()==3) buysell="SELL_LIMIT"; if (OrderType()==4) buysell="BUY_STOP"; if (OrderType()==5) buysell="SELL_STOP"; string filename = StringConcatenate(IntegerToString(account),"-",IntegerToString(OrderTicket())+"-Y.txt"); if (!FileIsExist(filename,0)) // Means file do not exist { Print ("New Order Received and Written in File"); trade_status ="New Trade"; content_msg = account_name+":"+"\n" +trade_status+":"+"\n\n" +"Ticket No.:"+IntegerToString(OrderTicket())+"\n" +"Magic No.:"+IntegerToString(OrderMagicNumber())+"\n" +"OrderType:"+buysell+"\n" +"TradeVolume:"+ TruncateNumber(DoubleToStr(OrderLots()))+"\n" +"Sym:"+OrderSymbol()+"#"+"\n\n" +"Price:"+TruncateNumber(DoubleToStr(OrderOpenPrice()))+"\n" +"SL:"+TruncateNumber(DoubleToStr(OrderStopLoss()))+"\n" +"TP:"+TruncateNumber(DoubleToStr(OrderTakeProfit())); content_file = account_name+":"+"," +trade_status+":"+"," +"Ticket No.:"+IntegerToString(OrderTicket())+"," +"Magic No.:"+IntegerToString(OrderMagicNumber())+"," +"OrderType:"+buysell+"," +"TradeVolume:"+ TruncateNumber(DoubleToStr(OrderLots()))+"," +"Sym:"+OrderSymbol()+"," +"Price:"+TruncateNumber(DoubleToStr(OrderOpenPrice()))+"," +"SL:"+TruncateNumber(DoubleToStr(OrderStopLoss()))+"," +"TP:"+TruncateNumber(DoubleToStr(OrderTakeProfit())); int filehandle = FileOpen(filename,FILE_WRITE|FILE_TXT); FileWriteString(filehandle,content_file); FileClose(filehandle); ress = bot.SendMessage(chat_id_UK,content_msg); if (ress!=0) Print ("Error: ",GetErrorDescription(ress)); } if (FileIsExist(filename,0)) // Means file exist { int filehandle2 = FileOpen(filename,FILE_READ|FILE_TXT); string check_message = FileReadString(filehandle2); FileClose(filehandle2); string tpsl[]; StringReplace(check_message,",Price:","^"); StringReplace(check_message,",SL:","^"); StringReplace(check_message,",TP:","^"); StringSplit(check_message,StringGetCharacter("^", 0), tpsl); int count_tpsl = ArraySize(tpsl); if (count_tpsl>3) { string oldprice = (tpsl[1]); string oldsl = (tpsl[2]); string oldtp = (tpsl[3]); string newprice = TruncateNumber(DoubleToStr(OrderOpenPrice())); string newsltc = TruncateNumber(DoubleToStr(OrderStopLoss())); string newtptc = TruncateNumber(DoubleToStr(OrderTakeProfit())); if(oldprice!=newprice || oldsl!=newsltc || oldtp!=newtptc) { Print (" TP or SL has Changed:"); trade_status ="Edited Trade"; double currentprice = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),4); content_msg = account_name+":"+"\n" +trade_status+":"+"\n\n" +"Ticket No.:"+IntegerToString(OrderTicket())+"\n" +"Magic No.:"+IntegerToString(OrderMagicNumber())+"\n" +"OrderType:"+buysell+"\n" +"TradeVolume:"+ TruncateNumber(DoubleToStr(OrderLots()))+"\n" +"Sym:"+OrderSymbol()+"#"+"\n\n" +"Old Price:"+TruncateNumber(oldprice)+"\n" +"New Price:"+TruncateNumber(DoubleToStr(OrderOpenPrice()))+"\n" +"Current Price:"+TruncateNumber(DoubleToStr(currentprice))+"\n"+"\n" +"Old SL:"+TruncateNumber(oldsl)+"\n" +"New SL:"+TruncateNumber(DoubleToStr(OrderStopLoss()))+"\n"+"\n" +"Old TP:"+TruncateNumber(oldtp)+"\n" +"New TP:"+TruncateNumber(DoubleToStr(OrderTakeProfit())); content_file = account_name+":"+"," +trade_status+":"+"," +"Ticket No.:"+IntegerToString(OrderTicket())+"," +"Magic No.:"+IntegerToString(OrderMagicNumber())+"," +"OrderType:"+buysell+"," +"TradeVolume:"+ TruncateNumber(DoubleToStr(OrderLots()))+"," +"Sym:"+OrderSymbol()+"," +"Price:"+TruncateNumber(DoubleToStr(OrderOpenPrice()))+"," +"SL:"+TruncateNumber(DoubleToStr(OrderStopLoss()))+"," +"TP:"+TruncateNumber(DoubleToStr(OrderTakeProfit())); int filehandle = FileOpen(filename,FILE_WRITE|FILE_TXT); FileWriteString(filehandle,content_file); FileClose(filehandle); ress = bot.SendMessage(chat_id_UK,content_msg); if (ress!=0) Print ("Error: ",GetErrorDescription(ress)); }}} // End of File Exist }}} // End Making File for Active Orders if (TimeCurrent()-timetostartcloseorderfiledelete>11) // Check and Delete Closed Order Files { timetostartcloseorderfiledelete=TimeCurrent(); Print ("Trying to Close Files not in use"); string file_name; // variable for storing file names string filter= StringConcatenate(IntegerToString(account),"*.txt"); // filter for searching the files string filenamecontents[]; bool found_order = false; string acc_num = IntegerToString(account); long search_handle=FileFindFirst(filter,file_name); if(search_handle!=INVALID_HANDLE) { //--- searching files in the loop do { found_order = false; StringSplit(file_name,StringGetCharacter("-", 0), filenamecontents); int count_filenamecontents = ArraySize(filenamecontents); if (count_filenamecontents>1) { string file_acc_num = filenamecontents[0]; string file_ticket_string = filenamecontents[1]; int file_ticket = StrToInteger(file_ticket_string); for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (file_ticket == OrderTicket()) found_order = true; }} if (found_order==false) { Print (file_name," has been deleted"); if(OrderSelect(file_ticket, SELECT_BY_TICKET)==true) { if (OrderType()==0) buysell="BUY"; if (OrderType()==1) buysell="SELL"; if (OrderType()==2) buysell="BUY LIMIT"; if (OrderType()==3) buysell="SELL LIMIT"; if (OrderType()==4) buysell="BUY STOP"; if (OrderType()==5) buysell="SELL STOP"; trade_status ="Closed Trade"; content_msg = account_name+":"+"\n" +trade_status+":"+"\n\n" +"Ticket No.:"+IntegerToString(OrderTicket())+"\n" +"Magic No.:"+IntegerToString(OrderMagicNumber())+"\n" +"OrderType:"+buysell+"\n" +"TradeVolume:"+ TruncateNumber(DoubleToStr(OrderLots()))+"\n" +"Sym:"+OrderSymbol()+"#"+"\n\n" +"Open Price:"+TruncateNumber(DoubleToStr(OrderOpenPrice()))+"\n" +"Close Price:"+TruncateNumber(DoubleToStr(OrderClosePrice()))+"\n" +"Profit:"+TruncateNumber(DoubleToStr(OrderProfit()))+"\n"+"\n" +"Comment:"+OrderComment()+"\n"+"\n" +"A/C Balance:"+TruncateNumber(DoubleToStr(AccountBalance()))+"\n" +"A/C Equity:"+TruncateNumber(DoubleToStr(AccountEquity())); ress = bot.SendMessage(chat_id_UK,content_msg); if (ress!=0) Print ("Error: ",GetErrorDescription(ress)); } else Print("OrderSelect returned the error of ",GetLastError()); FileDelete(file_name); } }} while(FileFindNext(search_handle,file_name)); //--- close the search handle FileFindClose(search_handle); }} // End of Check and Delete Closed Order Files } // End Trade Copier if (TimeCurrent()-timetostart4>20) { Print ("Trying to Open Chart in Use"); timetostart4=TimeCurrent(); // Open Symbol Chart for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { bool found = false; long ID = ChartFirst(); while(ID>=0) { if(ChartSymbol(ID)==OrderSymbol()) { found=true; break; } ID=ChartNext(ID); } if(!found) ChartOpen(OrderSymbol(),0); }}} if (TimeCurrent()-timetostart2>300) { Print ("Trying to Close Chart not in use"); timetostart2=TimeCurrent(); // Chart Close bool found_chart = false; long ID_chart = ChartFirst(); ID_chart=ChartNext(ID_chart); while(ID_chart>=0) { found_chart = false; for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(ChartSymbol(ID_chart)==OrderSymbol() || ChartSymbol(ID_chart)=="XAUUSD" || ChartSymbol(ID_chart)=="Cocoa_K5" || ChartSymbol(ID_chart)=="CHINA50") { found_chart=true; break; }}} if(!found_chart) ChartClose(ID_chart); ID_chart=ChartNext(ID_chart); } } if (TimeCurrent()-timetostart3>90) { timetostart3=TimeCurrent(); Print ("Trying to Close Files of TP and SL, not in use"); string file_name; // variable for storing file names string filter= StringConcatenate(IntegerToString(account),"*.txt"); // filter for searching the files string filenamecontents[]; bool found_order = false; string acc_num = IntegerToString(account); //--- receive the search handle in the local folder's root long search_handle=FileFindFirst(filter,file_name); //--- check if FileFindFirst() executed successfully if(search_handle!=INVALID_HANDLE) { //--- searching files in the loop do { found_order = false; StringSplit(file_name,StringGetCharacter("-", 0), filenamecontents); int count_filenamecontents = ArraySize(filenamecontents); if (count_filenamecontents>3) { string file_acc_num = filenamecontents[0]; string file_source = filenamecontents[1]; string file_sybm = filenamecontents[2]; string file_type = filenamecontents[3]; for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderMagicNumber()!=0) { if (acc_num == file_acc_num && GetMagicSource(OrderMagicNumber())==file_source && GetMagicSymbol(OrderMagicNumber())==filenamecontents[2] && GetMagicType(OrderMagicNumber())==filenamecontents[3]) { found_order = true; } }}} if (found_order==false) { Print (file_name," has been deleted"); FileDelete(file_name); } } } while(FileFindNext(search_handle,file_name)); //--- close the search handle FileFindClose(search_handle); } } if(check_telegram_updates >= 2000) telegram_to_mt4(); else Alert("Get Updates Time in Millisecond Should be Greater"); int filehandle = FileOpen("update_id.txt",FILE_READ); int check_used_update_id = (int) (FileReadString(filehandle)); FileClose(filehandle); if(capture_previous_update_id > check_used_update_id) { Print ("New Message Received"); int filehandle1 = FileOpen("update_id.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandle1,IntegerToString(capture_previous_update_id)); FileClose(filehandle1); int filehandle2 = FileOpen("chat_id.txt",FILE_READ); string check_chat_id = FileReadString(filehandle2); FileClose(filehandle2); int filehandle3 = FileOpen("message_details.txt",FILE_READ|FILE_CSV); string check_message_complete = FileReadString(filehandle3); FileClose(filehandle3); check_message_complete = toUpper(check_message_complete); string check_message = check_message_complete; string reply_message = ""; string replymsg[]; StringReplace(check_message_complete,"MESSAGE_IS_REPLY_OF:","^"); StringSplit(check_message_complete,StringGetCharacter("^", 0), replymsg); int count_replymsg = ArraySize(replymsg); if (count_replymsg>1) { check_message = (replymsg[0]); reply_message = (replymsg[1]); } int trade_GoldPro = StringFind(check_message,"GOLDPRO"); int trade_GoldKiller = StringFind(check_message,"GOLDKILLER"); int trade_Younus_Sobia = StringFind(check_message,"YOUNUS-SOBIA"); StringReplace(check_message,"GOLDPRO","PRO"); StringReplace(check_message,"GOLDKILLER","KILLER"); StringReplace(check_message,"GOLD","XAUUSD"); StringReplace(check_message,"SILVER","XAGUSD"); StringReplace(check_message,"USOIL","XTIUSD"); StringReplace(check_message,"OIL","XTIUSD"); StringReplace(reply_message,"GOLD","XAUUSD"); StringReplace(reply_message,"SILVER","XAGUSD"); StringReplace(reply_message,"USOIL","XTIUSD"); StringReplace(reply_message,"OIL","XTIUSD"); string SymbolOrder = ""; count_symbols = ArraySize(symbols); for(int x=0;x=0) { if(ChartSymbol(ID)==SymbolOrder) { found=true; break; } ID=ChartNext(ID); } if(!found) ChartOpen(SymbolOrder,0); // Trade for Younus-Sobia if (trade_Younus_Sobia!=-1 && OK_TO_TRADE_YOUNUS_SOBIA=="OK") { Print("Message Received from Younus-Sobia"); int order_new = StringFind(check_message,"NEW TRADE"); int order_edit = StringFind(check_message,"EDITED TRADE"); int order_close = StringFind(check_message,"CLOSED TRADE"); string getinformation[]; // An array to get strings StringReplace(check_message,"TICKET NO.:","^"); StringReplace(check_message,",MAGIC NO.:","^"); StringReplace(check_message,",ORDERTYPE:","^"); StringReplace(check_message,",TRADEVOLUME:","^"); StringReplace(check_message,",SYM:","^"); StringReplace(check_message,"#","^"); StringSplit(check_message,StringGetCharacter("^", 0), getinformation); int count_getinformation = ArraySize(getinformation); if (count_getinformation>6) { int ticketnumber = StrToInteger(getinformation[1]); int magicnumber = StrToInteger(getinformation[2]); buysell = getinformation[3]; double tradevolume = StringToDouble(getinformation[4]); string symb = getinformation[5]; if (Broker == "Exness") symb = StringConcatenate(getinformation[5],"m"); if (tradevolume>TradeVolume_YS) tradevolume=TradeVolume_YS; Print ("Order received from Younus Sobia"); if (order_new!=-1) { Print ("New Order received from Younus Sobia"); string getprtpsl[]; // An array to get strings StringReplace(check_message,"PRICE:","!"); StringReplace(check_message,"SL:","!"); StringReplace(check_message,"TP:","!"); StringSplit(check_message,StringGetCharacter("!", 0), getprtpsl); int count_getprtpsl = ArraySize(getprtpsl); if (count_getprtpsl>3) { double priceys = StringToDouble(getprtpsl[1]); priceys = NormalizeDouble(priceys,_Digits); double slys = StringToDouble(getprtpsl[2]); slys = NormalizeDouble(slys,_Digits); double tpys = StringToDouble(getprtpsl[3]); tpys = NormalizeDouble(tpys,_Digits); Print (priceys,",",slys,",",tpys); if (CheckOpenOrders(ticketnumber)==false) { Print ("Ready to Place Order"); int ordertype=10; if (buysell=="BUY") ordertype=0; if (buysell=="SELL") ordertype=1; if (buysell=="BUY_LIMIT") ordertype=2; if (buysell=="SELL_LIMIT") ordertype=3; if (buysell=="BUY_STOP") ordertype=4; if (buysell=="SELL_STOP") ordertype=5; Print (symb,ordertype,tradevolume,priceys,slys,tpys,ticketnumber); int order = OrderSend (symb,ordertype,tradevolume,priceys,1000,slys,tpys,NULL,ticketnumber,0,clrBlue); } }} // End of New Trade if (order_edit!=-1) { Print ("New Order received from Younus Sobia"); string getprtpsl[]; // An array to get strings StringReplace(check_message,"OLD PRICE:","!"); StringReplace(check_message,",NEW PRICE:","!"); StringReplace(check_message,",CURRENT PRICE:","!"); StringReplace(check_message,",OLD SL:","!"); StringReplace(check_message,",NEW SL:","!"); StringReplace(check_message,",OLD TP:","!"); StringReplace(check_message,",NEW TP:","!"); StringSplit(check_message,StringGetCharacter("!", 0), getprtpsl); int count_getprtpsl = ArraySize(getprtpsl); if (count_getprtpsl>7) { double oldpriceys = StringToDouble(getprtpsl[1]); oldpriceys = NormalizeDouble(oldpriceys,4); double newpriceys = StringToDouble(getprtpsl[2]); newpriceys = NormalizeDouble(newpriceys,4); double oldslys = StringToDouble(getprtpsl[4]); oldslys = NormalizeDouble(oldslys,4); double newslys = StringToDouble(getprtpsl[5]); newslys = NormalizeDouble(newslys,4); double oldtpys = StringToDouble(getprtpsl[6]); oldtpys = NormalizeDouble(oldtpys,4); double newtpys = StringToDouble(getprtpsl[7]); newtpys = NormalizeDouble(newtpys,4); Print (oldpriceys,newpriceys,oldslys,newslys,oldtpys,newtpys); for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()== ticketnumber) { double updatedpriceys = OrderOpenPrice(); double updatedslys = OrderStopLoss(); double updatedtpys = OrderTakeProfit(); if (newpriceys!=oldpriceys) updatedpriceys=newpriceys; if (newslys!=oldslys) updatedslys=newslys; if (newtpys!=oldtpys) updatedtpys=newtpys; int Modify = OrderModify (OrderTicket(),updatedpriceys,updatedslys,updatedtpys,0,clrAqua); }}} }} // End of Edit Trade if (order_close!=-1) // Start of Close Trade { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()== ticketnumber) { double price = MarketInfo(OrderSymbol(),MODE_ASK); if((OrderType() == OP_BUY )|| (OrderType() == OP_SELL)) int closeorder = OrderClose(OrderTicket(), OrderLots(),price,10000); else int PendingDelete = OrderDelete(OrderTicket()); }}} } // End of Closed Trade }} // End of Younus-Sobia // Trade for Gold Pro Traders if (trade_GoldPro!=-1 && OK_TO_TRADE_PRO == "OK") { Print("Message Received from GoldPro"); int find_selllimit = StringFind(check_message,"SELL LIMIT"); int find_buylimit = StringFind(check_message,"BUY LIMIT"); int order_type_buy = StringFind(check_message,"BUY"); int order_type_sell = StringFind(check_message,"SELL"); int find_tp = StringFind(check_message,"TP"); int find_sl = StringFind(check_message,"SL"); int find_close = StringFind(check_message,"CLOSE"); int find_hold = StringFind(check_message,"HOLD"); int find_entry = StringFind(check_message,"ENTRY"); int find_close_all = StringFind(check_message,"CLOSE ALL"); int find_book_some_profit = StringFind(check_message,"BOOK SOME PROFIT"); int find_limit = StringFind(check_message,"LIMIT"); int changing_sl = StringFind(check_message,"UPDATE SL"); int changing_sl2 = StringFind(check_message,"SAME TP"); int find_hyphen = StringFind(check_message,"-"); int find_dot = StringFind(check_message,"."); int find_complete = StringFind(check_message,"COMPLETE"); int find_completely = StringFind(check_message,"COMPLETELY"); int find_hit = StringFind(check_message,"HIT"); int close_sixty = StringFind(check_message,"60%"); int close_eighty = StringFind(check_message,"80%"); int check_running = StringFind(check_message,"80%"); int check_boom = StringFind(check_message,"80%"); int close_buy_gold = StringFind(check_message,"CLOSE BUY XAUUSD"); int close_gold_buy = StringFind(check_message,"CLOSE XAUUSD BUY"); int close_sell_gold = StringFind(check_message,"CLOSE SELL XAUUSD"); int close_gold_sell = StringFind(check_message,"CLOSE XAUUSD SELL"); int move_sl = StringFind(check_message,"MOVE SL"); int MagicBuyGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 1); int MagicBuyGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 2); int MagicBuyGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 3); int MagicSellGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 1); int MagicSellGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 2); int MagicSellGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 3); // Start Gold Pro Orders if (SymbolOrder!="" && order_type_buy!=-1 && find_limit==-1 && (find_dot!=-1 || find_hyphen!=-1) && (check_running==-1 || check_boom==-1) && CheckOpenOrders(MagicBuyGoldPro1)==false && CountBuyOpenOrders(SymbolOrder)==true) { if (CheckOpenOrders(MagicSellGoldPro1)==true && find_buylimit!=-1) CloseAllOrders (MagicSellGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro2)==true && find_buylimit!=-1) CloseAllOrders (MagicSellGoldPro2, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro3)==true && find_buylimit!=-1) CloseAllOrders (MagicSellGoldPro3, SymbolOrder); double buyprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_ASK),4); double buy = buyprice; double slbuy = buyprice-PipsToPrice(sl, SymbolOrder); double tpbuy = buyprice+PipsToPrice(tp, SymbolOrder); int orderbuy = OrderSend (SymbolOrder,OP_BUY,TradeVolume_GP,buy,0,slbuy,tpbuy,NULL,MagicBuyGoldPro1,0,clrBlue); } if (SymbolOrder!="" && order_type_sell!=-1 && find_limit==-1 && (find_dot!=-1 || find_hyphen!=-1) && (check_running==-1 || check_boom==-1) && CheckOpenOrders(MagicSellGoldPro1)==false && CountSellOpenOrders(SymbolOrder)==true) { if (CheckOpenOrders(MagicBuyGoldPro1)==true && find_selllimit!=-1) CloseAllOrders (MagicBuyGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldPro2)==true && find_selllimit!=-1) CloseAllOrders (MagicBuyGoldPro2, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldPro3)==true && find_selllimit!=-1) CloseAllOrders (MagicBuyGoldPro3, SymbolOrder); double sellprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_BID),4); double sell = sellprice; double slsell = sellprice+PipsToPrice(sl, SymbolOrder); double tpsell = sellprice-PipsToPrice(tp, SymbolOrder); int ordersell = OrderSend (SymbolOrder,OP_SELL,TradeVolume_GP,sell,0,slsell,tpsell,NULL,MagicSellGoldPro1,0,clrBlue); } if (SymbolOrder!="" && (order_type_buy!=-1 ||order_type_sell!=-1) && find_tp!=-1 && find_sl!=-1) { if (order_type_buy!=-1) { if (CheckOpenOrders(MagicSellGoldPro1)==true) CloseAllOrders (MagicSellGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro2)==true) CloseAllOrders (MagicSellGoldPro2, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro3)==true) CloseAllOrders (MagicSellGoldPro3, SymbolOrder); } if (order_type_sell!=-1) { if (CheckOpenOrders(MagicBuyGoldPro1)==true) CloseAllOrders (MagicBuyGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldPro2)==true) CloseAllOrders (MagicBuyGoldPro2, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldPro3)==true) CloseAllOrders (MagicBuyGoldPro3, SymbolOrder); } string prices =""; double firstprice =0; double secondprice =0; string getsecondpricest=""; double tp1=0; double tp2=0; double tp3=0; string gettpst=""; string checkdots[]; string getprice[]; string getprice2[]; string getfirstprice[]; StringReplace(check_message,"BUY ","^"); StringReplace(check_message,"SELL ","^"); StringReplace(check_message,"BUY","^"); StringReplace(check_message,"SELL","^"); StringSplit(check_message,StringGetCharacter("^", 0), getprice); int count_getprice = ArraySize(getprice); if (count_getprice>1) StringSplit(getprice[1],StringGetCharacter(",", 0), getprice2); int count_getprice2 = ArraySize(getprice2); if (count_getprice2>0) { StringSplit(getprice2[0],StringGetCharacter(".", 0), checkdots); int count_checkdots = ArraySize(checkdots); if (count_checkdots<3) StringReplace(getprice2[0],".","-"); StringReplace(getprice2[0],"/","-"); StringReplace(getprice2[0]," ","-"); prices = getprice2[0]; StringSplit(prices,StringGetCharacter("-", 0), getfirstprice); int count_getfirstprice = ArraySize(getfirstprice); if (count_getfirstprice>0) firstprice = StringToDouble(getfirstprice[0]); if (count_getfirstprice>1) secondprice = StringToDouble(getfirstprice[1]); } double buyorderprice=firstprice; double sellorderprice=secondprice; string gettp[]; // An array to get strings StringReplace(check_message,"^","-"); StringReplace(check_message,",TP","^"); StringSplit(check_message,StringGetCharacter("^", 0), gettp); int count_gettp = ArraySize(gettp); string gettp3[]; if (count_gettp>3) StringSplit(gettp[3],StringGetCharacter(",", 0), gettp3); int count_gettp3 = ArraySize(gettp3); if (count_gettp>1) tp1 = StringToDouble(gettp[1]); if (count_gettp>2) tp2 = StringToDouble(gettp[2]); if (count_gettp3>0) tp3 = StringToDouble(gettp3[0]); string getnewsl[]; // An array to get strings StringReplace(check_message,"SL","<"); StringSplit(check_message,StringGetCharacter("<", 0), getnewsl); int count_getnewsl = ArraySize(getnewsl); if (count_getnewsl>1) newsl = StringToDouble(getnewsl[1]); if (order_type_buy!=-1 && CheckOpenOrders(MagicBuyGoldPro1)==true) { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()== MagicBuyGoldPro1 && tp1!=0 && newsl!=0) { int Modify = OrderModify (OrderTicket(),OrderOpenPrice(),newsl,tp1,0,clrAqua); }}}} if (order_type_buy!=-1 && CheckOpenOrders(MagicBuyGoldPro2)==false && tp2!=0 && newsl!=0) { double buyprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_ASK),4); double slbuy = buyprice-PipsToPrice(sl, SymbolOrder); if (firstprice>secondprice) buyorderprice = secondprice; if (buyorderprice=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()== MagicSellGoldPro1) { int Modify = OrderModify (OrderTicket(),OrderOpenPrice(),newsl,tp1,0,clrAqua); }}}} if (order_type_sell!=-1 && CheckOpenOrders(MagicSellGoldPro2)==false && tp2!=0 && newsl!=0) { double sellprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_BID),4); double slsell = sellprice+PipsToPrice(sl, SymbolOrder); if (firstprice>secondprice) sellorderprice = firstprice; if (sellorderprice>sellprice && CountSellOpenOrders(SymbolOrder)==true) int newordersell=OrderSend (SymbolOrder,OP_SELLLIMIT,TradeVolume_GP,sellorderprice,0,slsell,tp2,NULL,MagicSellGoldPro2,0,clrBlue); } // End of Sale Order Gold Pro } // End of Orders if (((find_hold!=-1 || find_entry!=-1)) || find_book_some_profit!=-1) // find_close!=-1 && { if (SymbolOrder=="") { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderMagicNumber()!=0) { if(GetMagicSource (OrderMagicNumber())== "GoldPro") SymbolOrder= GetMagicSymbol (OrderMagicNumber()); }}}} MagicBuyGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 1); MagicBuyGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 2); MagicBuyGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 3); MagicSellGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 1); MagicSellGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 2); MagicSellGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 3); if (CheckOpenOrders(MagicBuyGoldPro1)==true && CheckOpenOrders(MagicBuyGoldPro2)==true) CloseAllOrders (MagicBuyGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro1)==true && CheckOpenOrders(MagicSellGoldPro2)==true) CloseAllOrders (MagicSellGoldPro1, SymbolOrder); for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY && OrderSymbol()==SymbolOrder && OrderMagicNumber()== MagicBuyGoldPro1) { double updatedsl = Ask-(PipsToPrice(booksomeprofitsl, OrderSymbol())); if (updatedslOrderOpenPrice()) updatedsl = OrderOpenPrice()-(PipsToPrice(breakevensl, OrderSymbol())); int SellModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); } if(OrderType()==OP_SELL && OrderSymbol()==SymbolOrder && (OrderMagicNumber()== MagicSellGoldPro2 || OrderMagicNumber()== MagicSellGoldPro3) ) { double updatedsl = OrderOpenPrice()-(PipsToPrice(breakevensl, OrderSymbol())); int SellModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); } } } } // End Close Half // Start of 60% or 80% Close if (close_sixty!=-1 || close_eighty!=-1) { if (SymbolOrder=="") { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderMagicNumber()!=0) { if(GetMagicSource (OrderMagicNumber())== "GoldPro") SymbolOrder= GetMagicSymbol (OrderMagicNumber()); }}}} MagicBuyGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 1); MagicBuyGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 2); MagicBuyGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 3); MagicSellGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 1); MagicSellGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 2); MagicSellGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 3); if (CheckOpenOrders(MagicBuyGoldPro1)==true) CloseAllOrders (MagicBuyGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro1)==true) CloseAllOrders (MagicSellGoldPro1, SymbolOrder); for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY && OrderSymbol()==SymbolOrder && OrderMagicNumber()== MagicBuyGoldPro2) { double updatedsl = OrderOpenPrice()+(PipsToPrice(breakevensl, OrderSymbol())); int BuyModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); updatedsl = OrderOpenPrice()+(PipsToPrice(500, OrderSymbol())); int BuyModify2 = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); updatedsl = OrderOpenPrice()+(PipsToPrice(1000, OrderSymbol())); int BuyModify3 = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); } if(OrderType()==OP_SELL && OrderSymbol()==SymbolOrder && OrderMagicNumber()== MagicSellGoldPro2) { double updatedsl = OrderOpenPrice()-(PipsToPrice(breakevensl, OrderSymbol())); int SellModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); updatedsl = OrderOpenPrice()-(PipsToPrice(500, OrderSymbol())); int SellModify2 = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); updatedsl = OrderOpenPrice()-(PipsToPrice(1000, OrderSymbol())); int SellModify3 = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); } } } } // 60% or 80% Close if (changing_sl!=-1 || changing_sl2!=-1 || move_sl!=-1 || (find_tp==-1 && find_sl!=-1)) { if (SymbolOrder=="") { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderMagicNumber()!=0) { if(GetMagicSource (OrderMagicNumber())== "GoldPro") SymbolOrder= GetMagicSymbol (OrderMagicNumber()); }}}} MagicBuyGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 1); MagicBuyGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 2); MagicBuyGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 3); MagicSellGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 1); MagicSellGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 2); MagicSellGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 3); double updatedsl = 0; string getnewsl[]; StringReplace(check_message,"SL","^"); StringSplit(check_message,StringGetCharacter("^", 0), getnewsl); int count_getnewsl = ArraySize(getnewsl); if (count_getnewsl>1) updatedsl =StrToDouble(getnewsl[1]); for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY && updatedsl!=0 && (OrderMagicNumber()== MagicBuyGoldPro1 || OrderMagicNumber()== MagicBuyGoldPro2 || OrderMagicNumber()== MagicBuyGoldPro3)) { if ((OrderStopLoss()-updatedsl)<(PipsToPrice(refsl, OrderSymbol()))) { int BuyModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); } } if(OrderType()==OP_SELL && updatedsl!=0 && (OrderMagicNumber()== MagicSellGoldPro1 || OrderMagicNumber()== MagicSellGoldPro2 || OrderMagicNumber()== MagicSellGoldPro3)) { if ((updatedsl-OrderStopLoss())<(PipsToPrice(refsl, OrderSymbol()))) { int SellModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); } } } } } // End Changing SL // Start of Close Completely if (find_complete!=-1 || find_completely!=-1 || find_close_all!=-1) { if (SymbolOrder=="") { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderMagicNumber()!=0) { if(GetMagicSource (OrderMagicNumber())== "GoldPro") SymbolOrder= GetMagicSymbol (OrderMagicNumber()); }}}} MagicBuyGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 1); MagicBuyGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 2); MagicBuyGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Buy", 3); MagicSellGoldPro1 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 1); MagicSellGoldPro2 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 2); MagicSellGoldPro3 = CreateMagicNumber("GoldPro", SymbolOrder, "Sell", 3); if (CheckOpenOrders(MagicBuyGoldPro1)==true) CloseAllOrders (MagicBuyGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldPro2)==true) CloseAllOrders (MagicBuyGoldPro2, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldPro3)==true) CloseAllOrders (MagicBuyGoldPro3, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro1)==true) CloseAllOrders (MagicSellGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro2)==true) CloseAllOrders (MagicSellGoldPro2, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro3)==true) CloseAllOrders (MagicSellGoldPro3, SymbolOrder); } // End of Close Completely if (close_buy_gold!=-1 || close_gold_buy!=-1) { if (CheckOpenOrders(MagicBuyGoldPro1)==true) CloseAllOrders (MagicBuyGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldPro2)==true) CloseAllOrders (MagicBuyGoldPro2, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldPro3)==true) CloseAllOrders (MagicBuyGoldPro3, SymbolOrder); } if (close_sell_gold!=-1 || close_gold_sell!=-1) { if (CheckOpenOrders(MagicSellGoldPro1)==true) CloseAllOrders (MagicSellGoldPro1, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro2)==true) CloseAllOrders (MagicSellGoldPro2, SymbolOrder); if (CheckOpenOrders(MagicSellGoldPro3)==true) CloseAllOrders (MagicSellGoldPro3, SymbolOrder); } // Start of TP1 TP2 TP3 working if (find_tp!=-1 && find_hit!=-1) { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY && (OrderMagicNumber()== MagicBuyGoldPro2 || OrderMagicNumber()== MagicBuyGoldPro3)) { double updatedsl = OrderOpenPrice()+(PipsToPrice(breakevensl, OrderSymbol())); int BuyModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); } } } for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY && OrderMagicNumber()== MagicBuyGoldPro3 && CheckOpenOrders(MagicBuyGoldPro2)==false) { double updatedsl = OrderOpenPrice()+(PipsToPrice(500, OrderSymbol())); int BuyModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); updatedsl = OrderOpenPrice()+(PipsToPrice(1000, OrderSymbol())); int BuyModify2 = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit(),0,clrAqua); } } } for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_SELL && (OrderMagicNumber()== MagicSellGoldPro2 || OrderMagicNumber()== MagicSellGoldPro3)) { double updatedsl = OrderOpenPrice()-(PipsToPrice(breakevensl, OrderSymbol())); int SellModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); } } } for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_SELL && OrderMagicNumber()== MagicSellGoldPro3 && CheckOpenOrders(MagicSellGoldPro2)==false) { double updatedsl = OrderOpenPrice()-(PipsToPrice(500, OrderSymbol())); int SellModify = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); updatedsl = OrderOpenPrice()-(PipsToPrice(1000, OrderSymbol())); int SellModify2 = OrderModify (OrderTicket(),OrderOpenPrice(),updatedsl,OrderTakeProfit() ,0,clrBlue); } } } } // End of TP1 TP2 TP3 working } // End for Gold Trader Pro // Trade for GoldKiller if (trade_GoldKiller!=-1 && OK_TO_TRADE_KILLER == "OK") { Print("Message Received from GoldKiller"); if (SymbolOrder=="XAUUSD") SymbolOrder="NIL"; if (SymbolOrder!="") { Print ("Symbol Order available for GoldKiller"); int order_type_buy = StringFind(check_message,"BUY"); int order_type_sell = StringFind(check_message,"SELL"); int find_tp = StringFind(check_message,"TP"); int find_sl = StringFind(check_message,"SL"); int MagicBuyGoldKiller1 = CreateMagicNumber("GoldKiller", SymbolOrder, "Buy", 1); int MagicBuyGoldKiller2 = CreateMagicNumber("GoldKiller", SymbolOrder, "Buy", 2); int MagicBuyGoldKiller3 = CreateMagicNumber("GoldKiller", SymbolOrder, "Buy", 3); int MagicSellGoldKiller1 = CreateMagicNumber("GoldKiller", SymbolOrder, "Sell", 1); int MagicSellGoldKiller2 = CreateMagicNumber("GoldKiller", SymbolOrder, "Sell", 2); int MagicSellGoldKiller3 = CreateMagicNumber("GoldKiller", SymbolOrder, "Sell", 3); string gettype[]; string getprice[]; string getpricelast[]; string getsecondprice[]; StringReplace(check_message,"BUY","^"); StringReplace(check_message,"SELL","^"); StringReplace(check_message,"TP","~"); StringReplace(check_message,"SL","`"); StringSplit(check_message,StringGetCharacter("^", 0), gettype); string getslar; string gettp1ar; string gettp2ar; string gettp3ar; double price=0; double secondprice=0; string fprice; int count_gettype = ArraySize(gettype); if (count_gettype>1) StringSplit(gettype[1],StringGetCharacter("~", 0), getprice); int count_getprice = ArraySize(getprice); if (count_getprice>1) { price = StringToDouble(getprice[0]); int find_slash = StringFind(getprice[0],"/"); if (find_slash!=-1) StringSplit(getprice[0],StringGetCharacter("/", 0), getsecondprice); int count_getsecondprice = ArraySize(getsecondprice); if (count_getsecondprice>1) { fprice = StringSubstr(getsecondprice[0],6,4); price = StringToDouble(fprice); secondprice = StringToDouble(getsecondprice[1]); } if (price==0) price = StringToDouble(StringSubstr(getprice[0],6,4)); } if (count_getprice>1) gettp1ar = getprice[1]; if (count_getprice>2) gettp2ar = getprice[2]; if (count_getprice>6) gettp2ar = getprice[4]; if (count_getprice>1) StringSplit(getprice[count_getprice-1],StringGetCharacter("`", 0), getpricelast); int count_getpricelast = ArraySize(getpricelast); if (count_getpricelast>0) gettp3ar = getpricelast[0]; if (count_getpricelast>1) getslar = getpricelast[1]; // getprice[5]; string gettp1[]; StringSplit(gettp1ar,StringGetCharacter(",", 0), gettp1); string gettp2[]; StringSplit(gettp2ar,StringGetCharacter(",", 0), gettp2); string gettp3[]; StringSplit(gettp3ar,StringGetCharacter(",", 0), gettp3); string getsl[]; StringSplit(getslar,StringGetCharacter(",", 0), getsl); int count_gettp1 = ArraySize(gettp1); int count_gettp2 = ArraySize(gettp2); int count_gettp3 = ArraySize(gettp3); int count_getsl = ArraySize(getsl); if (order_type_buy!=-1) { if (count_getsl>0) { int filehandleGK = FileOpen(IntegerToString(account)+"-GoldKiller-"+SymbolOrder+"-Buy-SL.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandleGK,DoubleToString(StringToDouble(getsl[0]))); FileClose(filehandleGK); } if (count_gettp1>0) { int filehandleGK = FileOpen(IntegerToString(account)+"-GoldKiller-"+SymbolOrder+"-Buy-TP1.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandleGK,DoubleToString(StringToDouble(gettp1[0]))); FileClose(filehandleGK); } if (count_gettp2>0) { int filehandleGK = FileOpen(IntegerToString(account)+"-GoldKiller-"+SymbolOrder+"-Buy-TP2.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandleGK,DoubleToString(StringToDouble(gettp2[0]))); FileClose(filehandleGK); } if (count_gettp3>0) { int filehandleGK = FileOpen(IntegerToString(account)+"-GoldKiller-"+SymbolOrder+"-Buy-TP3.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandleGK,DoubleToString(StringToDouble(gettp3[0]))); FileClose(filehandleGK); } } if (order_type_sell!=-1) { if (count_getsl>0) { int filehandleGK = FileOpen(IntegerToString(account)+"-GoldKiller-"+SymbolOrder+"-Sell-SL.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandleGK,DoubleToString(StringToDouble(getsl[0]))); FileClose(filehandleGK); } if (count_gettp1>0) { int filehandleGK = FileOpen(IntegerToString(account)+"-GoldKiller-"+SymbolOrder+"-Sell-TP1.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandleGK,DoubleToString(StringToDouble(gettp1[0]))); FileClose(filehandleGK); } if (count_gettp2>0) { int filehandleGK = FileOpen(IntegerToString(account)+"-GoldKiller-"+SymbolOrder+"-Sell-TP2.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandleGK,DoubleToString(StringToDouble(gettp2[0]))); FileClose(filehandleGK); } if (count_gettp3>0) { int filehandleGK = FileOpen(IntegerToString(account)+"-GoldKiller-"+SymbolOrder+"-Sell-TP3.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandleGK,DoubleToString(StringToDouble(gettp3[0]))); FileClose(filehandleGK); } } double checkbuyprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_ASK),4); double checksellprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_BID),4); if (SymbolOrder!="" && order_type_buy!=-1 && (find_tp!=-1 || find_sl!=-1) && CheckOpenOrders(MagicBuyGoldKiller1)==false && CountBuyOpenOrders(SymbolOrder)==true) { /* if (CheckOpenOrders(MagicSellGoldKiller1)==true) CloseAllOrders (MagicSellGoldKiller1, SymbolOrder); if (CheckOpenOrders(MagicSellGoldKiller2)==true) CloseAllOrders (MagicSellGoldKiller2, SymbolOrder); if (CheckOpenOrders(MagicSellGoldKiller3)==true) CloseAllOrders (MagicSellGoldKiller3, SymbolOrder); */ double buyprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_ASK),4); double buy = buyprice; if (buy-price>PipsToPrice(100, SymbolOrder) && price!=0) buy = price; double slbuy = buyprice-PipsToPrice(killer_sl, SymbolOrder); double tpbuy = buyprice+PipsToPrice(tp, SymbolOrder); int orderbuy = OrderSend (SymbolOrder,OP_BUY,TradeVolume_KL,buy,0,slbuy,tpbuy,NULL,MagicBuyGoldKiller1,0,clrBlue); } if (SymbolOrder!="" && order_type_sell!=-1 && (find_tp!=-1 || find_sl!=-1) && CheckOpenOrders(MagicSellGoldKiller1)==false && CountSellOpenOrders(SymbolOrder)==true) { /* if (CheckOpenOrders(MagicBuyGoldKiller1)==true) CloseAllOrders (MagicBuyGoldKiller1, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldKiller2)==true) CloseAllOrders (MagicBuyGoldKiller2, SymbolOrder); if (CheckOpenOrders(MagicBuyGoldKiller3)==true) CloseAllOrders (MagicBuyGoldKiller3, SymbolOrder); */ double sellprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_BID),4); double sell = sellprice; if (price-sell>PipsToPrice(100, SymbolOrder) && price!=0) sell = price; double slsell = sellprice+PipsToPrice(killer_sl, SymbolOrder); double tpsell = sellprice-PipsToPrice(tp, SymbolOrder); int ordersell = OrderSend (SymbolOrder,OP_SELL,TradeVolume_KL,sell,0,slsell,tpsell,NULL,MagicSellGoldKiller1,0,clrBlue); } if (order_type_buy!=-1 && find_tp!=-1 && CheckOpenOrders(MagicBuyGoldKiller2)==false && CountBuyOpenOrders(SymbolOrder)==true) { /* if (CheckOpenOrders(MagicSellGoldKiller1)==true) CloseAllOrders (MagicSellGoldKiller1, SymbolOrder); if (CheckOpenOrders(MagicSellGoldKiller2)==true) CloseAllOrders (MagicSellGoldKiller2, SymbolOrder); if (CheckOpenOrders(MagicSellGoldKiller3)==true) CloseAllOrders (MagicSellGoldKiller3, SymbolOrder); */ double buyprice = price; if (buyprice==0) buyprice = NormalizeDouble(MarketInfo(SymbolOrder,MODE_ASK),4); double slbuy = buyprice-PipsToPrice(killer_sl, SymbolOrder); double tpbuy = buyprice+PipsToPrice(tp, SymbolOrder); if (buypricechecksellprice) int ordersell = OrderSend (SymbolOrder,OP_SELLLIMIT,TradeVolume_KL,sellprice,0,slsell,tpsell,NULL,MagicSellGoldKiller2,0,clrBlue); else int ordersell2 = OrderSend (SymbolOrder,OP_SELL,TradeVolume_KL,sellprice,0,slsell,tpsell,NULL,MagicSellGoldKiller2,0,clrBlue); } /* if (order_type_buy!=-1 && find_tp!=-1 && CheckOpenOrders(MagicBuyGoldKiller3)==false && CountBuyOpenOrders(SymbolOrder)==true) { int filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-SL.txt",FILE_READ); double buyprice = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-TP1.txt",FILE_READ); double tpbuy = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); double slbuy = buyprice-PipsToPrice(killer_sl, SymbolOrder); int orderbuy = OrderSend (SymbolOrder,OP_BUYLIMIT,TradeVolume_KL,buyprice,0,slbuy,tpbuy,NULL,MagicBuyGoldKiller3,0,clrBlue); } if (order_type_sell!=-1 && find_tp!=-1 && CheckOpenOrders(MagicSellGoldKiller3)==false && CountSellOpenOrders(SymbolOrder)==true) { int filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Sell-SL.txt",FILE_READ); double sellprice = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Sell-TP1.txt",FILE_READ); double tpsell = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); double slsell = sellprice+PipsToPrice(killer_sl, SymbolOrder); int ordersell = OrderSend (SymbolOrder,OP_SELLLIMIT,TradeVolume_KL,sellprice,0,slsell,tpsell,NULL,MagicSellGoldKiller3,0,clrBlue); } */ if ((order_type_buy!=-1 || order_type_sell!=-1) && (find_tp!=-1 || find_sl!=-1) && (CheckOpenOrders(MagicSellGoldKiller1)==true || CheckOpenOrders(MagicBuyGoldKiller1)==true)) { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()== MagicBuyGoldKiller1) { int filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-SL.txt",FILE_READ); double slnew = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-TP1.txt",FILE_READ); double tpnew = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); slnew = slnew-PipsToPrice(sl_margin, SymbolOrder); // tpnew = OrderOpenPrice()+ (OrderOpenPrice()-slnew); if (slnewOrderTakeProfit() && OrderTakeProfit()!=0) tpnew= OrderTakeProfit(); int Modify = OrderModify (OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tpnew,0,clrAqua); } if(OrderMagicNumber()== MagicSellGoldKiller1) { int filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Sell-SL.txt",FILE_READ); double slnew = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Sell-TP1.txt",FILE_READ); double tpnew = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); slnew = slnew+PipsToPrice(sl_margin, SymbolOrder); // tpnew = OrderOpenPrice()- (slnew-OrderOpenPrice()); if (slnew>OrderStopLoss() && OrderStopLoss()!=0) slnew= OrderStopLoss(); // if (tpnew=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()== MagicBuyGoldKiller2) { int filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-SL.txt",FILE_READ); double slnew = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); filehandleGKR = FileOpen(IntegerToString(account)+"-GoldKiller-"+OrderSymbol()+"-Buy-TP3.txt",FILE_READ); double tpnew = StringToDouble(FileReadString(filehandleGKR)); FileClose(filehandleGKR); if (slnewOrderStopLoss() && OrderStopLoss()!=0) slnew= OrderStopLoss(); if (tpnew>OrderOpenPrice()&& OrderTakeProfit()!=0) tpnew= OrderTakeProfit(); int Modify = OrderModify (OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tpnew,0,clrAqua); } }} } } // End of Orders } // End of Gold Killer }} // End Capture ID and On Timer // Start of Event Handling void OnChartEvent (const int id,const long &lparam,const double &dparam,const string &sparam) { OurInterface.OnEvent(id,lparam,dparam, sparam); if (id == CHARTEVENT_OBJECT_ENDEDIT){ if(sparam == LotName) { string volumeText = ObjectGetString(0, LotName, OBJPROP_TEXT); TradeVolume_Demo = StringToDouble(volumeText); ObjectSetString(0, LotName, OBJPROP_TEXT, string(TradeVolume_Demo)); return; } if(sparam == LotName2) { string volumeText = ObjectGetString(0, LotName2, OBJPROP_TEXT); TradeVolume_GP = StringToDouble(volumeText); ObjectSetString(0, LotName2, OBJPROP_TEXT, string(TradeVolume_GP)); return; } if(sparam == LotName3) { string volumeText = ObjectGetString(0, LotName3, OBJPROP_TEXT); TradeVolume_YS = StringToDouble(volumeText); ObjectSetString(0, LotName3, OBJPROP_TEXT, string(TradeVolume_YS)); return; } if(sparam == SD_Value) { string volumeText = ObjectGetString(0, SD_Value, OBJPROP_TEXT); sd = StringToDouble(volumeText); ObjectSetString(0, SD_Value, OBJPROP_TEXT, string(sd)); return; } if(sparam == TP_Value) { string volumeText = ObjectGetString(0, TP_Value, OBJPROP_TEXT); tp = StringToDouble(volumeText); ObjectSetString(0, TP_Value, OBJPROP_TEXT, string(tp)); return; } if(sparam == SL_Value) { string volumeText = ObjectGetString(0, SL_Value, OBJPROP_TEXT); sl = StringToDouble(volumeText); ObjectSetString(0, SL_Value, OBJPROP_TEXT, string(sl)); return; } if(sparam == newTP_Value) { string volumeText = ObjectGetString(0, newTP_Value, OBJPROP_TEXT); newtp = StringToDouble(volumeText); ObjectSetString(0, newTP_Value, OBJPROP_TEXT, string(newtp)); return; } if(sparam == newSL_Value) { string volumeText = ObjectGetString(0, newSL_Value, OBJPROP_TEXT); newsl = StringToDouble(volumeText); ObjectSetString(0, newSL_Value, OBJPROP_TEXT, string(newsl)); return; } } // End of CHARTEVENT_OBJECT_ENDEDIT // if an object was clicked if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam=="NewSLButton") { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) int BuyModify = OrderModify (OrderTicket(),OrderOpenPrice(),newsl,OrderTakeProfit(),0,clrAqua); if(OrderType()==OP_SELL) int SellModify = OrderModify (OrderTicket(),OrderOpenPrice(),newsl,OrderTakeProfit() ,0,clrBlue); } } } } if(sparam=="NewTPButton") { for (int b= OrdersTotal()-1;b>=0;b--) { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) int BuyModify = OrderModify (OrderTicket(),OrderOpenPrice(),OrderStopLoss(),newtp,0,clrAqua); if(OrderType()==OP_SELL) int SellModify = OrderModify (OrderTicket(),OrderOpenPrice(),OrderStopLoss(),newtp ,0,clrBlue); } } } } } // End CHARTEVENT_OBJECT_CLICK } // End of Event Handling // Functions Start int telegram_to_mt4() { CJAVal js; string headers; char post[], result[]; int res = WebRequest("GET","https://api.telegram.org/bot"+InpToken+"/getUpdates?offset=-1","", NULL, 10000, post, ArraySize(post), result, headers); string server_response_data = CharArrayToString(result); js.Deserialize(result); string update_id_str = js["result"] [0] ["update_id"].ToStr(); int update_id = StrToInteger(update_id_str); string chat_id_str = js["result"][0]["message"]["chat"]["id"].ToStr(); chat_id=(ulong)chat_id_str; string output[]; string output2[]; if(capture_previous_update_id < update_id) { capture_previous_update_id = update_id; string chat_message_text = js["result"] [0] ["message"]["text"].ToStr(); string chat_message_caption = js["result"] [0] ["message"]["caption"].ToStr(); StringSplit(chat_message_text,StringGetCharacter("\n", 0), output); StringSplit(chat_message_caption,StringGetCharacter("\n", 0), output2); if(res==-1) { Print("Error in WebRequest. Error code =",GetLastError()); //--- Perhaps the URL is not listed, display a message about the necessity to add the address MessageBox("Add the address in the list of allowed URLs on tab 'Expert Advisors'","Error",MB_ICONINFORMATION); } else { int filehandle11 = FileOpen("chat_id.txt",FILE_WRITE|FILE_TXT); FileWriteString(filehandle11,IntegerToString(chat_id)); FileClose(filehandle11); int filehandle2 = FileOpen("message_details.txt",FILE_WRITE|FILE_CSV); int count_lines = ArraySize(output); for(int x=0;x= 0 ; i--) { int OrderAll = OrderSelect(i,SELECT_BY_POS); double price = MarketInfo(symb,MODE_ASK); if(OrderType() == OP_BUY) price = MarketInfo(symb,MODE_BID); if((OrderType() == OP_BUY || (OrderType() == OP_SELL)) && OrderMagicNumber()==(Magic)) { int OpenDelete = OrderClose(OrderTicket(), OrderLots(),price,5); } if((OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) && OrderMagicNumber()==(Magic)) { int OpenDelete = OrderDelete(OrderTicket()); } Sleep(100); int error = GetLastError(); if(error > 0) Print("Unanticipated error: "); RefreshRates(); } } bool CountBuyOpenOrders(string symb) { int ordercount = 0; for( int i = 0 ; i < OrdersTotal() ; i++ ) { int OrderSO = OrderSelect( i, SELECT_BY_POS, MODE_TRADES ); if(OrderSymbol()==symb && (OrderType()==OP_BUY)) ordercount=ordercount+1; } if (ordercount=0) { if(ChartSymbol(ID)==symb) { found=true; break; } ID=ChartNext(ID); } return ID; } string TruncateNumber(string number) { int start_index = StringFind(number, "."); if (start_index == -1) return number; string vals[2] = {"", ""}; StringSplit(number, '.', vals); if (StringLen(vals[1]) <= 3 ) return number; return StringConcatenate(vals[0], ".", StringSubstr(vals[1], 0, 4)); }