陈先森 发表于 2023-10-29 04:28:46

交易历史复盘源码

大家自行复制修改使用
//+------------------------------------------------------------------+
//|                                                 ShowTradeHis.mq4 |
//|                                    ST小散         liangdawen |
//+------------------------------------------------------------------+
#property copyright "liangdawen"
#property link      "ldawen@126.com"

#property indicator_chart_window

string indNames = "";

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

int init()
{
   return(0);
}

int deinit()
{
   DelTradesHis();
   ObjectDelete("Show Trade History ");
   ObjectDelete("copyright");

   return(0);
}


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

int start()
{
   /*
   LabelCreate("ldw1",10,10,"abckmklsjfls");
   ArrowCreate("ldwdsf",D'2010.10.01 22:10',1.3675,"safs",Red,3);
   ArrowCreate("ld1wdsf",D'2010.10.01 20:10',1.3625,"sasfs",Blue,1);
   ArrowCreate("ld1sf",D'2010.10.01 10:10',1.3615,"sasfs",Blue,4);
   TrendLineCreate("kslsflksfsl",D'2010.10.01 22:10',1.3675,D'2010.10.01 20:10',1.3625);
   */

   static datetime BarTime = 0;
   if(BarTime!= Time)
   {
   BarTime= Time;
   LabelCreate("Show Trade History ",10,10,"Show Trade History");
   LabelCreate("copyright",25,25,"(liangdawen)");

   ShowTrades();

   }
   return(0);
}

//+------------------------------------------------------------------+


void LabelCreate(string name,int x,int y,string text="-",int size=10,string font="Arial",color colour=Red,int window = 0)
{
   if (ObjectFind(indNames+name) == -1)
   {
      ObjectCreate(indNames+name,OBJ_LABEL,window,0,0);
         ObjectSet(indNames+name,OBJPROP_CORNER,1);
         ObjectSet(indNames+name,OBJPROP_XDISTANCE,x);
         ObjectSet(indNames+name,OBJPROP_YDISTANCE,y);
   }               
   ObjectSetText(indNames+name,text,size,font,colour);
}

void ArrowCreate(string name,datetime dt,double price,string text = "-",color colour=Red,int ArrowType = 1,int window = 0)
{
   if (ObjectFind(indNames+name) == -1)
   {
      ObjectCreate(indNames+name,OBJ_ARROW,window,dt,price);
      ObjectSet(indNames+name,OBJPROP_ARROWCODE,ArrowType);
      ObjectSet(indNames+name,OBJPROP_COLOR,colour);
   }               

}

void TrendLineCreate(string name,datetime dt1,double price1,datetime dt2,double price2,color colour=Red,int window = 0)
{
   if (ObjectFind(indNames+name) == -1)
   {
      ObjectCreate(indNames+name,OBJ_TREND,window,dt1,price1,dt2,price2);
      ObjectSet(indNames+name,OBJPROP_COLOR,colour);
      ObjectSet(indNames+name,OBJPROP_RAY,false);
      ObjectSet(indNames+name,OBJPROP_STYLE,STYLE_DOT);
   }               
}


void ShowTrades()
{
   int   cnt;
   color OpenArrowColor;
   color CloseArrowColor;

   color StopLossColor;
   color LineColor;
   string SType = " ";
   string text;

   int oc = OrdersHistoryTotal();   
   for(cnt=0;cnt<oc;cnt++)
   {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY) ==false) continue;
      if(OrderSymbol() != Symbol()) continue;

      if( OrderType()==OP_SELL )
      {
         OpenArrowColor = Red;
         CloseArrowColor = Violet;
         StopLossColor = Red;
         LineColor =Red;
      }
      if( OrderType()==OP_BUY )
      {
         OpenArrowColor = Blue;
         CloseArrowColor = Goldenrod;
         StopLossColor = Blue;
         LineColor =Blue;
      }
      if(OrderType() == OP_SELL) SType = "SELL";
      if(OrderType() == OP_BUY) SType = "BUY";

      string ticket =DoubleToStr(OrderTicket(),0);
      double lots = NormalizeDouble(OrderLots(),2);
      double op= NormalizeDouble(OrderOpenPrice(),Digits);
      double cp = NormalizeDouble(OrderClosePrice(),Digits);   
      text = StringConcatenate("# ",OrderTicket()," ",SType," ",lots," ",OrderSymbol()," at ",op," ",cp);

      ArrowCreate("o "+text,OrderOpenTime(),OrderOpenPrice()," ",OpenArrowColor,1);// --Open arrow
      ArrowCreate("c "+text,OrderCloseTime(),OrderClosePrice()," ",CloseArrowColor,3); // --close arrow
      ArrowCreate("s "+text,OrderOpenTime(),OrderStopLoss()," ",OpenArrowColor,4);// --stop arrow
      TrendLineCreate("l " + text ,OrderOpenTime(),OrderOpenPrice(),OrderCloseTime(),OrderClosePrice(),LineColor);// trendline

   }// end for

}   //end ShowTrades


void DelTradesHis()
{
   int   cnt;
   string SType = " ";
   string text;
   int obj_id ;
   string obj_name;

   int oc = OrdersHistoryTotal();   
   for(cnt=0;cnt<oc;cnt++)
   {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY) ==false) continue;
      if(OrderSymbol() != Symbol()) continue;

      if(OrderType() == OP_SELL) SType = "SELL";
      if(OrderType() == OP_BUY) SType = "BUY";

      string ticket =DoubleToStr(OrderTicket(),0);
      double lots = NormalizeDouble(OrderLots(),2);
      double op= NormalizeDouble(OrderOpenPrice(),Digits);
      double cp = NormalizeDouble(OrderClosePrice(),Digits);   
      text = StringConcatenate("# ",OrderTicket()," ",SType," ",lots," ",OrderSymbol()," at ",op," ",cp);

      obj_name = "o "+text;
      obj_id = ObjectFind(obj_name);
      if(obj_id!=-1) ObjectDelete(obj_name); // --Open arrow

      obj_name = "c "+text;
      obj_id = ObjectFind(obj_name);
      if(obj_id!=-1) ObjectDelete(obj_name); // --close arrow

      obj_name = "s "+text;
      obj_id = ObjectFind(obj_name);
      if(obj_id!=-1) ObjectDelete(obj_name); // --stop arrow

      obj_name = "l "+text;
      obj_id = ObjectFind(obj_name);
      if(obj_id!=-1) ObjectDelete(obj_name); // --trendline



   }// end for

}   //end ShowTrades

小飞鱼20123 发表于 2023-10-29 07:54:06

不错,感谢分享!

cch90 发表于 2023-10-29 21:24:10

怎么用?

宁静致远 发表于 2024-8-16 14:20:52

{:1_194:}
页: [1]
查看完整版本: 交易历史复盘源码