Automatizar AmiBroker
Automatizar AmiBroker
¿Hay alguna novedad sobre el tema?
Si hace falta trastear con algo para ir avanzando espero vuestros comentarios.
Un saludo.
Si hace falta trastear con algo para ir avanzando espero vuestros comentarios.
Un saludo.
-
- Mensajes: 30
- Registrado: 01 Oct 2004 09:51
AMIBROKER
HOLA:
VEO QUE TU USAS EL AMIBROKER, ME PODIAS ECHAR UNA MANO-
TENGO DESDE HACE POCO EL AMIBROkER CON EL BACkFILL DE IB, Y ESTOY PROBANDOLO PARA A VER SI DEJO EL METASTOCk DEFINITIVAMENTE O NO.
EL CASO ES QUE ME ES DESCONOCIDO Y TENGO UNA DUDA BASICA QUE ES QUE NO CONSIGO VER UN GRAFICO CON MAS ZOOM DE 4-HRS CON INTERVALOS GRANDES INCLUSO DE 15-20 MIN ETCC... COMO SI NO TUVIESE MAS DATOS GUARDADOS.
gracias
VEO QUE TU USAS EL AMIBROKER, ME PODIAS ECHAR UNA MANO-
TENGO DESDE HACE POCO EL AMIBROkER CON EL BACkFILL DE IB, Y ESTOY PROBANDOLO PARA A VER SI DEJO EL METASTOCk DEFINITIVAMENTE O NO.
EL CASO ES QUE ME ES DESCONOCIDO Y TENGO UNA DUDA BASICA QUE ES QUE NO CONSIGO VER UN GRAFICO CON MAS ZOOM DE 4-HRS CON INTERVALOS GRANDES INCLUSO DE 15-20 MIN ETCC... COMO SI NO TUVIESE MAS DATOS GUARDADOS.
gracias
Desconzco lo de las alarmas, ya que uso en todo caso las que trae por defecto la TWS.
Respecto a la amplitud del chart, modifica el parámetro que determina el nº de velas a cargar al abrir el gráfico, lo encontrarás en file - database settings.
Si importas una base de datos de otro programa deberá coincidir el intervalo de relleno de actualización con el intervalo de la base.
s2
Respecto a la amplitud del chart, modifica el parámetro que determina el nº de velas a cargar al abrir el gráfico, lo encontrarás en file - database settings.
Si importas una base de datos de otro programa deberá coincidir el intervalo de relleno de actualización con el intervalo de la base.
s2
Hola,
En Database settings decides cual es ti marco temporal base y cuantos datos vas a coger, independientemente de que luego juegues con la compresión en la vista.
Es decir, si tu en database settings le dices que coja días y 250 barras, te mostrará 250 días en diario, el semanal correspodiente a 250 días, etc...
Si le dices Hourly y 250 barras. te mostrará 250 horas, el diario de esas horas, el semanal de esas horas etc....
Moraleja, ponle un valor de compresión normal(5 mínutos, 15 minutos etc...) y 10K ó 20K barras.
Un saludo.
En Database settings decides cual es ti marco temporal base y cuantos datos vas a coger, independientemente de que luego juegues con la compresión en la vista.
Es decir, si tu en database settings le dices que coja días y 250 barras, te mostrará 250 días en diario, el semanal correspodiente a 250 días, etc...
Si le dices Hourly y 250 barras. te mostrará 250 horas, el diario de esas horas, el semanal de esas horas etc....
Moraleja, ponle un valor de compresión normal(5 mínutos, 15 minutos etc...) y 10K ó 20K barras.
Un saludo.
De momento no hay nada nuevo sobre la automatización, pero en cuanto tenga un rato seguramente lo saque
.

