gbcbr
asked on
Deals interval
This class send signals to open positions after comparing with some parameters.
public void decisionCenter_EURUSD_S(bo olean bl0)
continue to send signals for opening positions until it get new changed value from one of parameters.
My question is how to limit opening new positions by setting some restrictions by time interval which will be long enough to get new values, let's say 1000L.
If it's need some clarifications, please ask.
Thank you
private static DecisionCenter_EURUSD_S instance =
new DecisionCenter_EURUSD_S();
public static DecisionCenter_EURUSD_S getInstance() {
return instance;
}
public void sellControl(int sell) {
if (sell == 1) {
mflag0s = 1;
} else {
mflag0s = 0;
}
System.out.println(" DC_S EUR/USD sell = " + sell);
System.out.println(" DC_S EUR/USD mflag0s = " + mflag0s);
if (mflag0s == 1) {
sell_mflag0s = "Open";
} else if (mflag0s == 0) {
sell_mflag0s = "Close";
}
FlagControl.getInstance().setTradeSell_EURUSD(sell_mflag0s);
}
public void bControl(int borderS) {
if (borderS == 1) {
mbc = 1;
} else {
mbc = 0;
}
}
public void positionControl(int position) {
if (position == 1) {
mopc = 1;
} else {
mopc = 0;
}
}
public void decisionCenter_EURUSD_S(boolean bl0) throws Exception {
try {
if (bl0 == false && mflag0s == 1 && mbc == 1 && mopc == 1)
side = SideFactory.SELL;
System.out.println(" side " + side);
AlgoTradeMarket_EURUSD.getInstance(null).algoTradeMarket(side);
} catch (Exception ex) {
Logger.getLogger(DecisionCenter_EURUSD_S.class.getName()).log(Level.SEVERE,
null,
ex);
}
}
}
but in view that changing parameters takes some time, methodpublic void decisionCenter_EURUSD_S(bo
continue to send signals for opening positions until it get new changed value from one of parameters.
My question is how to limit opening new positions by setting some restrictions by time interval which will be long enough to get new values, let's say 1000L.
If it's need some clarifications, please ask.
Thank you
ASKER
The problem is that signals bl0 arrive with fixed 1 sec interval, because it's also artificially generated data.
But, most probably, the time taken by inserting and deleting positions takes more than 1 sec, when next value bl0 come it's read still old value of open positions from array list.
My opinion that it's easiest way just to find proper time interval during which completed changes into array list and restrict
this action:
AlgoTradeMarket_EURUSD.get Instance(n ull).algoT radeMarket (side);
during this period.
Most probably it has to be another array list in which we record time of deals and compare them and if interval to previous deal less then n it ignored.
ArrayList al_time = new ArrayList
time = new java.util.Date());
al_time.add(time)
up to here I understand, please advice how to compare next time to previous and put limit 2 sec.
so
if (previous (time) older than current(time) more than 2 seconds) {
AlgoTradeMarket_EURUSD.get Instance(n ull).algoT radeMarket (side);
}
and after delete old value and leave only the last
But, most probably, the time taken by inserting and deleting positions takes more than 1 sec, when next value bl0 come it's read still old value of open positions from array list.
My opinion that it's easiest way just to find proper time interval during which completed changes into array list and restrict
this action:
AlgoTradeMarket_EURUSD.get
during this period.
Most probably it has to be another array list in which we record time of deals and compare them and if interval to previous deal less then n it ignored.
ArrayList al_time = new ArrayList
time = new java.util.Date());
al_time.add(time)
up to here I understand, please advice how to compare next time to previous and put limit 2 sec.
so
if (previous (time) older than current(time) more than 2 seconds) {
AlgoTradeMarket_EURUSD.get
}
and after delete old value and leave only the last
If d1 and d2 are two java.util.Date objects then their difference in milliseconds will be d1.getTime() - d2.getTime(), so
if((d2.getTime() - d1.getTime()) > 2000) will mean that d1 is older by more than 2 second
then you assign the new value to the old,
and you have everything you need.
if((d2.getTime() - d1.getTime()) > 2000) will mean that d1 is older by more than 2 second
then you assign the new value to the old,
and you have everything you need.
ASKER
Ok, but how to define d1.
try {
if (bl0 == false && mflag0s == 1 && mbc == 1 && mopc == 1)
side = SideFactory.SELL;
System.out.println(" side " + side);
d1 = ?????????
d2 = new java.util.Date());
al_time.add(d2)
if((d2.getTime() - d1.getTime()) > 2000) {
AlgoTradeMarket_EURUSD.getInstance(null).algoTradeMarket(side);
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You should actually use "2000L" instaed of "2000", as getTime() returns long value
ASKER
Excellent, hope it will work.
We can check this only on Monday.
Thank you for help.
We can check this only on Monday.
Thank you for help.
You are always welcome.
what is your ultimate goal and what prevents you from monitoring the time when you receive
signals and make necessary decisions based on the time interval.