|
Attention! Read the forum rules carefully before posting a topic.
Submit JForex API bug reports in this forum only. Submit Converter issues in Converter Issues. Off topics are strictly forbidden.
Any topics which do not satisfy these rules will be deleted.
The latest version, this function (getorders() ) is incorrect |
grosskt
|
Post subject: The latest version, this function (getorders() ) is incorrect |
Post rating: 0
|
Posted: Tue 19 Mar, 2019, 07:09
|
|
User rating: 0
Joined: Mon 11 Dec, 2017, 03:30 Posts: 26 Location: China,
|
package COM.Mystrategies; import java.util.*;
import com.dukascopy.api.*; import com.dukascopy.api.IEngine.OrderCommand; import java.text.SimpleDateFormat;
public class GetOrdersTest implements IStrategy { @Configurable("Instrument") public Instrument actinstru = Instrument.USDJPY; @Configurable("Amount") public double OrderAmount = 0.061; private IEngine engine; private IConsole console; private IHistory history; private IContext context; private IIndicators indicators; private IUserInterface userInterface; private final SimpleDateFormat gmtSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public void onStart(IContext context) throws JFException { this.engine = context.getEngine(); this.console = context.getConsole(); this.history = context.getHistory(); this.context = context; this.indicators = context.getIndicators(); this.userInterface = context.getUserInterface(); Set<Instrument> instruments = new HashSet<Instrument>();
instruments.add(actinstru); context.setSubscribedInstruments(instruments, true); }
public void onAccount(IAccount account) throws JFException { }
public void onMessage(IMessage message) throws JFException { }
public void onStop() throws JFException { }
public void onTick(Instrument instrument, ITick tick) throws JFException { } public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException { if (!instrument.equals(this.actinstru)) { return;
} if (period.equals(Period.FIVE_MINS)) { submitTwoOrder(); List<IOrder> tempOrders=this.engine.getOrders(); if(tempOrders.size()>1) { if(tempOrders.get(0)!=null) DeloneOrder(tempOrders.get(0)); } List<IOrder> afterDelOrders=this.engine.getOrders(); int norderNums=afterDelOrders.size(); for(int i=0;i<norderNums;i++) { print(String.format("after del one order --cur ordr label=%s,cur order instru=%s --cur order fill time =%s",afterDelOrders.get(i).getLabel(),afterDelOrders.get(i).getInstrument(),gmtSdf.format(afterDelOrders.get(i).getFillTime()))); } } } public int submitTwoOrder() throws JFException { List<IOrder> curOrders=this.engine.getOrders(); print(String.format("before submit --cur ordr nums=%d",curOrders.size())); if(curOrders.size()<1) { engine.submitOrder("MyMaketBuyOrder_1", actinstru, OrderCommand.BUY, OrderAmount ); engine.submitOrder("MyMaketBuyOrder_2", actinstru, OrderCommand.BUY, OrderAmount ); } curOrders=this.engine.getOrders(); print(String.format("after submit --cur ordr nums=%d",curOrders.size())); int nRetNums=curOrders.size(); return nRetNums; } public boolean DeloneOrder(IOrder specOrder) throws JFException { boolean bRet=true; print(String.format("cur order state--=%s",specOrder.getState())); if(specOrder.getState()== IOrder.State.FILLED) { specOrder.close(); specOrder.waitForUpdate(1000); } List<IOrder> curOrders=this.engine.getOrders(); print(String.format("after del order --cur ordr nums=%d",curOrders.size())); return bRet; } private void print(Object o) { console.getOut().println(o); } } console print message :
Attachments: |
getordernums--error.png [77.6 KiB]
Downloaded 300 times
|
DISCLAIMER: Dukascopy Bank SA's waiver of responsability - Documents, data or information available on
this webpage may be posted by third parties without Dukascopy Bank SA being obliged to make any control
on their content. Anyone accessing this webpage and downloading or otherwise making use of any document,
data or information found on this webpage shall do it on his/her own risks without any recourse against
Dukascopy Bank SA in relation thereto or for any consequences arising to him/her or any third party from
the use and/or reliance on any document, data or information found on this webpage.
|
|
|
|
|
|
API Support
|
Post subject: Re: The latest version, this function (getorders() ) is incorrect |
Post rating: 0
|
Posted: Tue 19 Mar, 2019, 17:49
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
We were unable to reproduce this issue. Could you provide more info for reproducing? Especially about orders in console log. When and under what condition they were opened? Did you do it manually or by strategy? specOrder.waitForUpdate(1000); It doesn't give you guarantee what after timeout this order will be closed. Closing order may take more than 1000 ms. Instead, it is recommended to use specOrder.waitForUpdate(IOrder.State.CLOSED); Then you can be sure that order will be in closed state after waitForUpdate() method.
|
|
|
|
|
grosskt
|
Post subject: Re: The latest version, this function (getorders() ) is incorrect |
Post rating: 0
|
Posted: Fri 29 Mar, 2019, 09:02
|
|
User rating: 0
Joined: Mon 11 Dec, 2017, 03:30 Posts: 26 Location: China,
|
The steps are as follows: 1) Running strategy program 2)On the platform, after many times of manual work, opening a position, after closing a position, This bug will appear!!!! See the print log : --(note : The currency pair running in the program is USD/JPY. On the platform, if the manually operated currency pair is not USD/JPY, such as: open, EUR/USD or GBP/USD ..., this kind of BUG will appear)
Attachments: |
orderbug.png [87.11 KiB]
Downloaded 309 times
|
DISCLAIMER: Dukascopy Bank SA's waiver of responsability - Documents, data or information available on
this webpage may be posted by third parties without Dukascopy Bank SA being obliged to make any control
on their content. Anyone accessing this webpage and downloading or otherwise making use of any document,
data or information found on this webpage shall do it on his/her own risks without any recourse against
Dukascopy Bank SA in relation thereto or for any consequences arising to him/her or any third party from
the use and/or reliance on any document, data or information found on this webpage.
|
|
|
|
|
|
SMARTFX
|
Post subject: Re: The latest version, this function (getorders() ) is incorrect |
Post rating: 0
|
Posted: Wed 03 Apr, 2019, 21:21
|
|
User rating: 8
Joined: Mon 09 Jun, 2014, 21:07 Posts: 49 Location: Poland, Warsaw
|
Hi Dukascopy support, I confirm, I am encountering exactly the same issue. To reproduce the issue, create a dummy strategy with following implementation of onMessage method. 1) Start the strategy, then 2) start selling or buying eur/usd manually from JForex platform 3) observe the console, you will see that for each new order filled there are two entries with the same ExtID. One of the entry is broken IOrder object. The broken object has null fields. @Override public void onMessage(IMessage message) throws JFException {
for (IOrder order : engine.getOrders()) { System.out.println(order); }
} Please fix ASAP. Best regards, Greg
|
|
|
|
|
API Support
|
Post subject: Re: The latest version, this function (getorders() ) is incorrect |
Post rating: 0
|
Posted: Thu 04 Apr, 2019, 14:48
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
Fix will be available in next platform release.
|
|
|
|
|
mtnfx
|
Post subject: Re: The latest version, this function (getorders() ) is incorrect |
Post rating: 0
|
Posted: Fri 05 Apr, 2019, 21:56
|
|
User rating: 18
Joined: Thu 20 Apr, 2017, 22:42 Posts: 165 Location: Russian Federation,
|
|
|
|
|
|
Pages: [
1
]
|
|
|
|
|