HistoryDraw

Author: Copyright � 2012, Drknn
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of closed orders
0 Views
0 Downloads
0 Favorites
HistoryDraw
// ================================================================================================+
//                 =====              HistoryDraw.mq4                      =====                   |
//             =============          Copyright © 2012, Drknn          =============               |
//                 =====              mailto: drknn@mail.ru                =====                   |
// ================================================================================================+


#property copyright "Copyright © 2012, Drknn"
#property link      "drknn@mail.ru"
string		NameExpert="HistoryDraw.mq4";

extern bool	UseCreateHistoryDraw=true;// äîáðî îòðèñîâûâàòü èñòîðèþ òîðãîâ ïðè ðàáîòå ñîâåòíèêà
extern bool	UseDelHistoryDraw=true;/* äîáðî óäàëÿòü îòðèñîâàííóþ èñòîðèþ òîðãîâ ïðè äåèíèöèàëèçàöèè
																			ñîâåòíèêà. Åñëè ïåðåìåííàÿ UseCreateHistoryDraw èìååò çíà÷åíèå
																			false, òî áåçðàçëè÷íî, êàêîå çíà÷åíèå ïðèíèìàåò ïåðåìííàÿ UseDelHistoryDraw
																		*/

																		
int    myBars;



// ================================================================================================+
// ================================================================================================|
//             =============          ÈÍÈÖÈÀËÈÇÀÖÈß ÑÎÂÅÒÍÈÊÀ          =============               |
// ================================================================================================|
// ================================================================================================+
int init(){
	Print("Ñîâåòíèê ",NameExpert," íà èíñòðóìåíòå ",Symbol()," ïðîèíèöèàëèçèðîâàí - â ðàáîòó âêëþ÷åí");
	return(0);
}



// ================================================================================================+
// ================================================================================================|
//            =============         ÄÅÈÍÈÖÈÀËÈÇÀÖÈß ÑÎÂÅÒÍÈÊÀ         =============                |
// ================================================================================================|
// ================================================================================================+
int deinit(){
	
	if(!IsTesting()){
		string s_Deint;
		switch(UninitializeReason()){
			case 0:		s_Deint="ñîâåòíèê ñàìîñòîÿòåëüíî çàâåðøèë ñâîþ ðàáîòó"; break;
			case 1:		s_Deint="ñîâåòíèê óäàë¸í ñ ãðàôèêà ëèáî âðó÷íóþ, ëèáî íà ãðàôèê áûë áðîøåí äðóãîé ýêñïåðò, ÷òî ïðèâåëî ê óäàëåíèþ äàííîãî"; break;
			case 2:		s_Deint="ñîâåòíèê ïåðåêîìïèëèðîâàí"; break;
			case 3:		s_Deint="ñèìâîë èëè ïåðèîä ãðàôèêà áûë èçìåíåí"; break;
			case 4:		s_Deint="ãðàôèê çàêðûò"; break;
			case 5:		s_Deint="âõîäíûå ïàðàìåòðû áûëè èçìåíåíû ïîëüçîâàòåëåì"; break;
			case 6:		s_Deint="àêòèâèðîâàí äðóãîé ñ÷åò"; break;
			default:	s_Deint="ïðè÷èíà äåèíèöèàëèçàöèè íå ÿñíà"; break;
		}
		if(UseCreateHistoryDraw && UseDelHistoryDraw){
			HistoryDrawDelete();
		}
		Print("Ñîâåòíèê ",NameExpert," íà èíñòðóìåíòå ",Symbol()," äåèíèöèàëèçèðîâàí. Ïðè÷èíà: ",s_Deint);
		Comment("");
	}
	return(0);
}



// ================================================================================================+
// ================================================================================================|
//           =============           ÑÒÀÐÒ ÐÀÁÎÒÛ ÑÎÂÅÒÍÈÊÀ           =============                |
// ================================================================================================|
// ================================================================================================+
int start(){
	
	// ===============================================================================================
	// ======================= Áëîê îòðèñîâêè èñòîðèè òîðãîâ =========================================
	// ===============================================================================================
		if(isNewBar() && UseCreateHistoryDraw){
			HistoryDrawCreate();
		}
	// ===============================================================================================
	
	
	return(0);
}
//+------------------------------------------------------------------+
//|                  Ïîëüçîâàòåëüñêèå ïîäïðîãðàììû                   |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| ôóíêöèÿ isNewBar() - âîçâðàùàåò ïðèçíàê íîâîãî áàðà                                              |
//+------------------------------------------------------------------+
bool isNewBar(){
  bool res=false;
  if(myBars!=Bars){
    res=true;
    myBars=Bars;
  }   
	return(res);
}
//--------------------------------------------------------------- 

