//+------------------------------------------------------------------+ //| Multi-News.mq4 | //| Copyright © 2009, Äåì¸õèí Âèòàëèé Åâãåíüåâè÷ | //| Vitalya_1983@list.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, Äåì¸õèí Âèòàëèé Åâãåíüåâè÷" #property link "Vitalya_1983@list.ru" extern string zone_1 = "";//Ñòðàíà (âàëþòà ñòðàíû) ãäå âûéäåò íîâîñòü extern int vazhnost_1 = 3; //Ñòåïåíü âàæíîñòè íîâîñòè. Âëèÿåò íà îáúåì ñäåëêè extern datetime time_news_1 ; //Âðåìÿ âûõîäà íîâîñòè extern int life_news_1 = 10;//Âðåìÿ äåéñòâèÿ íîâîñòè â ìèíóòàõ, ïîñëå êîòîðîãî âêëþ÷èòñÿ òðàë, ëèáî çàêðîþòñÿ îðäåðà extern string zone_2 = ""; extern int vazhnost_2 = 3; extern datetime time_news_2 ; extern int life_news_2 = 10; extern string zone_3 = ""; extern int vazhnost_3 = 3; extern datetime time_news_3 ; extern int life_news_3 = 10; extern string zone_4 = ""; extern int vazhnost_4 = 3; extern datetime time_news_4 ; extern int life_news_4 = 10; extern string zone_5 = ""; extern int vazhnost_5 = 3; extern datetime time_news_5 ; extern int life_news_5 = 10; extern string zone_6 = ""; extern int vazhnost_6 = 3; extern datetime time_news_6 ; extern int life_news_6 = 10; extern string zone_7 = ""; extern int vazhnost_7 = 3; extern datetime time_news_7 ; extern int life_news_7 = 10; extern string zone_8 = ""; extern int vazhnost_8 = 3; extern datetime time_news_8 ; extern int life_news_8 = 10; extern string zone_9 = ""; extern int vazhnost_9 = 3; extern datetime time_news_9 ; extern int life_news_9 = 10; extern string zone_10 = ""; extern int vazhnost_10 = 3; extern datetime time_news_10 ; extern int life_news_10 = 10; extern double Lots = 0.01; //óìíîæàåòñÿ íà âàæíîñòü íîâîñòè extern bool delete_stop_orders = true, trail_orders = true; extern int percent_for_trail = 15; //ìàññèâû: string instrument [29]; string zone [11]; int vazhnost [11]; datetime time_news[11]; int life_news[11]; double profits [11]; bool delete_orders[11]; int orders [11]; bool stop_orders_buy = false,stop_orders_sell = false,orders_buy =false,orders_sell =false; double price,profit; string TEXT; int i,n,m; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { // Çàïîëíåíèå ìàññèâîâ zone [1] = zone_1; vazhnost [1] = vazhnost_1; time_news[1] = time_news_1; life_news[1] = life_news_1; zone [2] = zone_2; vazhnost [2] = vazhnost_2; time_news[2] = time_news_2; life_news[2] = life_news_2; zone [3] = zone_3; vazhnost [3] = vazhnost_3; time_news[3] = time_news_3; life_news[3] = life_news_3; zone [4] = zone_4; vazhnost [4] = vazhnost_4; time_news[4] = time_news_4; life_news[4] = life_news_4; zone [5] = zone_5; vazhnost [5] = vazhnost_5; time_news[5] = time_news_5; life_news[5] = life_news_5; zone [6] = zone_6; vazhnost [6] = vazhnost_6; time_news[6] = time_news_6; life_news[6] = life_news_6; zone [7] = zone_7; vazhnost [7] = vazhnost_7; time_news[7] = time_news_7; life_news[7] = life_news_7; zone [8] = zone_8; vazhnost [8] = vazhnost_8; time_news[8] = time_news_8; life_news[8] = life_news_8; zone [9] = zone_9; vazhnost [9] = vazhnost_9; time_news[9] = time_news_9; life_news[9] = life_news_9; zone [10] = zone_10; vazhnost [10] = vazhnost_10; time_news[10] = time_news_10; life_news[10] = life_news_10; instrument [1] = "EURUSD"; /* instrument [2] = "GBPUSD"; instrument [3] = "USDCHF"; instrument [4] = "USDJPY"; instrument [5] = "USDCAD"; instrument [6] = "AUDUSD"; instrument [7] = "NZDUSD"; instrument [8] = "EURAUD"; instrument [9] = "EURCHF"; instrument [11] = "EURGBP"; instrument [12] = "EURJPY"; instrument [13] = "EURCAD"; instrument [14] = "GBPCHF"; instrument [15] = "GBPJPY"; instrument [16] = "AUDCHF"; instrument [17] = "AUDNZD"; instrument [18] = "AUDJPY"; instrument [19] = "AUDCAD"; instrument [20] = "CADCHF"; instrument [21] = "CADJPY"; instrument [22] = "NZDJPY"; instrument [23] = "CHFJPY"; instrument [24] = "EURNZD"; instrument [25] = "GBPAUD"; instrument [26] = "GBPCAD"; instrument [27] = "NZDCHF"; instrument [28] = "NZDCAD";*/ //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { TEXT="òåêóùåå âðåìÿ "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES); //---- for (i=1; i<=10; i++) { if (zone[i]!="") { if (TimeCurrent()<time_news[i]) { TEXT=TEXT+"\n"+"íîâîñòü íîìåð " +i+ " ñ âàæíîñòüþ " + vazhnost [i] + " áàëëà ïî âàëþòå "+ zone[i]+ " âûéäåò "+ TimeToStr(time_news[i],TIME_DATE|TIME_MINUTES); } else { } //ïðîâåðêà âðåìåíè âûõîäà íîâîñòè ïî äàííîé çîíå èíñòðóìåíòîâ, óñòàíîâêà îòëîæåííûõ îðäåðîâ if (TimeCurrent()>=time_news[i]&&TimeCurrent()<=time_news[i]+life_news[i]*60) { delete_orders [i]=false; profit =0; for (n=1; n<=28; n++) { if (StringFind (instrument [n], zone[i],0)>-1) { stop_orders_buy = false; // ôëàãè òåêóùèõ èíñòðóìåíòîâ stop_orders_sell = false; orders_buy = false; orders_sell = false; for (m=OrdersTotal()-1;m>=0; m--) { OrderSelect (m,SELECT_BY_POS,MODE_TRADES); if (OrderMagicNumber() == i && OrderSymbol()==instrument [n]) { if (OrderType ()==OP_BUY) { orders_buy = true; profit = profit+OrderProfit(); } if (OrderType ()==OP_SELL) { profit = profit+OrderProfit(); orders_sell= true; } if (OrderType ()==OP_BUYSTOP) { stop_orders_buy = true; } if (OrderType ()==OP_SELLSTOP) { stop_orders_sell = true; } } } if (!stop_orders_buy&&!orders_buy&&!orders_sell) { RefreshRates (); price = NormalizeDouble((MarketInfo (instrument [n], MODE_ASK)+MarketInfo (instrument [n], MODE_STOPLEVEL)*MarketInfo (instrument [n], MODE_POINT)*2),MarketInfo (instrument [n], MODE_DIGITS)); OrderSend (instrument [n], OP_BUYSTOP, Lots*vazhnost [i], price,10,0,0,0,i,0,Blue); } if (!stop_orders_sell&&!orders_buy&&!orders_sell) { RefreshRates (); price = NormalizeDouble((MarketInfo (instrument [n], MODE_BID)-MarketInfo (instrument [n], MODE_STOPLEVEL)*MarketInfo (instrument [n], MODE_POINT)*2),MarketInfo (instrument [n], MODE_DIGITS)); OrderSend (instrument [n], OP_SELLSTOP, Lots*vazhnost [i], price,10,0,0,0,i,0,Red); } if (delete_stop_orders)//åñëè îäèí èç îòëîæåííûõ îðäåðîâ ñðàáîòàë, óäàëÿåì íåñðàáîòàâøèé { if (orders_buy||orders_sell) { for (m=OrdersTotal()-1;m>=0; m--) { OrderSelect (m,SELECT_BY_POS,MODE_TRADES); { if (OrderMagicNumber() == i&&OrderSymbol()==instrument [n]&&(OrderType () == OP_SELLSTOP||OrderType () == OP_BUYSTOP)) { OrderDelete (OrderTicket()); } } } } } } } } } if (TimeCurrent()>time_news[i]+life_news[i]*60&&time_news[i]!=0) { profit=0; for (m=OrdersTotal()-1;m>=0; m--) { OrderSelect (m,SELECT_BY_POS,MODE_TRADES); { if (OrderMagicNumber() == i) { profit = profit+OrderProfit(); } } } if (profits [i]<profit) { profits [i]=profit; } if (profits [i]-(percent_for_trail/100)*profits [i]>profit||profit<0||!trail_orders) { delete_orders [i] = true; } if (delete_orders [i]) { orders [i]=0; for (m=OrdersTotal()-1;m>=0; m--) { OrderSelect (m,SELECT_BY_POS,MODE_TRADES); { if (OrderMagicNumber() == i) { orders [i] ++; if (OrderType () == OP_SELLSTOP||OrderType () == OP_BUYSTOP) { OrderDelete (OrderTicket()); } if (OrderType () == OP_BUY) { price = MarketInfo (OrderSymbol (), MODE_BID); OrderClose (OrderTicket(),OrderLots(),price,10, Blue); } if (OrderType () == OP_SELL) { price = MarketInfo (OrderSymbol (), MODE_ASK); OrderClose (OrderTicket(),OrderLots(),price,10, Red); } } } } if (orders [i] !=0) { } if (orders [i] ==0) { delete_orders [i] = false; } } } } Comment (TEXT); //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
Other Features: