|
Attention! Read the forum rules carefully before posting a topic.
Try to find an answer in Wiki before asking a question. Submit programming questions in this forum only. Off topics are strictly forbidden.
Any topics which do not satisfy these rules will be deleted.
Open next order no early than expirationTime period? |
vs_trade
|
Post subject: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Thu 25 Aug, 2011, 14:21
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello World! At my strategy orders open and filled by signal. But sometimes signal wrong and it can be open 2 or 3 wrong position. Please, help me. I need code where previous and next order will compare and if next order open early than previous less then expirationTime, next order must be canceled. I try modified code below but I don't know how getId previous and next orders. { // Close orders if it has been opened than previos order less 5 bars. for (IOrder order : engine.getOrders(selectedInstrument)) { if ((order.getCreationTime()+order.getId(+)) - (order.getCreationTime()+order.getId()) <= expirationTime && order.getState().equals(IOrder.State.OPENED)) { print(currentTime, "Order wrong and therefore was closed: "+order.getId()); order.close(); } } } Thanks advanced 
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Fri 26 Aug, 2011, 07:22
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support team,
Could you check code in post before and correct it. In strategy which I use next order must will open after previous no early than period 5 bar (expiration time), otherwise if order has status Open it must be cancel.
Best wishes, vs_trade
|
|
|
|
 |
API Support
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Fri 26 Aug, 2011, 07:46
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Fri 26 Aug, 2011, 13:25
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Thanks for the answer Support Team,
But OCO it not for my case. In OCO I can cancel one from two orders which was created before.
At my strategy at Period time by conditions strategy is creating LIMIT ORDER, which first OPEN and then FILL at the same Period. At at the next Period strategy check conditions and if it's valid than is creating New LIMIT ORDER, which first OPEN and then FILL at the same period. But with normal conditions it takes few Period time between FILL first order and OPEN second order. When happen that OPEN second order at the next Period after FILL first order generally is FALSE. And for this reason I want filtering this. I seen at CandelStrategy that it has expirationTime for Order. Can I do by the same method comparing CreationTime FILLED previous Order and CreationTime OPENED next Order and if differences between them will be less than expirationTime than Cancel Order with State OPENED?
Hope you can help me.
BR
|
|
|
|
 |
API Support
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Fri 26 Aug, 2011, 16:31
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
See if you can find the following example useful: package jforex.strategies;
import java.util.ArrayList; import java.util.List;
import com.dukascopy.api.*; import com.dukascopy.api.IEngine.OrderCommand;
public class LimitOrderList implements IStrategy {
public Instrument instrument = Instrument.EURUSD; public Period period = Period.TEN_SECS; public double priceDistance = 0.0002; private IEngine engine; private IConsole console; private List<IOrder> orders = new ArrayList<IOrder>(); private List<IOrder> ordersToCancel = new ArrayList<IOrder>(); private int orderCount; @Override public void onStart(IContext context) throws JFException { this.engine = context.getEngine(); this.console = context.getConsole(); }
@Override public void onTick(Instrument instrument, ITick tick) throws JFException { if (ordersToCancel.size() > 0){ for (IOrder order: ordersToCancel){ order.close(); } ordersToCancel.clear(); } } private void print(Object o){ console.getOut().println(o); }
@Override public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException { if(period != this.period || instrument != this.instrument){ return; } //make an order on every bar IOrder order = engine.submitOrder("order" + ++orderCount, instrument, OrderCommand.BUYLIMIT, 0.001, askBar.getClose() - priceDistance); orders.add(order); }
@Override public void onMessage(IMessage message) throws JFException { IOrder order = message.getOrder(); //message arrived about order fill if (order != null && message.getType() == IMessage.Type.ORDER_FILL_OK){ int orderPos = orders.indexOf(order); if (orderPos > 0){ IOrder prevOrder = orders.get(orderPos - 1); print ("Prev order position " + prevOrder + " " + prevOrder.getLabel()); //previous order still has not been filled - we need to cancel it if (prevOrder.getState() == IOrder.State.OPENED || prevOrder.getState() == IOrder.State.CREATED){ //it is not suggested to do order operations in onMessage, //so we make a separate list for cancellable orders and cancel them on next tick print ("add cancel order " + prevOrder.getLabel()); ordersToCancel.add(prevOrder); } } } }
@Override public void onAccount(IAccount account) throws JFException { // TODO Auto-generated method stub }
@Override public void onStop() throws JFException { // TODO Auto-generated method stub }
}
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Mon 29 Aug, 2011, 07:29
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team, Thanks for your answer. I looked it and modified for my strategy. Compiling was without errors, but it not functioning. Send you code which I modified, may you find mistakes. Strategy not accepted package jforex.strategies; and I use package strategy; Can problem be here? //message arrived about order submit if (order != null && message.getType() == IMessage.Type.ORDER_SUBMIT_OK){ int orderPos = orders.indexOf(order); if (orderPos > 0){ IOrder prevOrder = orders.get(orderPos - 1); print ("Current order position " + order + " " + order.getLabel()); long currentTime = prevOrder.getCreationTime(); long expirationTime = currentTime + fixedPeriod.getInterval() * orderExpirationInterval; //current order need to cancel if previous order was filled if (order.getCreationTime() <= expirationTime && prevOrder.getState().equals(IOrder.State.FILLED)){ //it is not suggested to do order operations in onMessage, //so we make a separate list for cancellable orders and cancel them on next tick print ("add cancel order " + order.getLabel()); ordersToCancel.add(order); } } } BR vs_trade
|
|
|
|
 |
API Support
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Mon 29 Aug, 2011, 08:02
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
Please consider logging all of the relevant data (e.g. adding print statements) so that you can see why the particular execution branch gets taken.
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Mon 29 Aug, 2011, 10:21
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team,
How I can see logging all of the relevant data (e.g. adding print statements)?
BR vs_trade
|
|
|
|
 |
API Support
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Mon 29 Aug, 2011, 12:37
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
1) Add before onStart method: @SuppressWarnings("serial") SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") {{ setTimeZone(TimeZone.getTimeZone("GMT"));}}; 2) Adjust your onMessage method in the following way: @Override public void onMessage(IMessage message) throws JFException { IOrder order = message.getOrder(); // message arrived about order submit if (order != null && message.getType() == IMessage.Type.ORDER_SUBMIT_OK) { int orderPos = orders.indexOf(order); if (orderPos > 0) { IOrder prevOrder = orders.get(orderPos - 1); long currentTime = prevOrder.getCreationTime(); long expirationTime = currentTime + fixedPeriod.getInterval() * orderExpirationInterval; print( " current order: " + order + " previous order: " + order + " currentTime " + sdf.format(currentTime) + " expirationTime " + sdf.format(expirationTime) + " order.getCreationTime() <= expirationTime = " + (order.getCreationTime() <= expirationTime) + " prevOrder.getState() = " + prevOrder.getState() ); // current order need to cancel if previous order was filled if (order.getCreationTime() <= expirationTime && prevOrder.getState().equals(IOrder.State.FILLED)) { // it is not suggested to do order operations in onMessage, // so we make a separate list for cancellable orders and cancel them on next tick print("add cancel order " + order.getLabel()); ordersToCancel.add(order); } } } }
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Tue 30 Aug, 2011, 06:31
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team,
I used sample which you sent, but this not work and don't print any messages. May be has some mistake at conditions of comparing Messages? Could you check it?
BR vs_trade
|
|
|
|
 |
API Support
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Tue 30 Aug, 2011, 07:18
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
vs_trade wrote: I used sample which you sent, but this not work and don't print any messages. May be has some mistake at conditions of comparing Messages? Could you check it? We took the excerpt that you had picked out and the rest remained unchanged. Hence, we tried it with the following strategy: package jforex.strategies;
import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.TimeZone;
import com.dukascopy.api.*; import com.dukascopy.api.IEngine.OrderCommand;
public class LimitOrderList2 implements IStrategy {
public Instrument instrument = Instrument.EURUSD; public Period fixedPeriod = Period.TEN_SECS; public int orderExpirationInterval = 1; public double priceDistance = 0.0002; private IEngine engine; private IConsole console; private List<IOrder> orders = new ArrayList<IOrder>(); private List<IOrder> ordersToCancel = new ArrayList<IOrder>(); @SuppressWarnings("serial") SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") {{ setTimeZone(TimeZone.getTimeZone("GMT"));}}; DecimalFormat df = new DecimalFormat("0.0000#"); private int orderCount; @Override public void onStart(IContext context) throws JFException { this.engine = context.getEngine(); this.console = context.getConsole(); }
@Override public void onTick(Instrument instrument, ITick tick) throws JFException { if (ordersToCancel.size() > 0){ for (IOrder order: ordersToCancel){ order.close(); } ordersToCancel.clear(); } } private void print(Object o){ console.getOut().println(o); }
@Override public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException { if(period != this.fixedPeriod || instrument != this.instrument){ return; } //make an order on every bar IOrder order = engine.submitOrder("order" + ++orderCount, instrument, OrderCommand.BUYLIMIT, 0.001, askBar.getClose() - priceDistance); orders.add(order); }
@Override public void onMessage(IMessage message) throws JFException { IOrder order = message.getOrder(); // message arrived about order submit if (order != null && message.getType() == IMessage.Type.ORDER_SUBMIT_OK) { int orderPos = orders.indexOf(order); if (orderPos > 0) { IOrder prevOrder = orders.get(orderPos - 1); long currentTime = prevOrder.getCreationTime(); long expirationTime = currentTime + fixedPeriod.getInterval() * orderExpirationInterval; print( " current order: " + order + " previous order: " + order + " currentTime " + sdf.format(currentTime) + " expirationTime " + sdf.format(expirationTime) + " order.getCreationTime() <= expirationTime = " + (order.getCreationTime() <= expirationTime) + " prevOrder.getState() = " + prevOrder.getState() ); // current order need to cancel if previous order was filled if (order.getCreationTime() <= expirationTime && prevOrder.getState().equals(IOrder.State.FILLED)) { // it is not suggested to do order operations in onMessage, // so we make a separate list for cancellable orders and cancel them on next tick print("add cancel order " + order.getLabel()); ordersToCancel.add(order); } } } }
@Override public void onAccount(IAccount account) throws JFException { // TODO Auto-generated method stub }
@Override public void onStop() throws JFException { // TODO Auto-generated method stub }
}
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Tue 30 Aug, 2011, 12:58
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team, Yes, I see that sample which you review is working, but I can't understand why it's no work on my strategy.  By results of testing my strategy I see that it open one order and the next open on the next period time. Although by Message method it must be close. At which period comes messages? My orders creating on the beginning period 4H. May be differences is here? BR vs_trade
|
|
|
|
 |
API Support
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Tue 30 Aug, 2011, 14:13
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
Please take a look at the following diagram to see what messages arrive in onMessage on what order state changes: https://www.dukascopy.com/wiki/images/8/ ... iagram.pdfAlso see the overview of orders in JForex wiki: https://www.dukascopy.com/wiki/index.php ... s_overviewIf you are still facing some problems, for a more efficient assistance, please provide a full example strategy (i.e. strategy which represents your problem but does not contain any sensitive parts). Also please supply it with comments what you expect it to do and what it actually does.
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Tue 30 Aug, 2011, 15:27
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team,
I checked all again and find where can be problem. After printing relevant data I find some critical points. As you can see below EURUSD1 was create before than EURUSD0 was FILLED, so in this case EURUSD1 wasn't cancel. What you could advise at this situation?
14:03:16 EURUSD1 ORDER_CHANGED_OK at 2009-05-19 21:00:00 Overnight commissions applied 14:03:16 EURUSD0 ORDER_CHANGED_OK at 2009-05-19 21:00:00 Overnight commissions applied 14:03:15 EURUSD1 ORDER_CHANGED_OK at 2009-05-18 21:00:00 Overnight commissions applied 14:03:15 EURUSD0 ORDER_CHANGED_OK at 2009-05-18 21:00:00 Overnight commissions applied 14:03:14 EURUSD2 ORDER_SUBMIT_REJECTED at 2009-05-16 12:00:00 System offline 14:03:14 EURUSD1 ORDER_CHANGED_OK at 2009-05-15 21:00:00 Overnight commissions applied 14:03:14 EURUSD0 ORDER_CHANGED_OK at 2009-05-15 21:00:00 Overnight commissions applied 14:03:14 EURUSD1 ORDER_FILL_OK at 2009-05-15 05:08:24 Order filled 14:03:14 EURUSD1 ORDER_SUBMIT_OK at 2009-05-15 04:00:00 Order submitted 14:03:14 EURUSD0 ORDER_FILL_OK at 2009-05-15 00:05:31 Order filled 14:03:14 EURUSD0 ORDER_SUBMIT_OK at 2009-05-15 00:00:00 Order submitted
but in another period where I solved this problem relevant data is ok. In my strategy expiration time 5 bar 4H.
14:23:35 EURUSD1 ORDER_CHANGED_OK at 2009-08-20 21:00:00 Overnight commissions applied 14:23:35 EURUSD0 ORDER_CHANGED_OK at 2009-08-20 21:00:00 Overnight commissions applied 14:23:35 EURUSD1 ORDER_FILL_OK at 2009-08-20 12:15:24 Order filled 14:23:35 EURUSD1 ORDER_SUBMIT_OK at 2009-08-20 12:00:00 Order submitted 14:23:35 EURUSD0 ORDER_FILL_OK at 2009-08-20 08:01:01 Order filled 14:23:35 EURUSD0 ORDER_SUBMIT_OK at 2009-08-20 08:00:00 Order submitted
BR vs_trade
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Tue 30 Aug, 2011, 15:32
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team,
Sorry at previous post I make mistake and wrong 5 mins filled with 4h submit EURUSD1 ORDER
14:03:14 EURUSD1 ORDER_SUBMIT_OK at 2009-05-15 04:00:00 Order submitted 14:03:14 EURUSD0 ORDER_FILL_OK at 2009-05-15 00:05:31 Order filled 14:03:14 EURUSD0 ORDER_SUBMIT_OK at 2009-05-15 00:00:00 Order submitted
|
|
|
|
 |
API Support
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Wed 31 Aug, 2011, 07:19
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
vs_trade wrote: After printing relevant data I find some critical points. As you can see below EURUSD1 was create before than EURUSD0 was FILLED, so in this case EURUSD1 wasn't cancel. The order was rejected on submission because the market is closed at that time. This is normal system behavior that you can trade only in market hours. vs_trade wrote: What you could advise at this situation? Consider back-testing against weekdays or make your strategy handle market close.
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Wed 31 Aug, 2011, 08:44
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team,
Filter WEEKENDS not help.
In your sample at Message method you call "order" and it's submit to print at relevant data as } //make an order on every bar IOrder order = engine.submitOrder("order" + ++orderCount, instrument, OrderCommand.BUYLIMIT, 0.001, askBar.getClose() - priceDistance); orders.add(order); }
So in your case submitOrder(String label, Instrument instrument, IEngine.OrderCommand orderCommand, double amount, double price) and order = engine.submitOrder
In my strategy it have no direct "order =" and order submit method is submitOrder(String label, Instrument instrument, IEngine.OrderCommand orderCommand, double amount, double price, double slippage, double stopLossPrice, double takeProfitPrice)
and my strategy can't define "order" or may be it's another than call in messages. Can it's be problem?
BR vs_trade
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Wed 31 Aug, 2011, 10:14
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team,
I add definition "order" to strategy and here are result.
Before it was:
// Submitting an order return engine.submitOrder( getLabel(selectedInstrument), this.selectedInstrument, orderCmd, this.amount, price, 0, stopLossPrice, takeProfitPrice);
and results of testing:
09:04:15 EURUSD2 ORDER_FILL_OK at 2009-08-21 16:04:32 Order filled 09:04:15 EURUSD2 ORDER_SUBMIT_OK at 2009-08-21 16:00:00 Order submitted 09:04:15 EURUSD1 ORDER_CHANGED_OK at 2009-08-20 21:00:00 Overnight commissions applied 09:04:15 EURUSD0 ORDER_CHANGED_OK at 2009-08-20 21:00:00 Overnight commissions applied 09:04:14 EURUSD1 ORDER_FILL_OK at 2009-08-20 12:15:24 Order filled 09:04:14 EURUSD1 ORDER_SUBMIT_OK at 2009-08-20 12:00:00 Order submitted 09:04:14 EURUSD0 ORDER_FILL_OK at 2009-08-20 08:01:01 Order filled 09:04:14 EURUSD0 ORDER_SUBMIT_OK at 2009-08-20 08:00:00 Order submitted
After changes:
// Submitting an order IOrder order = engine.submitOrder(getLabel(selectedInstrument), this.selectedInstrument, orderCmd, this.amount, price, 0, stopLossPrice, takeProfitPrice); orders.add(order); return engine.submitOrder(getLabel(selectedInstrument), this.selectedInstrument, orderCmd, this.amount, price, 0, stopLossPrice, takeProfitPrice);
and results of testing:
09:07:02 EURUSD5 ORDER_FILL_OK at 2009-08-21 16:04:32 Order filled 09:07:02 EURUSD4 ORDER_FILL_OK at 2009-08-21 16:04:32 Order filled 09:07:02 EURUSD5 ORDER_SUBMIT_OK at 2009-08-21 16:00:00 Order submitted 09:07:02 EURUSD4 ORDER_SUBMIT_OK at 2009-08-21 16:00:00 Order submitted 09:07:02 current order: OPENED SELLLIMIT 0.02 @ 1.431EURUSD4 previous order: CANCELED SELLLIMIT 0.02 @ 1.42435EURUSD2 currentTime 2009-08-20 12:00:00 expirationTime 2009-08-21 08:00:00 order.getCreationTime() <= expirationTime = false prevOrder.getState() = CANCELED 09:07:02 EURUSD3 ORDER_CHANGED_OK at 2009-08-20 21:00:00 Overnight commissions applied 09:07:02 EURUSD1 ORDER_CHANGED_OK at 2009-08-20 21:00:00 Overnight commissions applied 09:07:02 EURUSD0 ORDER_CHANGED_OK at 2009-08-20 21:00:00 Overnight commissions applied 09:07:02 EURUSD3 ORDER_FILL_OK at 2009-08-20 12:15:24 Order filled 09:07:02 EURUSD2 ORDER_CLOSE_OK at 2009-08-20 12:00:00 Order canceled 09:07:02 EURUSD3 ORDER_SUBMIT_OK at 2009-08-20 12:00:00 Order submitted 09:07:02 EURUSD2 ORDER_SUBMIT_OK at 2009-08-20 12:00:00 Order submitted 09:07:02 add cancel order EURUSD2 at 2009-08-20 12:00:00 Order submitted 09:07:02 current order: OPENED SELLLIMIT 0.02 @ 1.42435EURUSD2 previous order: FILLED SELL 0.02 @ 1.42275EURUSD0 currentTime 2009-08-20 08:00:00 expirationTime 2009-08-21 04:00:00 order.getCreationTime() <= expirationTime = true prevOrder.getState() = FILLED 09:07:02 EURUSD1 ORDER_FILL_OK at 2009-08-20 08:01:01 Order filled 09:07:02 EURUSD0 ORDER_FILL_OK at 2009-08-20 08:01:01 Order filled 09:07:02 EURUSD1 ORDER_SUBMIT_OK at 2009-08-20 08:00:00 Order submitted 09:07:02 EURUSD0 ORDER_SUBMIT_OK at 2009-08-20 08:00:00 Order submitted
It canceled order EURUSD2, but it start open by two the same positions (double order positions).
Where can be problem?
BR vs_trade
|
|
|
|
 |
vs_trade
|
Post subject: Re: Open next order no early than expirationTime period? |
Post rating: 0
|
Posted: Wed 31 Aug, 2011, 10:28
|
|
User rating: 0
Joined: Thu 25 Aug, 2011, 14:04 Posts: 45 Location: Russian Federation,
|
Hello Support Team,
I solved the problem!!!
Right:
// Submitting an order IOrder order = engine.submitOrder(getLabel(selectedInstrument), this.selectedInstrument, orderCmd, this.amount, price, 0, stopLossPrice, takeProfitPrice); orders.add(order); return order;
It is work!!!
Thank you very much for your support a good assistance! You are good Support Team!!!
BR vs_trade
|
|
|
|
 |
|
Pages: [
1
]
|
|
|
|
|