//+------------------------------------------------------------------+ //| Show history.mq4 | //| Valmars | //| valmars@bk.ru | //+------------------------------------------------------------------+ #property copyright "Valmars" #property link "valmars@bk.ru" //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { // Удаление всех стрелок сделок с графика ObjectsDeleteAll(0,OBJ_ARROW); // Удаление всех линий закрытых позиций с графика for(int i = 0; i < ObjectsTotal(); i++) { if(ObjectType(ObjectName(i)) == OBJ_TREND) if(!ObjectGet(ObjectName(i), OBJPROP_RAY)) ObjectDelete(ObjectName(i)); } string name; // Имя объекта-стрелки int Arrow; // Код стрелки double Color; // Цвет стрелки // Проверка для всех открытых и отложенных ордеров for(i = 0; i < OrdersTotal(); i++) { OrderSelect(i, SELECT_BY_POS); // Символы ордера и графика не совпадают if(OrderSymbol() != Symbol()) continue; // Следующий ордер switch(OrderType()) // Параметры стрелок { case OP_BUY: Arrow = 1; Color = Aqua; name = OrderTicket() + " buy " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at "+ DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELL: Arrow = 2; Color = Red; name = OrderTicket() + " sell " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_BUYLIMIT: Arrow = 1; Color = Yellow; name = OrderTicket() + " buylimit " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_BUYSTOP: Arrow = 1; Color = Yellow; name = OrderTicket() + " buystop " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELLLIMIT: Arrow = 2; Color = Yellow; name = OrderTicket() + " selllimit " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELLSTOP: Arrow = 2; Color = Yellow; name = OrderTicket() + " sellstop " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; } // Стрелка открытия ордера ObjectCreate(name, OBJ_ARROW, 0, OrderOpenTime(), OrderOpenPrice()); ObjectSet(name, OBJPROP_ARROWCODE, Arrow); ObjectSet(name, OBJPROP_COLOR, Color); } // Проверка для всех закрытых и удалённых ордеров for(i = 0; i < HistoryTotal(); i++) { OrderSelect(i, SELECT_BY_POS, MODE_HISTORY); // Символы ордера и графика не совпадают if(OrderSymbol() != Symbol()) continue; // Следующий ордер switch(OrderType()) { case OP_BUY: Arrow = 1; Color = Aqua; name = OrderTicket() + " buy " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELL: Arrow = 2; Color = Red; name = OrderTicket() + " sell " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_BUYLIMIT: Arrow = 1; Color = Yellow; name = OrderTicket() + " buylimit " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_BUYSTOP: Arrow = 1; Color = Yellow; name = OrderTicket() + " buystop " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELLLIMIT: Arrow = 2; Color = Yellow; name = OrderTicket() + " selllimit " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELLSTOP: Arrow = 2; Color = Yellow; name = OrderTicket() + " sellstop " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; } // Стрелка открытия ордера ObjectCreate(name, OBJ_ARROW, 0, OrderOpenTime(), OrderOpenPrice()); ObjectSet(name, OBJPROP_ARROWCODE, Arrow); ObjectSet(name, OBJPROP_COLOR, Color); switch(OrderType()) { case OP_BUY: Arrow = 1; Color = Aqua; name = OrderTicket() + " buy " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELL: Arrow = 2; Color = Red; name = OrderTicket() + " sell " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_BUYLIMIT: Arrow = 1; Color = Yellow; name = OrderTicket() + " buylimit " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_BUYSTOP: Arrow = 1; Color = Yellow; name = OrderTicket() + " buystop " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELLLIMIT: Arrow = 2; Color = Yellow; name = OrderTicket() + " selllimit " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; case OP_SELLSTOP: Arrow = 2; Color = Yellow; name = OrderTicket() + " sellstop " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + " at " + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); break; } // Стрелка закрытия ордера ObjectCreate(name, OBJ_ARROW, 0, OrderCloseTime(), OrderClosePrice()); ObjectSet(name, OBJPROP_ARROWCODE, 3); ObjectSet(name, OBJPROP_COLOR, Color); // Прорисовка линий закрытых позиций name = OrderTicket() + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)) + "->" + DoubleToStr(OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_DIGITS)); ObjectCreate(name, OBJ_TREND, 0, OrderOpenTime(), OrderOpenPrice(), OrderCloseTime(), OrderClosePrice()); ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_WIDTH, 1); ObjectSet(name, OBJPROP_RAY, false); ObjectSet(name, OBJPROP_COLOR, Color); } return(0); } //+------------------------------------------------------------------+