//+------------------------------------------------------------------+ //| mTrackPositions.mq4 | //| Copyright © 2009, Mark Carver | //| | //| Indicator to track position profit in .csv file for later | //| analysis on the life-cycle of a position. | //| | //| Array size max is 32, max # of files in MT4 that can be open | //| | //| Keep files open or eventually MT4 will choke from buffer overflow| //| | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, Mark Carver" #property link "" #property indicator_chart_window extern bool EveryTick=false; //---If false, takes profit snapshot every minute extern bool ShowComment=true; int myPositions[32,2]; int numPositions=0; int ThisMinute; bool Debug=false; //+------------------------------------------------------------------+ void init() {ThisMinute=Minute()+1;return;} //+------------------------------------------------------------------+ void deinit() {if(ShowComment) Comment("");return;} //+------------------------------------------------------------------+ void start() { string myTime=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES), Comment.Line; bool Found; int myProfit, myTicket, myRow, myHandle, myOrders, i, j; int myTempPositions[32,2]; int myTempNumPositions=0; Comment.Line=StringConcatenate("\nCurrent Broker Time: ",myTime); if(!EveryTick&&ThisMinute==Minute()) return; ThisMinute=Minute(); myOrders=OrdersTotal(); int myAllTickets[32]; Comment.Line=StringConcatenate(Comment.Line,"\nNumber Orders = ",myOrders); for(i=0;i0) //-----Move back from temp array to primary array { for(i=1;i<=myTempNumPositions;i++) { myPositions[i,0]=myTempPositions[i,0]; myPositions[i,1]=myTempPositions[i,1]; } } numPositions=myTempNumPositions; } if(Debug) { Comment.Line=StringConcatenate(Comment.Line,"\nAfter.Debug.myPositions. numPositions=",numPositions," "); for(i=1;i<=numPositions;i++) { Comment.Line=StringConcatenate(Comment.Line," i=",i," 0=",myPositions[i,0]," 1=",myPositions[i,1]," ... "); } } if(ShowComment) Comment(Comment.Line); return; } //+------------------------------------------------------------------+ string GetFileName(int myTicket) {return(StringConcatenate("/PositionData/p",myTicket,".csv"));} //+------------------------------------------------------------------+