Enviar ordenes desde sistema Amibroker a TWS

Foro para tratar todo lo relacionado con AmiBroker y el lenguaje de programación AFL.
Responder
Avatar de Usuario
Amosis
Mensajes: 306
Registrado: 31 Ene 2006 18:02

Enviar ordenes desde sistema Amibroker a TWS

Mensaje por Amosis »

:D
Hola amigos: al fin he comprendido el proceso de enviar ordenes desde Amibroker a TWS.
Ningun sistema (de los que he encontrado) vale para todas las ocasiones, pero algunos son muy utiles para darse una vuelta mientras se queda el "automatico" conectado.
Os cuento el proceso por si a alguno le interesa.
1.- Recivir datos desde TWS a Amibroker:
Una vez bajado e instalado Amibroker (ya esta la version 4.9 en la libreria), se selecciona file/data base settings, y en data source se selecciona "Interactivebrokers data pug in", en local data se marca "enable" y en number of bars se marca "500.000", en base interval "1 minute".
En la TWS se selecciona "Configure"/API se marca "Habilitar active x" y "Permitir ordenes en conexion".
En el chart abierto de Amibroker en el extremo inferior derecho en boton rojo/verde podemos selecionar la long de backfill (permite 30 dias en barras de 1 minuto).
Se nos abre una ventana pidiendonos permiso para conectar, aceptamos y ya recivimos los datos de la TWS en tiempo real en Amibroker.

2.- Conectar Amibroker con TWS:
Debemos usar el programa "Amibroker Auto-trading interface for Interactive Brokers" lo bajamos desde la direccion "http://www.amibroker.com/at/at1011beta.exe"
lo instalamos en el directorio de Amibroker. En la instalacion nos pedira un codigo y nos advertira de que si no lo tenemos podemos rellenar los datos de la ventana( nombre y email) y darle a "enviar" para solicitarlo. Lo hacemos y al miomento nos llega el codigo. Rellenamos la casilla de codigo...y nos felicitamos porque ya esta conectado Amibroker con TWS.

3.-Envio de ordenes a TWS.
En el enlace http://www.amibroker.com/at/at1011beta.exe" hay muchos ejemplos y muy claros. Yo he hecho y comprovado este: En el editor lo copiais o haceis un sistema nuevo y lo insertais en el chart como si fuera un indicador mas....asombrosamente...funciona.
El sistema Compra/vende cuando el cierre Cruza la media de periodo 18.

....y de esta manera: AL FIN PODEMOS HACER SISTEMAS QUE ENVIEN ORDENES DESDE AMIBROKER A TWS.
Saludos.

periodo=18;
Buy= Cross(C,MA(C,periodo));
Sell= Cross(MA(C,periodo),C);
if (LastValue(Buy) )
{
ibc=GetTradingInterface("IB");
//check if we are connected OK
if(ibc.IsConnected() )
{
// check if we dont have already open position on this stock
if(ibc.GetPositionSize("fesx jun 07-dtb-fut" ) ==0)
{
//trasmit order
ibc.PlaceOrder("fesx jun 07-dtb-fut" , "buy",1,"mkt",0,0,"Day",True);
}
}
}

if (LastValue(Sell) )
{
ibc=GetTradingInterface("IB");
//check if we are connected OK
if(ibc.IsConnected() )
{
// check if we dont have already open position on this stock
if(ibc.GetPositionSize("fesx jun 07-dtb-fut" ) == 1)
{
//trasmit order
ibc.PlaceOrder("fesx jun 07-dtb-fut" , "sell",1,"mkt",0,0,"Day",True);
}
}
}


Color=ParamColor("Color",colorRed);
style=ParamStyle("Style",styleLine,maskAll);
arrows= ParamToggle("Display Arrows","No|Yes",1);
Plot(C,"PCompraVenta(1)",colorBlue,Style);
Plot(MA(C,periodo),"PCompraVenta(1)Media",color,style);
if ( arrows)
{
PlotShapes(Buy*shapeUpArrow+Sell*shapeDownArrow,IIf(Buy,colorGreen,colorRed));
}

Avatar de Usuario
strada
Mensajes: 71
Registrado: 18 Nov 2004 14:05

Mensaje por strada »

Hola Amosis,
prueba esta a ver que te parace
http://x-trader.net/phpBB2/viewtopic.php?t=4172

Saludos
El perro le dijo al hueso:
tú serás duro pero yo no tengo prisa.
Avatar de Usuario
Amosis
Mensajes: 306
Registrado: 31 Ene 2006 18:02

Respuesta a Strada

Mensaje por Amosis »

Hola Strada.

Al compilar me da error ese sistema.
He visto que sobra algun parentesis y debe haber alguna cosa mas que no se ve facilmente.

Saludos.
Avatar de Usuario
strada
Mensajes: 71
Registrado: 18 Nov 2004 14:05

Mensaje por strada »

Es verdad, da un error de escritura. Si no me lo dices no me doy cuenta.
Es que estas cosas hay que ponerlas como código, como dice Mr. X.

A ver si así no da error. ...
Nada. Sigue dando el mismo error. Al enviar el mensaje me cambia el script.
Aunque lo escriba por trozos.

También lo subo como archivo por si acaso. (Nada, la extensión .afl no está permitida). Vale, en .rar sí me ha dejado.

Sólo hay que descomprimirlo y abrir el .afl con el AMIBROKER (desde Formula Editor e insertarlo en chart) en una cuenta demo de IB y ver cómo funciona, con el fut del EUR de Marzo.
Estos archivos conviene pasarlos por el antivirus, pero te doy mi palabra de que no tiene ningún código malicioso.

Yo ahora estoy intentando migrar a Linux y empzar a trabajar con el JSystem Trader, a ver si lo consigo; por ahora no he conseguido ni conectarme a Internet, tengo que cambiar el modem. El Vitelcom de timofonica no me vale para Linux. Todo se andará.

Una pregunta:
¿El JSystem trabaja con Ticks?

Saludos
Adjuntos
Prueba controler_2.rar
Es un .afl comprimido
(1.37 KiB) Descargado 227 veces
El perro le dijo al hueso:
tú serás duro pero yo no tengo prisa.
Avatar de Usuario
Amosis
Mensajes: 306
Registrado: 31 Ene 2006 18:02

Mensaje por Amosis »

Hola Strada,
Hora Sí que va.
Mañana lo seguiré en tiempo real.
A ver si lo adaptas para el Eurostoxx que es lo que sigo yo ahora.

Saludos.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 11573
Registrado: 06 Sep 2004 10:18
Contactar:

Mensaje por X-Trader »

Vistos los problemas que da el código AFL pegado directamente en el Foro (debe de ser un tema del phpBB), he habilitado la extensión AFL para que podaís subir archivos en lenguaje Amibroker como adjuntos.

Un saludo
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
strada
Mensajes: 71
Registrado: 18 Nov 2004 14:05

Mensaje por strada »

Hola Amosis
Para usarlo en cualquier otro producto o nº de contratos, sólo tienes que cambiar estas líneas por lo que quieras:

//// IBController //////
Pos=1;
Stop=0.001;
Contrato="6EH7-GLOBEX-FUT";


si quieres abrir 10 contratos a la vez, donde pone Pos, en lugar de 1 pon 10.
si quieres un stop de 4 puntos básicos en Eurostoxx, donde pone stop, en lugar de 0,001 pon 0.04.
y donde pone contrato, pon entre comillas el Ticker que quieras.

Saludos

Grácias Mr. X, siempre ojo avizor (¿se dice así?) ;-)
El perro le dijo al hueso:
tú serás duro pero yo no tengo prisa.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “AmiBroker”