"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."
automatizar
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);
}
}
}
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);
}
}
}
El perro le dijo al hueso:
tú serás duro pero yo no tengo prisa.
tú serás duro pero yo no tengo prisa.
Genial, el problema que yo tenia era que metia el código entre las lineas del sistema. Después de las vacaciones prometo estudiarlo y hacer un tutorial, a ver si consigo hacerlo funcionar en Eurex.
Un saludo
X-Trader
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."
Hola Mr. X
El Paper de IB no funciona con EUREX tendrías que probar con la TWS real y ya te digo que como lo he escrito yo, te puede enviar un montón de operaciones una seguida de la otra, hay que tener cuidado.
Escribí a Judith y me contestó esto:
Lamentablemente, en la actualidad IB no ofrece la posibilidad de negociar en productos de EUREX desde nuestro simulador - Paper TRading.
Por el momento, SOLO puede utilizarlo para productos en EEUU y Canadá
Felices Fiestas!
Judith
Bueno, resulta que a mí me envía más órdenes de las necesarias por algún problema de mi sistema, lo he probado con otro más sencillo, un reverse y funciona muy bien. De todas formas le he puesto "sell" en lugar de "short" en ModifyOrder, porque para mi sistema funciona mejor.
Si quereis probarlo en este sencillo sistema aquí lo teneis, sólo hay que copiarlo y pegarlo, y ya me contareis:
///////////////////////////////////////////Para probar IBController //////////////////////////////////////////////
Ind=Ref(MACD(12,17),-1);
Ind2=MA(Ind,2);
Buy=Cross(Ind,Ind2);
Short=Cross(Ind2,Ind);
Cover=Buy;
Sell=Short;
Plot(Ind,"Ind",colorRed);
Plot(Ind2,"Ind2",colorBlue);
PlotShapes(IIf (Buy,shapeUpArrow,shapeNone),colorGreen,0,Graph0,-12);
PlotShapes(IIf(Short,shapeDownArrow,shapeNone),colorRed,0,Graph0,-12);
//// 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", "sell", 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);
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Saludos, suerte y feliz año nuevo.
El Paper de IB no funciona con EUREX tendrías que probar con la TWS real y ya te digo que como lo he escrito yo, te puede enviar un montón de operaciones una seguida de la otra, hay que tener cuidado.
Escribí a Judith y me contestó esto:
Lamentablemente, en la actualidad IB no ofrece la posibilidad de negociar en productos de EUREX desde nuestro simulador - Paper TRading.
Por el momento, SOLO puede utilizarlo para productos en EEUU y Canadá
Felices Fiestas!
Judith
Bueno, resulta que a mí me envía más órdenes de las necesarias por algún problema de mi sistema, lo he probado con otro más sencillo, un reverse y funciona muy bien. De todas formas le he puesto "sell" en lugar de "short" en ModifyOrder, porque para mi sistema funciona mejor.
Si quereis probarlo en este sencillo sistema aquí lo teneis, sólo hay que copiarlo y pegarlo, y ya me contareis:
///////////////////////////////////////////Para probar IBController //////////////////////////////////////////////
Ind=Ref(MACD(12,17),-1);
Ind2=MA(Ind,2);
Buy=Cross(Ind,Ind2);
Short=Cross(Ind2,Ind);
Cover=Buy;
Sell=Short;
Plot(Ind,"Ind",colorRed);
Plot(Ind2,"Ind2",colorBlue);
PlotShapes(IIf (Buy,shapeUpArrow,shapeNone),colorGreen,0,Graph0,-12);
PlotShapes(IIf(Short,shapeDownArrow,shapeNone),colorRed,0,Graph0,-12);
//// 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", "sell", 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);
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Saludos, suerte y feliz año nuevo.
El perro le dijo al hueso:
tú serás duro pero yo no tengo prisa.
tú serás duro pero yo no tengo prisa.
Hola amigos, estoy sopesando cambiar mis sistemas de VC a amibroker, pero por lo que veo en este hilo parece que es algo complicado el tema.
¿No parece muy sencillo automatizar los sistemas para que trabajen de una forma fiable verdad?.
A ver si alguien que tenga experiencia con esto me puede orientar un poco.
Lo siento EISUKU pero yo por ahora tampoco se de donde sacar un manual para este soft.
Un saludo y gracias si alguien responde.
MartinG.
¿No parece muy sencillo automatizar los sistemas para que trabajen de una forma fiable verdad?.
A ver si alguien que tenga experiencia con esto me puede orientar un poco.
Lo siento EISUKU pero yo por ahora tampoco se de donde sacar un manual para este soft.
Un saludo y gracias si alguien responde.
MartinG.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!