Hola a todos.
No he escrito hace tiempo porque he estado trabajando mucho.
Ahora estoy intentando automatizar bien el Ami con IB. Con el Paper de TWS el EUREX no funciona, pero el GLOBEX sí funciona bien, así que estoy probandolo con el EUR de GLOBEX.
He descargado el IB Controller y lo he instalado en una subcarpeta del AMI y después en el código de mi sistema he añadido las siguientes "cosas" (luego las añado para que las podais probar), lo primero que pasa es que tengo que abrir el IB controller manualmente porque no se me abre solocuando abroelAMI con mi sistema cargado, cosa que debería hacer según las instruciones.
Sí que conecta y envía órdenes, pero me envía unas cuantas, empezó enviandounas 30 y ahora he conseguido que envíe 3 ó 4 nada más y a veces símplemente no las envía. Se quedan con un error en en el Controller o simplemente no aparecen.
El caso es que con el leguaje AFL sí que he aprendido a programar algo, pero con los comandos "for" , "if" y "else" no sé muy bien lo que hago. Si me podéis decir dónde aprender algo de esto os lo agradecería, porque en el Help de AMI no pone gran cosa.
El enlace del IB Controller para descargar y las instrucciones es este
http://www.amibroker.com/at/
ya van por la versió 1.0.8
Y añadiendo est al final del código de mi sistema consigo mandar órdenes al Paper de TWS. Por si quereis probarlo.
Saludos, suerte , felices fiestas y feliz año nuevo.
//// IBController //////
ibc = GetTradingInterface("IB");
if( LastValue( Buy ) )
{
// check if we are connected OK
if( ibc.IsConnected() )
{
// check if we do not have already open position on this stock
if(( ibc.GetPositionSize( "6EH6-GLOBEX-FUT" ) <= 0 ) )
{
OrderID = StaticVarGetText("OrderID"+"6EH6-GLOBEX-FUT");
// transmit order
OrderID = ibc.ModifyOrder( OrderID,"6EH6-GLOBEX-FUT", "Buy", 1, "MKT", 0, 0.02, "Day", True );
// store orderID for next run so we know which order to modify
StaticVarSetText("OrderID"+"6EH6-GLOBEX-FUT" , OrderID);
}
}
}
if( LastValue( Short ) )
{
// check if we are connected OK
if( ibc.IsConnected() )
{
// check if we do not have already open position on this stock
if(( ibc.GetPositionSize( "6EH6-GLOBEX-FUT" ) >=0 ))
{
OrderID = StaticVarGetText("OrderID"+"6EH6-GLOBEX-FUT");
// transmit order
OrderID = ibc.ModifyOrder(OrderID,"6EH6-GLOBEX-FUT", "Short", 1, "MKT", 0, 0.02, "Day", True );
// store orderID for next run so we know which order to modify
StaticVarSetText("OrderID"+"6EH6-GLOBEX-FUT" , OrderID);
}
}
}