Topics

Forum Topics not found

Replies

#EOL
12 Jan 2018, 15:11

you can use Request For Positions (MsgType(35)=AN) (section 5.4.9 in the spec)


@#EOL

#EOL
27 Dec 2017, 14:42

RE: RE: RE:

#EOL said:

You should receive full book without any depth limitation

I mean the full book that is stored on a server. The same book you can see in cTrader desktop application

Not the global-world true-ECN book with five hundred tiers on each side


@#EOL

#EOL
27 Dec 2017, 14:39

RE: RE:

svanharmelen said:

So if you can confirm that the initial response contains the current book 

Indeed

svanharmelen said:

the initial response contains the current book (with max depth of 4 or 5 I believe

You should receive full book without any depth limitation


@#EOL

#EOL
27 Dec 2017, 14:34

With OrderMassStatusRequest you can receive only those orders that yet to be executed: LIMIT and STOP with OrdStatus NEW (39=0)

Meanwhile, a single opened position could be result of executing thousands orders and with current Spotware FIX implementation there is no way to receive any of them, unles you know each one's ClOrdID.

Could you please clarify what you want to do, maybe there is an easier workaround


@#EOL

#EOL
27 Dec 2017, 12:41

You can assume that within a single X-message you will receive quotes related to the only one symbol and sort them out by tag 55 (Symbol)

 

And I agree with you, it's kind of odd to require MDReqID to be specified and never return it back.

You can send a dozen of Maket Data Requests with a unique MDReqID each but for the same symbol, and and you will receive the same amount of quotes as you would get sending the only one Maket Data Request


@#EOL

#EOL
21 Dec 2017, 17:34

Take a look into section "6.3. Market Data Request" of the spec

It seems, you can subscribe for full refresh (type W) only for spots (top of the book)

For full book only incremental refresh is supported. With the first response message you should receive initial full book snapshot and with the next ones you should receive incremental refreshes.

Here is the same example in FIX parcer: https://goo.gl/QxPbqR

Just after subscription server responds with a set of quotes with IDs, stored in tag 278 (MDEntryID). All they are new (MDUpdateAction tag 279 is 0) and should be stored somehow in your application

Next message contains some new quotes (tag 279 is 0) and MDEntryIDs of previous quotes that are no longer valid (tag 279 is 2). So you should add new quotes and delete outdated quotes from your application


@#EOL

#EOL
14 Dec 2017, 16:29

what application do you use?

does it provide and FIX log?

can you share them?


@#EOL

#EOL
13 Dec 2017, 12:23

You can have as many connections as you need, just use unique SenderSubID (tag 50) for every outgoing message in one session


@#EOL

#EOL
15 Nov 2017, 12:50

since cTrader is ClickOnce based the path will change

so I would suggest another way:

1. Locate the shortcut of the cTrader instance you want to run (for public demo it sould on your desctop and start menu %appdata%\Microsoft\Windows\Start Menu\Programs\Spotware cTrader)

2. Open the shortcut in notepad by drag-and-drop to opened notepad window

3. Copy the URL (for public demo it will be http://spotware.ctrader.com/xTrader.application)

4. Open command line and run 

"C:\Program Files\internet explorer\iexplore.exe" http://spotware.ctrader.com/xTrader.application

or

start iexplore http://spotware.ctrader.com/xTrader.application

This will run ClickOnce application as you open it through the shortcut


@#EOL

#EOL
15 Nov 2017, 11:42

/forum/fix-api/11612


@#EOL

#EOL
18 Aug 2017, 18:34

Agree with the tag order.

Also, if you use any FIX framework, check it's log. Probably you receive Reject message that is suppressed by it.


@#EOL

#EOL
07 Aug 2017, 15:23

well... test it, this is the only way :)

But keep in mind that according to the latest Spotware's FIX API specification whatever value you put in TimeInForce, it will be ignored and redefined according to Spotware's order flow: IOC for market orders, GTC for pendings without expiration timestamp, GTD for pendings with expiration timestamp


@#EOL

#EOL
07 Aug 2017, 11:14

RE:

michael00 said:

EOL about your kind of order, is that a pending order or the execution is immediate like in a Market order ?

Theoretically it is a pending order, but if requested price already satisfies market it will be sent for execution immediate. Otherwise it will be stored for pending execusion and will be expired at specified expiration time.

By setting expiration timestamp close to sending timestamp you give the server no choice other than execute an order immediate or cancel it.

Of cause if Spotware support IOC/FOK for limit orders it would be much easier to maintain this


@#EOL

#EOL
04 Aug 2017, 16:53

Hi michael00,

You can use Limit order with small expiration timeout and minimum acceptable price. Thus, the order will be either filled with execution price not worse than specified or expired/cancelled if the price is unavailable.


@#EOL

#EOL
14 Jun 2017, 11:20

Hi sand,

You should interpret positions like a way to aggregate orders volume. Every order has a position, there are no standalone orders, they are just assigned to another position you can find in PosID in {OrdStatus=NEW, ExecType=NEW} execution report.

I think theoretically your problem could be solved on your side but it needs some development from Spotware. Spotware should add somehow open position volume in {OrdStatus=FILLED, ExecType=TRADE} execution report and extend Order Mass Status Request (MsgType(35)=AF) to have a possibility to filter by PosID.

So, in case you received some filled execution report with zero open position volume, you request all the pending orders left assigned to this position and cancel them one by one.

Similar flow to amend volume of artificial stoploss and take profit: receive filled execution report with non-zero open position volume, request pending orders for the position, cancel and put new ones if the volume is different


@#EOL

#EOL
06 Jun 2017, 12:09

RE: RE:

j.tarno said:

That is from cTrader FIX Engine documentation. Does it meant the description is wrong?

Instead of FOK or IOC I could use 126 ExpireTime. Using this tag - is the order pulled when the server time is bigger than time in tag 126?

 

the description is correct.

If you want to send a market order (tag 40 = 1) you should specify IOC time in force (tag 59 = 3). Both tags are required.

If you want to send stop order or limit order (tag 40 = 3 or tag 40 = 2) you should specify GTC time in force (tag 59 = 1).

If you want to send stop order or limit order with expiration (tag 40 = 3 or tag 40 = 2) you should specify GTD time in force (tag 59 = 6) and expiration timestamp of some moment in the future in ExpireTime (tag 126).


@#EOL

#EOL
01 Jun 2017, 15:54 ( Updated at: 21 Dec 2023, 09:20 )

RE:

#EOL said:

There are no such order types like FOK or IOC. This is Time In Force (tag 59).

The types (tag 40) are Market, Limit, Stop, etc.

As you can see in 4.4.4, currently supported values for Time In Force are IOC, GTC and GTD with the following restrictions:


@#EOL

#EOL
01 Jun 2017, 15:52

There are no such order types like FOK or IOC. This is Time In Force (tag 59).

The types (tag 40) are Market, Limit, Stop, etc.

As you can see in 4.4.4, currently supported values for Time In Force are IOC, GTC and GTD with the following restrictions:

<style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-72gw{background-color:#9a0000;vertical-align:top}
.tg .tg-qpvr{background-color:#009901;vertical-align:top}
</style>
<table class="tg">
  <tr>
    <td class="tg"></td>
    <td class="tg">IOC</td>
    <td class="tg">GTC</td>
    <td class="tg">GTD</td>
  </tr>
  <tr>
    <td class="tg">Market</td>
    <td class="tg-qpvr"></td>
    <td class="tg-72gw"></td>
    <td class="tg-72gw"></td>
  </tr>
  <tr>
    <td class="tg">Stop</td>
    <td class="tg-72gw"></td>
    <td class="tg-qpvr"></td>
    <td class="tg-qpvr"></td>
  </tr>
  <tr>
    <td class="tg">Limit</td>
    <td class="tg-72gw"></td>
    <td class="tg-qpvr"></td>
    <td class="tg-qpvr"></td>
  </tr>

 


@#EOL

#EOL
31 May 2017, 10:06 ( Updated at: 21 Dec 2023, 09:20 )

Well... It has nothing with FIX protocol but anyway

As far as I see, "(PUBLIC BETA)" in the header means that you downloaded cAlgo that connects to Spotware's public demo server, while you should download cAlgo, branded and configured for your broker. Just contact your broker for download link or go to cTrader/cTrader Web and find it by yourself under Links->cAlgo


@#EOL

#EOL
09 May 2017, 12:22

have you checked this thread?

/forum/fix-api/11447


@#EOL