Time management using posix time
Hi: This is what is I am trying to achieve. I would like to run the program for 6 minutes, within the six minutes I would like to toggle for 2 minutes data operation and for 1 minute trade operation, so there will be 2 cycle of data operation and 2 cycle of trade operation. I am setting and getting the ptime outside the main program, but what is happening is that the getPtime of the template class is always return the +2 minutes of the current time, that is why diff is never reducing less than 2 minutes, why is that happening, the setter have been instantiated only once. I would really appreciate if someone can help me out. [code] // boost_example.cpp : Defines the entry point for the console application. // #include "boost/date_time/posix_time/posix_time.hpp" #include <iostream> #include <stdio.h> #include <stdio.h> #include "windows.h" using namespace std; template <typename ptime_type> class timeManagement { private: ptime_type tradingTime; public: timeManagement(){}; void setPtime (const ptime_type& _val){tradingTime = _val; } ptime_type const& getPtime() {return (tradingTime);} ~timeManagement(){}; }; int main() { bool btradingIndicator = false; std::ostringstream msg; using namespace boost::posix_time; const ptime start = second_clock::local_time(); time_duration td = minutes(6); time_duration tdDataCollection = minutes(2); time_duration tdTrading = minutes(1); bool bTradingIndicator = false; const ptime end = start + td; const ptime tTimeWindow = start + tdDataCollection; int i = 0; int switchTime = 0; timeManagement <ptime> tradingWindow; tradingWindow.setPtime(tTimeWindow); //std::cout << tradingWindow.getPtime() << std::endl; while(second_clock::local_time() <= end){ ptime currentTime = second_clock::local_time(); time_duration diff = tradingWindow.getPtime() - currentTime; if(diff.total_seconds() >= 0 && !bTradingIndicator){ std::cout << "Data.) " << currentTime << "|" << tradingWindow.getPtime() << "|" << diff << std::endl; }else{ const ptime tTimeWindow1 = currentTime + tdTrading; tradingWindow.setPtime(tTimeWindow1); bTradingIndicator = true; } if(diff.total_seconds() >= 0 && bTradingIndicator){ std::cout << "Trade.) " << diff << std::endl; }else{ const ptime tTimeWindow2 = currentTime + tdDataCollection; tradingWindow.setPtime(tTimeWindow2); bTradingIndicator = false; } } std::cout << "Start Time: " << start << std::endl; std::cout << "End Time: " << end << std::endl; std::cout << "Time Now: "<< end << std::endl; return 0; } [/code] Regards, Arup *"I don't need to know everything, I just need to KNOW where to find it, when I need it"*. -*Albert Einstein *
participants (1)
-
Sarkar, Arup