¡Pide! - página 97

 

Sigue habiendo problemas

Hola a todos,

Gracias Big Be por echar un vistazo a mi EA. Mi estocástico RSI está sin el subrayado. Cuando lo probé con, me dio un error. Pero, me di cuenta de algunas cosas.

1) Cuando pruebo el Probador de Estrategias en los marcos de tiempo más bajos, parece funcionar más rápido. Una vez que llego a H1 o más, se pone muy lento. Supongo que es porque tiene que hacer demasiada comprobación en cada tick. ¿Hay algo que se pueda hacer al respecto? Me gustaría optimizarlo para H4 y posiblemente incluso para Daily.

2) Todavía existe el problema de que la primera operación ocurre antes de un cruce real.

3) Cuando miro mis pruebas retrospectivas, parece que se pierden algunas operaciones por completo. ¿Se debe esto a que mis datos son defectuosos/no coinciden? Busqué un lugar donde New Digital explica cómo obtener los datos para el corredor que estamos utilizando por ir a la historia y hacer doble clic en él ... a continuación, la apertura de cada marco de tiempo y la celebración de "Page Up" hasta que llegue al final, pero, no parece ayudar.

La parte del programa que te envié es sólo una parte de 3. Todavía tengo que añadir las otras 3 partes en él. Si no puedo conseguir que el Probador de Estrategias sea más rápido, nunca sabré si es una idea rentable.

Cualquier idea o sugerencia será de gran ayuda.

Saludos,

Putz

 

Estudia lo que hice para un EA de Índice de Calidad de Volatilidad que arreglé, Kiko_v2.

Ver post 319 aquí:

https://www.mql5.com/en/forum/general

Diviértete,

Big Be

 

Vq

Hola Big Be

Gracias por la idea. Voy a trabajar en ello este fin de semana...y si todo funciona fantástico...debería ser rico para el próximo fin de semana...jajaja

Putz

 

Ayuda...por favor

Hola Big Be y todos los programadores,

Big Be, estudié tu EA de volatilidad pero ahora parece que no era mi problema después de todo. Estaba usando IBFX para mi backtesting y no tenía más que problemas. Finalmente me rendí y descargué Alpari y eso funciona mucho mejor.

Por lo menos ahora no tarda días en hacer un backtest en mis EA's. Así que empecé de nuevo y reconstruí mi programa desde cero y no coloca ninguna orden.

El programa es básicamente el EMS Fresh Cross de codersguru pero quiero que se base en el RSI estocástico y cuando el StochRSI cruce la línea 50. He dejado casi todo como por codersguru incluyendo las variables para que sea más fácil aislar el problema.

Creo que el problema está en la función iCustom ya que es básicamente los únicos cambios que he hecho en el programa y no toma ninguna orden. Puede alguien mirarlo y ver si puede encontrar mi error. Llevo dos semanas intentando que esto funcione y me está volviendo loco.

He puesto un par de notas precedidas de //

Gracias

Putz

#property copyright "Putz FX

#property link "http://www.putzfx.com"

//---- input parameters

extern double TakeProfit=130;

extern double StopLoss = 60;

extern double Lots=1;

extern double TrailingStop=30;

extern double TimeFrame= 60;

extern bool ExitOnCross = true;

extern int MagicNumber = 444444;

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

int FreshCross ()

{

//This was added in based on what I could figure from Big Be.

if (Volume[0] != 1) return(0);

//what is the difference between using "Null" or "Symbol()" in iCustom as

//neither one works.

double SEma, LEma,SEmaP, LEmaP;

//The following 4 lines have been changed from the original

SEma = iCustom(Symbol(),PERIOD_H1,"Stochastic RSI",28,55,9,0,0);

LEma = 50;

SEmaP = iCustom(Symbol(),PERIOD_H1,"Stochastic RSI",28,55,9,0,1);

LEmaP = 50;

//Don't work in the first load, wait for the first cross!

//some changes were done to the below two lines as he was comparing the

//return value with the Ask or Bid and Close values

if(SEma>LEma && SEmaP < LEmaP) return(1); //up

if(SEma LEmaP) return(2); //down

return (0); //not changed

}

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

//| Check Open Position Controls |

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

int CheckOpenTrades()

{

int cnt;

int NumTrades; // Number of buy and sell trades in this symbol

NumTrades = 0;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);

if ( OrderSymbol() != Symbol()) continue;

if ( OrderMagicNumber() != MagicNumber) continue;

if(OrderType() == OP_BUY ) NumTrades++;

if(OrderType() == OP_SELL ) NumTrades++;

}

return (NumTrades);

}

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

//| expert start function |

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

int start()

{

//----

int cnt, ticket, total;

double TP;

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

/* if(TakeProfit<10)

{

Print("TakeProfit less than 10");

return(0); // check TakeProfit

}

*/

int isCrossed = 0;

isCrossed = FreshCross ();

total = CheckOpenTrades();

if(total < 1)

{

if(isCrossed == 1)

{

TP = 0;

if (TakeProfit > 0) TP = Ask + TakeProfit * Point;

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,TP,"EMA_CROSS",MagicNumber,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

if(isCrossed == 2)

{

TP = 0;

if (TakeProfit > 0) TP = Bid - TakeProfit * Point;

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,TP,"EMA_CROSS",MagicNumber,0,Black);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

return(0);

}

total = OrdersTotal();

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

//OrderPrint();

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)

{

if(OrderType()==OP_BUY) // long position is opened

{

// should it be closed?

/* REMOVED - Trailling stop only close */

if(ExitOnCross && isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Black); // close position

return(0); // exit

}

/**/

// check for trailing stop

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // go to short position

{

// should it be closed?

/* REMOVED - Trailling stop only close */

if(ExitOnCross && isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Black); // close position

return(0); // exit

}

/* */

// check for trailing stop

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

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

¿Ha verificado que su RSI estocástico toma 3 parámetros de entrada?

(El que he mirado toma 4)

 

que ayuda

Hola Ralph,

Gracias por tu ayuda. El mío tiene dos buffers pero 4 parámetros de entrada. Lo probé con 4 parámetros y no funcionó pero luego lo probé con 2 y conseguí una orden. Ahora sólo tengo que resolver el resto. Gracias por desatascarme.

Putz

 

Pregunta de un novato

post movido aquí: https://www.mql5.com/en/forum

Archivos adjuntos:
buy.jpg  7 kb
 

¿alguien me ayuda?

hola a todos

todos conocen el indicador Pivot_Monday_fixed

necesito algunos cambios en este indicador

quiero sólo la línea de pivote y otras cuatro líneas

2 de color azul Pivot +20 y Pivot + 40

2 de color rojo Pivot - 20 y Pivot - 40

sólo 5 líneas

gracias

Archivos adjuntos:
 

Pregunta tonta

¿Puede alguien decirme la forma más rápida de convertir un archivo mq4 de un EA en un archivo ex4?

Sé que aparece en los archivos de expertos como ex4 después de ejecutar en mt4 una vez, pero ¿es la única manera de hacerlo?

Gracias de antemano

 
fxgrm:
¿Puede alguien decirme la forma más rápida de convertir un archivo mq4 de un EA en un archivo ex4?

Sé que aparece en los archivos de expertos como ex4 después de ejecutar en mt4 una vez, pero ¿es esta la única manera de hacer esto?

Gracias de antemano

Abra su archivo .mq4 en el MetaEditor, luego haga clic en "Compilar" y el archivo .ex4 se crea.