Jump to content
Co nového? Mé kurzy
Komunita:
Diskuze Sledované příspěvky Žebříčky

Je tady někdo kdo stejně jako já válčí s IB API?


flakac

Doporučené příspěvky

Před časem jsem si založil účet u IB, koupil interface na Matlab od Gloriosie (www.gloriosia.com) no a teď to rozjíždím. No a s hrůzou zjišťuji, že to není vůbec žádná legrace, a že se stejně asi budu muset naučit Javu. Řeším takové situace jako že spojení je OK., ale data se neobnovují, po requst na MarketDepth se TWS odpojí od IB, a podobné jobovky. Tak se chci zptat jestli náhodou někdo neděláte něco podobného. Děláte někdo s IB API a Javou?

Link to comment
Sdílet pomocí služby

Ja valcim s IB API - ale s c :)). AKo som pisal v inom vlakne BOHUZIAL zverejnene API - neumoznuje reconect - respektive umoznuje - ale len reconect medzi casou aplikaciou a TWS - nie medzi TWS a IB :(( . Takze na toto Vam java nepomoze tak isto ako c, visual basic a podobne. Mozno nejaka nedokumentovana funkcia?? SKuste este to nastavenia velkosti buffru.

BORCO

Link to comment
Sdílet pomocí služby

No.. používám Matlab interface od Gloriosie, už jsem jim poslal co mi to dělá, ať se k tomu vyjádří.
Nicméně pošlu to i sem.
Nemyslím si že bych měl chybu v parametrech

reqMktDepth(1,'EUR.USD','CASH','IDEALPRO','',0,'','','EUR.USD');
reqMktDepth(2,'USD.JPY','CASH','IDEALPRO','',0,'','','USD.JPY');
#MKTDEP |14:54:20:405| 1|EUR.USD|CASH|IDEALPRO|0.0|||
#MKTDEP |14:54:20:405| 2|USD.JPY|CASH|IDEALPRO|0.0|||
CCLOSED |14:54:41:921| CEST Monday, October 09, 2006||
CCLOSED |14:54:41:921| CEST Monday, October 09, 2006||
#CONNCT |14:54:41:936| 127.0.0.1|7496|0||
Server Version:30
TWS Time at connection:20061009 14:52:28 CET
NEXTOID |14:54:41:936| 1||
MESSAGE |14:54:41:936| -1|2104|Market data farm connection is OK:hkfarm||
MESSAGE |14:54:41:936| -1|2104|Market data farm connection is OK:usfarm||
MESSAGE |14:54:41:936| -1|2104|Market data farm connection is OK:usfuture||

Link to comment
Sdílet pomocí služby


reqMktDepth(1,'EUR.USD','CASH','IDEALPRO','',0,'','','EUR.USD');

nevim jaka je tohle metoda. predpokladam, ze je to metoda toho matlab konektoru, protoze
v API ktere pouzivam ji nemam. Nevim tudiz, ktery parametr je co, ale nevidim tam nikde currency.

zkuste to "nakrmit" podle techto parametru:

ticker.id=1
contract.symbol=EUR
contract.local.symbol=EUR.USD
contract.currency=USD
contract.exchange=IDEALPRO
contract.security.type=CASH
Link to comment
Sdílet pomocí služby

  • 1 year later...

Mám vytvořený program v C#, který mi zadává vstup do vertikálních opčních spreadů pomocí TWS API. Když však zadám vstup pomocí svého programu, tak mám komisi pro otevření kreditního spreadu na 100 kontraktů QQQQ 350 USD. Když to ovšem zadám ručně v TWS, tak mám komisi 150. To je značný rozdíl. Setkali jste se někdo s takto rozdílnými komisemi? Znáte někdo důvod?

Kód je následující:

// Bear Call Spread (kreditní spekulace na pokles)
// Pojišťovací opce Call 47 která vyprší 18. dubna 2008
ComboLeg CL47 = new ComboLeg();
CL47.ConId = 48570229;
CL47.Ratio = 1;
CL47.Action = ActionSide.Buy;
CL47.Exchange = "CBOE";
CL47.OpenClose = 0;

// Vypsaná opce Call 46 která vyprší 18. dubna 2008
ComboLeg CL46 = new ComboLeg();
CL46.ConId = 48570224;
CL46.Ratio = 1;
CL46.Action = ActionSide.Sell;
CL46.Exchange = "CBOE";
CL46.OpenClose = 0;


Contract OptContr = new Contract((int)334);
OptContr.Symbol = "QQQQ";
OptContr.Exchange = "CBOE";
OptContr.SecurityType = SecurityType.Bag;
OptContr.ComboLegs.Clear();
OptContr.ComboLegs.Add(CL47);
OptContr.ComboLegs.Add(CL46);

Order OptOrder = new Order();
OptOrder.Action = ActionSide.Buy;
OptOrder.OutsideRth = false;
OptOrder.OrderType = OrderType.Market;
OptOrder.TotalQuantity = 100;

int orderId = NextOrderId;
NextOrderId += 1;


if (client.Connected == true)
{
System.Windows.Forms.MessageBox.Show("Jsi připojený, proto můžeme umístit příkaz na trh");
try {
client.PlaceOrder(orderId, OptContr, OptOrder);
}
catch(System.Exception ex)
{
System.Windows.Forms.MessageBox.Show("Nastala výjimka při umisťování příkazu na trh: " + ex.ToString() );
}
}
else
{
System.Windows.Forms.MessageBox.Show("Nejsi připojený. Nejdříve se musíš připojit a až potom umisťovat příkazy na trh. Příkaz nebyl podán");
}


Program používá knihovny API TWS Krs.Ats.IBNet, které je možné stáhnout z www.dinosaurtech.com/utilities

Laďa

Link to comment
Sdílet pomocí služby

Pavle,
rozhodoval jsem se, do kterého vlákna to zařadit. Protože spíše předpokládám, že jsem v kódu nenastavil nějaký příznak, o kterém nevím, že bych jej měl nastavit, tak jsem zvolil toto vlákno. Součástí mého příspěvku je totiž i kód využívající API s odkazem na zdroje. Myslím si, že tyto informace mohou obohatit čtenáře tohoto vlákna, i když se příspěvek tematicky dotýká i jiných vhodných vláken.
Dělali jste někdo takový program? Já to mohu řešit klidně tak, že programově otevřu každou nohu zvlášť, tím bych se sice dostal na stejné poplatky, ale zase bych se okradl o možnost zadávat limitní příkazy.

Laďa

Link to comment
Sdílet pomocí služby

  • 2 týdny později...

Předchozí kód podával příkaz, který byl směřovaný na konkrétní burzu a to je dražší, než příkaz bez určení burzy. Kód, který přikládám nyní již neurčuje, kam je příkaz směrovaný a tak za stejný pokyn jako v předchozím kódu je poplatek jen 150 USD. Kódy jsou si velmi podobné, jenom se změnil název burzy na SMART, ale zejména jsem musel přidat řádek s určením měny USD. Bez zadání měny USD v SMART příkazu Interactive Brokes vrací hlášení o chybě zadaného obchodovaného titulu, což je značně zavádějící, když ho tam máte číslem ConID jednoznačně určený. Přijít na takovou drobnost mi trvalo hodně dlouho, tak si na to dejte pozor. Kód je následující:

// Bear Call Spread (kreditní spekulace na pokles)
// Pojišťovací opce Call 47 která vyprší 18. dubna 2008
ComboLeg CL47 = new ComboLeg();
CL47.ConId = 48570229;
CL47.Ratio = 1;
CL47.Action = ActionSide.Buy;
CL47.Exchange = "SMART";
CL47.OpenClose = 0;

// Vypsaná opce Call 46 která vyprší 18. dubna 2008
ComboLeg CL46 = new ComboLeg();
CL46.ConId = 48570224;
CL46.Ratio = 1;
CL46.Action = ActionSide.Sell;
CL46.Exchange = "SMART";
CL46.OpenClose = 0;


Contract OptContr = new Contract((int)334);
OptContr.Symbol = "QQQQ";
OptContr.Exchange = "SMART";
OptContr.SecurityType = SecurityType.Bag;
OptContr.Currency = "USD";
OptContr.ComboLegs.Clear();
OptContr.ComboLegs.Add(CL47);
OptContr.ComboLegs.Add(CL46);

Order OptOrder = new Order();
OptOrder.Action = ActionSide.Buy;
OptOrder.OutsideRth = false;
OptOrder.OrderType = OrderType.Market;
OptOrder.TotalQuantity = 100;

int orderId = NextOrderId;
NextOrderId += 1;


if (client.Connected == true)
{
System.Windows.Forms.MessageBox.Show("Jsi připojený, proto můžeme umístit příkaz na trh");
try {
client.PlaceOrder(orderId, OptContr, OptOrder);
}
catch(System.Exception ex)
{
System.Windows.Forms.MessageBox.Show("Nastala výjimka při umisťování příkazu na trh: " + ex.ToString() );
}
}
else
{
System.Windows.Forms.MessageBox.Show("Nejsi připojený. Nejdříve se musíš připojit a až potom umisťovat příkazy na trh. Příkaz nebyl podán");
}


Laďa

Link to comment
Sdílet pomocí služby

  • 1 year later...

Zdravím všechny,

můžete mi prosím někdo přeložit toto:
The quantity for Fixed Income orders (bond or bills) can be made in units of $1 or $1k.
Set the minimum size increment in Global Configuration on the Display/Ticker Row page. A confirmation message will be displayed for bond orders transmitted through the API, summarizing the order size. To skip this message, deselect "Bypass bond disclaimer for API orders" on the API page of Global Configuration.
Hide until next API release

Projel jsem to translatorem, ale nejsem z toho příliš moudrý.

Dík moc


Link to comment
Sdílet pomocí služby

  • 3 týdny později...

@Dejvid:
Na translator zapomen. Stroj to nema sanci prelozit.

[ital]The quantity for Fixed Income orders (bond or bills) can be made in units of $1 or $1k.
Set the minimum size increment in Global Configuration on the Display/Ticker Row page. A confirmation message will be displayed for bond orders transmitted through the API, summarizing the order size. To skip this message, deselect "Bypass bond disclaimer for API orders" on the API page of Global Configuration.
Hide until next API release [/ital]

Rika ti to, ze mnozstvi pro Fixed Income orders (bond or bills)muzes zadavat jen v celych dolarech nebo desetitisicich dolaru.
Mas si minimalni increment nastavit v Globa Setting na Display/Ticker Row strance. Bude se tio automaticky zobrazovat potvrzovaci zprava pote, co posles prikaz pres API. Muzes to message potlacit kdyz odvyberes "Bypass bond disclaimer for API orders" v API nastavenich (myslim, ze je to taky v global settings).

Tolik asi rychly preklad.

Link to comment
Sdílet pomocí služby

×
×
  • Vytvořit...