Boost logo

Boost Users :

Subject: [Boost-users] Time management using posix time
From: Sarkar, Arup (sarkar.arup_at_[hidden])
Date: 2011-08-02 23:46:03


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 *



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net