¡Pide! - página 98

 

Ayuda de nuevo

Hola a todos,

He estado trabajando en un EA durante lo que parece una eternidad. Gracias a toda la gente de este hilo por toda la ayuda que me han dado.

Ahora estoy perplejo de nuevo y busco más ayuda. Como todos sabemos, la mayoría de las señales tipo crossover de MA's a Stoch's no funcionan muy bien porque muchas veces se cruza al final del movimiento.

Lo que estoy tratando de hacer es utilizar el estocástico RSI cuando cruza la línea 50 pero sólo en la siguiente barra una vez que el precio ha pasado el alto o el bajo por una cierta cantidad de pips (MinPips). Mi principal problema es que cuando sigo el cruce, si el precio solo alcanza los MinPips en las barras siguientes al cruce pero el cruce se mantiene en la misma dirección.

Estoy tratando de adjuntar una imagen para mostrar lo que estoy tratando de hacer.

El punto #1 está en un cruce de venta pero como el precio nunca pasa el mínimo de esa barra, no se toma ninguna operación (en realidad, me gustaría que cualquier operación anterior permaneciera activa).

El punto 2 está en un cruce de compra, pero el precio sólo pasa el máximo de la barra en la 4ª barra después del cruce y debería tomarse en ese momento. Cualquier orden de venta anterior debería cerrarse en ese momento.

Espero que esto funcione ya que es la primera vez que adjunto una imagen. Pido disculpas de antemano si me he equivocado.

Putz

Archivos adjuntos:
 

Más información

Lo siguiente es mi programación donde CurrDir es la dirección actual y que PrevDir es la dirección anterior por lo que si no es igual, entonces ha habido un cruce.

El problema es que si no se cruza en la barra actual, entonces CurrDir y PrevDir se hacen iguales y nunca pasa de esa barra para ver si llega al ValHigh o ValLow.

Cualquier ayuda se agradecerá.

Putz

if(CurrDir != PrevDir)

{

if(CurrDir == 1)

{

ValHigh = iHigh(Symbol(),Timeframe2,1) + MinPips*Point;

if(Bid >= ValHigh)

{

return(1); //up

}

return (2);

}

if(CurrDir == 2)

{

ValLow = iLow(Symbol(),Timeframe2,1) - MinPips*Point;

if(Ask <= ValLow)

{

return(2);//down

}

return (1);

}

 

Descubierto... creo

Creo que por fin he resuelto mi problema. Ahora son casi las 2:30 de la madrugada y estoy agotado, así que lo comprobaré mañana...

Putz

 

¿Hay alguna forma de cambiar el formato de los datos del archivo de exportación de MT4?

Estoy buscando el ASCII.csv pero necesito que los datos estén en el siguiente formato

1) columnas separadas (sólo necesito: hora, máximo, mínimo y cierre)

2) sólo para las últimas 1000 barras

3) invierte el orden (el último en la parte superior)

4) lo guarda en una carpeta que ya tengo en mi escritorio (¿tal vez una función de búsqueda para seleccionar cuál?)

Gracias de antemano a quien pueda ayudarme.

 

Añadir y eliminar indicadores

¿Se puede escribir un código en un EA para añadir o eliminar un indicador en la plataforma de negociación?

Dave

 

Tengo un gran problema en la gestión de órdenes....

Mi simple entrada EA en X:59......pero tengo múltiples entradas en la misma cruz. Mi pregunta: ¿Es posible comprobar la entrada de tiempo de órdenes y comparar con la nueva orden?

Quiero entrada en x:59 sólo con 1 orden para cross....

¿Alguien puede ayudarme?

 
metastock:
Tengo un gran problema en la gestión de órdenes....

Mi simple entrada EA en X:59......pero tengo múltiples entradas en la misma cruz. Mi pregunta: ¿Es posible comprobar la entrada de tiempo de las órdenes y comparar con la nueva orden?

Quiero entrada en x:59 sólo con 1 orden para cross....

¿Alguien puede ayudarme?

Esta es mi solución, espero que esto pueda ayudar a alguien......

//+------------------------------------------------------------------+

//| Señal Begin(Entry) ||

//+------------------------------------------------------------------+

if (Buy1_1 58 && check_buy==0) Orden = SIGNAL_BUY;

if (Sell1_1 > Sell1_2 && Minute()>58 && check_sell==0) Orden = SEÑAL_VENTA;

si (Minuto()==00) {check_buy=0;}

if (Minute()==00) {check_sell=0;}

//+------------------------------------------------------------------+

//| Fin de la señal

//+------------------------------------------------------------------+

//Compra

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

//if(!IsTrade) {

//Comprobar el margen libre

if (AccountFreeMargin() < (1000 * Lots)) {

Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());

return(0);

}

si (StopLossMode) StopLossLevel = Ask - StopLoss * Point; si no StopLossLevel = 0.0;

si (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; si no, TakeProfitLevel = 0.0;

check_buy=1;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy %W(#" + Magic_Number + ")", Magic_Number, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Orden de COMPRA abierta : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error al abrir la orden de COMPRA : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

// }

}

//Venta

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

//if(!IsTrade) {

//Comprobar el margen libre

if (AccountFreeMargin() < (1000 * Lots)) {

Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());

return(0);

}

si (StopLossMode) StopLossLevel = Oferta + StopLoss * Punto; si no, StopLossLevel = 0,0;

si (TakeProfitMode) TakeProfitLevel = Oferta - TakeProfit * Punto; si no, TakeProfitLevel = 0,0;

check_sell=1;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell %W(#" + Magic_Number + ")", Magic_Number, 0, DeepPink);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Orden de venta abierta : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Error al abrir una orden de VENTA : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

//}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

//+------------------------------------------------------------------+

 

A Metastock

No puedo decir qué es lo que hace que check_buy sea True.

Para limitar a una orden abierta, puede utilizar, antes de la entrada

if (OrdersTotal()==0)

Ser grande

 

Preguntas sobre conocimientos de codificación

¿CUÁNDO quiere usar una variable STATIC - qué problemas puede resolver?

¿CUÁNDO quieres poner algo en la sección INIT() - qué problemas resuelve?

Ser grande

 

No estoy seguro de si esto se ha preguntado antes, pero ¿hay una manera de dibujar una línea en el momento actual +1 hora antes y después de un determinado precio en un EA?

Razón de la queja: