flakac

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

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?

Sdílet příspěvek


Adresa příspěvku
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

Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby
Tu velikost bufferu jsem zkoušel.
Je to poněkud lepší ale po volání market depth se mi to odpojí, a následně mi to ten marketdepth nenačítá i přesto že data_maint je údajně O.K

Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby
flakaci

volate market depth - len pre jeden symbol?? Lebo je tam tusim obmedzenie na max 2-3 symboly MD (pozor neviem ci sa to nescita takze ak mate napr BT s MD tak to treb apripocitat), a 100 symbolov na real data. S volanim 1ks MD som nemal problem.


BORCO

Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby
A co tam jako konkretne posilate ?

API je postavene tak, ze kdyz se neco pokaka tak se to automaticky odpoji.
Vetsionou na to staci nejaka chybka v zadani prikazu. Tipuji, ze mate v requestMktDept
nejakou chybu v parametrech.

Sdílet příspěvek


Adresa příspěvku
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||

Sdílet příspěvek


Adresa příspěvku
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

Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby
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

Sdílet příspěvek


Adresa příspěvku
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

Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby
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

Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby
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


Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby
Dejvid:nejspíš vám nepomůžu,ale také by mě to zajímalo,překládal jsem to jak jsem mohl,ale kloudného výsledku jsem se nedobral(a to se dokonce už učím 4měsíce anglicky:),má to u vás nějaký vliv na funkčnost,třeba na exekuci signálů,nebo nějaké jiné problémy?

Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby
@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.

Sdílet příspěvek


Adresa příspěvku
Sdílet pomocí služby

Pokud chcete odpovídat, musíte se přihlásit nebo si vytvořit účet.

Pouze registrovaní uživatelé mohou odpovídat

Vytvořit účet

Vytvořte si nový účet. Je to snadné!

Vytvořit nový účet

Přihlásit se

Máte již účet? Zde se přihlašte.

Přihlásit se