Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Como se puede ver en el gráfico del USDCHF de la última semana, Firebird lo está haciendo muy bien en un mercado de rango limitado. Cuando los mercados se convierten en tendencia, Firebird suele tomar decisiones equivocadas. Así que la solución para esto puede ser muy simple: tenemos que salir tan pronto como el marcador se convierta en tendencia y volver cuando el mercado de rango limitado se restablezca.
En Phoenix hay una pieza de código que cuida estos cambios. En resumen, toma los máximos de las últimas 24, 12, 6 y 2 horas y puede decidir cuándo el mercado se convierte en tendencia y cuándo se restablece el rango de mercado.
Excelente trabajo Hendrick, su lluvia de ideas está dando sus frutos, estoy deseando probar Phoenix cuando lo publique.
Aquí puedes ver la diferencia de comportamiento entre Phoenix y Firebird para el USDCHF cuando las cosas se ponen difíciles:
Firebird estaba colocando 3 COMPRAS, todas paradas.
Phoenix está esperando el momento adecuado, hizo 3 VENTAS que todas golpearon el TP.
¿Bueno?Se está acercando mucho ahora
He añadido esto
if ((Safe1!=1)&&(DealTime==2)) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);
}
if (OrderType()==OP_SELL) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);
}
}
}
}
}
En un Back Test veo que cierra las OpenTrades, pero necesito añadir la función de búsqueda de STOPLOSS, porque está cerrando operaciones que tienen GANANCIAS POSITIVAS, cuando las variables Safe1 y DealTime coinciden....
Así que el Stoploss tiene que ser la tercera trampa... La semana que viene enviaré esto una vez que lo tenga funcionando...
Una vez más todo el mundo es la idea de tener algún control sobre las operaciones abiertas existentes durante cuando el mercado se convierte en Volitile ... Si una operación se va a detener, prefiero que se detenga a la mitad y no al 100%. Por lo menos cuando el mercado se recupera usted no tiene mucho para compensar...
GraciasHola Marvin,
Una solución mucho más fácil será cerrar un comercio abierto tan pronto como la señal cambia. ¿Qué opinas?
Hola Marvin, Una solución mucho más fácil será cerrar una operación abierta tan pronto como la señal cambie. ¿Qué opinas?
Hey Hendrick... Cuando usted dice que la señal se refiere a cuando Safe1 y Dealtime valor se convierten en verdad?
Si ese es el caso lo que he visto de backtesting porque el mercado está cerrado en este momento, es que algunas operaciones positivas también se cerraron ... Así que la comprobación de STOPLOSS es la tercera variable para controlar eso
Tengo un código presentado por ELIHAYUN
Mira esto Hendrick ...
void CloseOrder(int ticket,double numLots,double close_price)
{
int CerrarCnt, err;
// intenta cerrar 3 veces
CloseCnt = 0;
while (CloseCnt < 3)
{
if (OrderClose(ticket,numLots,close_price,Slippage,Violet))
{
CloseCnt = 3;
}
si no
{
err=GetLastError();
Print(CloseCnt," Error al cerrar la orden : (", err , ") " + ErrorDescription(err));
if (err > 0) CloseCnt++;
}
}
}
void CloseHalfSL()
{
double LosePercent = 50.0; // 50% del S/L
for(int i=OrdersTotal()-1;i>=0;i--) // escanear todas las órdenes y posiciones...
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != MagicNumber) continuar;
if ( OrderSymbol()==Symbol() )
if (OrderProfit() < 0) // tenemos una operación con pérdidas
{
double prc = Bid;
if (OrderType() == OP_SELL) prc = Ask;
double ord_prc = OrderOpenPrice();
double ord_SL = OrderStopLoss();
int SL_puntos = MathAbs(ord_prc - ord_SL) / Punto;
int Pérdida_real = MathAbs(prc - ord_prc) / Punto;
if ( (Actual_Lose * 100 / SL_points) >= LosePercent) // Demasiada pérdida
{
CloseOrder(OrderTicket(), OrderLots(), prc);
}
}
}
}
/// ---- Comprueba si no es seguro negociar y luego llama a CloseHalfSL
if (NotSafeToTrade) CloseHalfSL();
Ahora estamos más cerca
He añadido esto
if ((Safe1!=1)&&(DealTime==2)) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);
}
if (OrderType()==OP_SELL) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);
}
}
}
}
}
En un Back Test veo que cierra las OpenTrades, pero necesito añadir la función de búsqueda de STOPLOSS, porque está cerrando operaciones que tienen GANANCIAS POSITIVAS, cuando las variables Safe1 y DealTime coinciden....
Así que el Stoploss tiene que ser la tercera trampa... La semana que viene os enviaré esto una vez que lo tenga funcionando...
Una vez más todo el mundo es la idea de tener algún control sobre las operaciones abiertas existentes durante cuando el mercado se convierte en Volitile ... Si una operación se va a detener, prefiero que se detenga a la mitad y no al 100%. Por lo menos cuando el mercado se recupera usted no tiene mucho que compensar...
GraciasEsta podría ser una forma de dejar abiertas las órdenes de GANANCIAS POSITIVAS. Añade "&& OrderProfit()<0" en la línea if(OrderType()".
if ((Safe1!=1)&&(DealTime==2)) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY && OrderProfit()<0) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);
}
if (OrderType()==OP_SELL && OrderProfit()<0) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);
}
}
}
}
}
Wackena
Esta podría ser una forma de dejar abiertas las órdenes de GANANCIAS POSITIVAS. Añadir "&& OrderProfit()<0" en la línea if(OrderType()".
if ((Safe1!=1)&&(DealTime==2)) {
for (int i=TotalPedidos()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY && OrderProfit()<0) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);
}
if (OrderType()==OP_SELL && OrderProfit()<0) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);
}
}
}
}
}
WackenaWackena gracias.. pero he hecho una corrección a nuestra sintaxis
double pBid, pAsk;
if ((Safe1!=1)&&(DealTime==2)) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
if ((OrderType()==OP_BUY)&&(OrderProfit()<0)){
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);
}
if ((OrderType()==OP_SELL)&&(OrderProfit()<0)) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);
}
}
}
}
}
Ok, estoy probando con las adiciones que hice en relación con el manejo de las operaciones abiertas existentes cuando el mercado es volátil...
La única excepción que tengo es... En lugar de TradingHour de 0 - 24
Estoy operando con este patrón:
0 - 7 EST
11 - 24 EST
Lo hago porque quiero asegurarme de que el EA no opere explícitamente durante la apertura de NY... He visto demasiada volitilidad a las 8 - 10 EST
Voy a publicar mis resultados a medida que avanza la semana ... Tenemos algunas noticias que hacen ruido esta semana, veamos que pasa
Acabo de terminar de leer el libro "Bird Watching in Lion Country". No está mal. El último capítulo es útil. También es bastante relevante para la idea de Firebird y Phoenix. La idea no es exactamente la misma, pero sí muy parecida, y se pueden robar fácilmente algunas buenas ideas de ella e implantarlas para convertir a Firebird en un EA impresionante. Si Hendrick, Wackena y los demás desarrolladores de Firebird están interesados en leerlo, háganmelo saber.
Quiero probar Firebird
Hola hendrik,.. Quiero probar la nueva versión de Fire Bird (ya que hay muchas versiones de Firebird). ¿Puede mostrarme por favor, ....
el trabajo duro de los chicos para el desarrollo de Firebird a Phoenix, yo respeto a todos ustedes,...
Gracias
No hay problema con la cuenta real
Cualquiera tiene una cuenta en vivo con InterbankFX
Estoy recibiendo estos errores
2006.06.26 20:10:59 : orden de compra 1.00 USDCHFm apertura a 1.2407 sl: 1.2307 tp: 1.2417 falló [Error común]
¿Significa esto que no permiten EA en las cuentas LIVE?Tengo una cuenta real con IBFX, sin problemas hasta ahora...