// -------------------------- HistoryDrawCreate() --------------------------------------------------
// Ïðîöåäóðà îòðèñîâûâàåò èñòîðèþ òîðãîâ íà ãðàôèêå
// --------------------------------------------------------
void HistoryDrawCreate(){
  string	FunctionName="HistoryDrawDelete()";
	string SMB=Symbol();
  double OpenBuy=0.0,CloseBuy=0.0,OpenSell=0.0,CloseSell=0.0;//êîîðäèíàòû îòðåçêîâ
  int Ticket;
  string L_name,Tip,Open_name,Close_name;
  datetime TimeOpenBuy=0,TimeCloseBuy=0,TimeOpenSell=0,TimeCloseSell=0;
  for(int i=0; i<OrdersHistoryTotal(); i++){
    if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
			Print("Îøèáêà ¹ ",GetLastError()," ïðè âûáîðå îðäåðà ¹ ",i);
			Print(" ============== ",FunctionName," ============== ");
		}
    else{
			if(OrderSymbol()!=SMB){continue;}
			if(OrderType()==OP_BUY){
			// ------------- ïîëó÷àåì ïàðàìåòðû ëèíèé --------------
				OpenBuy=OrderOpenPrice();
				CloseBuy=OrderClosePrice();
				Ticket=OrderTicket();
				TimeOpenBuy=OrderOpenTime();
				TimeCloseBuy=OrderCloseTime();
				// ---- ãåíåðèðóåì èìåíà îáúåêòîâ ------
				Tip="Buy";//òèï ñäåëêè
				L_name="L_"+Tip+" ¹ "+Ticket;
				Open_name="Open"+Tip+" ¹ "+Ticket;//ñòðåëêà, îòêðûâàþùàÿ ñäåëêó
				Close_name="Close"+Tip+" ¹ "+Ticket;//ñòðåëêà, çàêðûâàþùàÿ ñäåëêó
				// ---- ñîçäà¸ì îòêðûâàþùóþ ñòðåëêó ------------
				ObjectCreate(Open_name,OBJ_ARROW,0,TimeOpenBuy,OpenBuy);//îòêðûâàþùàÿ ñòðåëêà Áàé-îðäåðà
				ObjectSet(Open_name,OBJPROP_ARROWCODE,1);//êîä ñòðåëêè 232 
				ObjectSet(Open_name,OBJPROP_COLOR,Blue);//öâåò ñòðåëêè
				// ---- ñîçäà¸ì çàêðûâàþùóþ ñòðåëêó ------------
				ObjectCreate(Close_name,OBJ_ARROW,0,TimeCloseBuy,CloseBuy);//çàêðûâàþùàÿ ñòðåëêà Áàé-îðäåðà
				ObjectSet(Close_name,OBJPROP_ARROWCODE,3);//êîä ñòðåëêè  231
				ObjectSet(Close_name,OBJPROP_COLOR,Blue);//öâåò ñòðåëêè
				// ---- ñîçäà¸ì ëèíèè ------------ 
				ObjectCreate(L_name,OBJ_TREND,0,TimeOpenBuy,OpenBuy,TimeCloseBuy,CloseBuy);//
				ObjectSet(L_name,OBJPROP_RAY,false);//çàïðåùàåì ðèñîâàòü ëó÷
				ObjectSet(L_name,OBJPROP_WIDTH,0);//óñòàíàâëèâàåì òîëùèíó ëèíèè ()
				ObjectSet(L_name,OBJPROP_STYLE,0);//óñòàíàâëèâàåì òèï ëèíèè (îòðåçêè)
				ObjectSet(L_name,OBJPROP_STYLE,STYLE_DOT);//óñòàíàâëèâàåì òèï øòðèõîâêè(ïóíêòèðíàÿ ëèíèÿ)
				ObjectSet(L_name,OBJPROP_COLOR,Blue);//óñòàíàâëèâàåì öâåò(ñèíèé/êðàñíûé)
			}
			if(OrderType()==OP_SELL){
				// ------------- ïîëó÷àåì ïàðàìåòðû ëèíèé ------------
				OpenSell=OrderOpenPrice();
				CloseSell=OrderClosePrice();
				Ticket=OrderTicket();
				TimeOpenSell=OrderOpenTime();
				TimeCloseSell=OrderCloseTime();
				// ---- ãåíåðèðóåì èìåíà îáúåêòîâ ------
				Tip="Sell";//òèï ñäåëêè
				L_name="L_"+Tip+" ¹ "+Ticket;
				Open_name="Open"+Tip+" ¹ "+Ticket;//ñòðåëêà, îòêðûâàþùàÿ ñäåëêó
				Close_name="Close"+Tip+" ¹ "+Ticket;//ñòðåëêà, çàêðûâàþùàÿ ñäåëêó
				// ---- ñîçäà¸ì îòêðûâàþùóþ ñòðåëêó ------------
				ObjectCreate(Open_name,OBJ_ARROW,0,TimeOpenSell,OpenSell);//îòêðûâàþùàÿ ñòðåëêà Sell-îðäåðà
				ObjectSet(Open_name,OBJPROP_ARROWCODE,1);//êîä ñòðåëêè 232 
				ObjectSet(Open_name,OBJPROP_COLOR,Red);//öâåò ñòðåëêè
				// ---- ñîçäà¸ì çàêðûâàþùóþ ñòðåëêó ------------
				ObjectCreate(Close_name,OBJ_ARROW,0,TimeCloseSell,CloseSell);//çàêðûâàþùàÿ ñòðåëêà Sell-îðäåðà
				ObjectSet(Close_name,OBJPROP_ARROWCODE,3);//êîä ñòðåëêè  231
				ObjectSet(Close_name,OBJPROP_COLOR,Red);//öâåò ñòðåëêè
				
				// ---- ñîçäà¸ì ëèíèè ------------
				ObjectCreate(L_name,OBJ_TREND,0,TimeOpenSell,OpenSell,TimeCloseSell,CloseSell);//
				ObjectSet(L_name,OBJPROP_RAY,false);//çàïðåùàåì ðèñîâàòü ëó÷
				ObjectSet(L_name,OBJPROP_WIDTH,0);//óñòàíàâëèâàåì òîëùèíó ëèíèè ()
				ObjectSet(L_name,OBJPROP_STYLE,0);//óñòàíàâëèâàåì òèï ëèíèè (îòðåçêè)
				ObjectSet(L_name,OBJPROP_STYLE,STYLE_DOT);//óñòàíàâëèâàåì òèï øòðèõîâêè(ïóíêòèðíàÿ ëèíèÿ)
				ObjectSet(L_name,OBJPROP_COLOR,Red);//óñòàíàâëèâàåì öâåò(ñèíèé/êðàñíûé)
			}  
		}
	}
}

// -------------------------- HistoryDrawDelete() --------------------------------------------------
// Ïðîöåäóðà óäàëÿåò èñòîðèþ òîðãîâ, ïðîðèñîâàííóþ íà ãðàôèêå
// --------------------------------------------------------
void HistoryDrawDelete(){
	string	FunctionName="HistoryDrawDelete()";
	string SMB=Symbol();
	double OpenBuy=0.0,CloseBuy=0.0,OpenSell=0.0,CloseSell=0.0;//êîîðäèíàòû îòðåçêîâ
  int Ticket;
  string L_name,Tip,Open_name,Close_name;
  datetime TimeOpenBuy=0,TimeCloseBuy=0,TimeOpenSell=0,TimeCloseSell=0;
  for(int i=0;i<OrdersHistoryTotal();i++){
		if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
			Print("Îøèáêà ¹ ",GetLastError()," ïðè âûáîðå îðäåðà ¹ ",i);
			Print(" ============== ",FunctionName," ============== ");
		}
		else{
			if(OrderSymbol()!=SMB){continue;}
			if(OrderType()==OP_BUY){
				// ------------- ïîëó÷àåì ïàðàìåòðû ëèíèé --------------
				OpenBuy=OrderOpenPrice();
				CloseBuy=OrderClosePrice();
				Ticket=OrderTicket();
				TimeOpenBuy=OrderOpenTime();
				TimeCloseBuy=OrderCloseTime();
				// ---- ãåíåðèðóåì èìåíà îáúåêòîâ ------
				Tip="Buy";//òèï ñäåëêè
				L_name="L_"+Tip+" ¹ "+Ticket;
				Open_name="Open"+Tip+" ¹ "+Ticket;//ñòðåëêà, îòêðûâàþùàÿ ñäåëêó
				Close_name="Close"+Tip+" ¹ "+Ticket;//ñòðåëêà, çàêðûâàþùàÿ ñäåëêó
				// ---- óäàëÿåì îòêðûâàþùóþ ñòðåëêó ------------
				ObjectDelete(Open_name);//îòêðûâàþùàÿ ñòðåëêà Áàé-îðäåðà
				// ---- óäàëÿåì çàêðûâàþùóþ ñòðåëêó ------------
				ObjectDelete(Close_name);//çàêðûâàþùàÿ ñòðåëêà Áàé-îðäåðà
				// ---- óäàëÿåì ëèíèè ------------ 
				ObjectDelete(L_name);//
			}
			if(OrderType()==OP_SELL){
				// ------------- ïîëó÷àåì ïàðàìåòðû ëèíèé ------------
				OpenSell=OrderOpenPrice();
				CloseSell=OrderClosePrice();
				Ticket=OrderTicket();
				TimeOpenSell=OrderOpenTime();
				TimeCloseSell=OrderCloseTime();
				// ---- ãåíåðèðóåì èìåíà îáúåêòîâ ------
				Tip="Sell";//òèï ñäåëêè
				L_name="L_"+Tip+" ¹ "+Ticket;
				Open_name="Open"+Tip+" ¹ "+Ticket;//ñòðåëêà, îòêðûâàþùàÿ ñäåëêó
				Close_name="Close"+Tip+" ¹ "+Ticket;//ñòðåëêà, çàêðûâàþùàÿ ñäåëêó
				// ---- óäàëÿåì îòêðûâàþùóþ ñòðåëêó ------------
				ObjectDelete(Open_name);//îòêðûâàþùàÿ ñòðåëêà Sell-îðäåðà
				// ---- óäàëÿåì çàêðûâàþùóþ ñòðåëêó ------------
				ObjectDelete(Close_name);//çàêðûâàþùàÿ ñòðåëêà Sell-îðäåðà
				// ---- óäàëÿåì ëèíèè ------------
				ObjectDelete(L_name);//
			}  
		}
  }
}

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---