Primer consejo, el codigo debe meterse en formato codigo al escribir el mensaje en el foro, hay una pestañita para esto, quedaria algo así:
// Simple orden de compra // Cuando el cierre es mayor a la apertura, compra // Stop de 300 y profit de 150 // PRIMER PASO //Abrir librería y clase // Librería Trade, para poder abrir órdenes #include<Trade\Trade.mqh> // Declaramos clase CTrade CTrade trade; //SEGUNDO PASO: //En void ontick, hacemos lo siguiente: //le pedimos que obtenga el precio de compra //creamos una array para guardar los precios //le decimos desde donde calcular la array //Llenamos el array con el dato del precio //Ya podemos establecer condiciones de compra o venta void OnTick() { //Obtenemos precio de COMPRA double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK), _Digits); //Creamos un array para los precios, le llamamos priceinfo MqlRates PriceInfo[]; //Le pedimos que calcule el array desde la vela corriente en adelante ArraySetAsSeries(PriceInfo,true); //Llenamos el array con el dato del precio int PriceData= CopyRates(_Symbol,_Period,0,3,PriceInfo); // condición para comprar... // Si el cierre de vela 1 es menor que su apertura... if (PriceInfo[1].close > PriceInfo[1].open) // y... //El número de posiciones abiertas es cero if (PositionsTotal()==0) { trade.Buy ( 0.10, //lotes NULL, //Par actual Ask, //A qué precio Ask-1000*_Point, //Qué stop loss Ask+500*_Point, //Qué take profit NULL //Comentario, opcional ); //Establecemos el trailing stop, usando como punto de referencia el precio, Ask CheckTrailingStop(Ask); //PRIMER ERROR QUE ME MARCA } //creamos la variable CheckTrailingStop, de tipo decimal. void CheckTrailingStop(double Ask) { //Establecemos que el stop sigua al precio a una distancia de 150 puntos. //En este caso, 150 pips por debajo, es compra double SL=NormalizeDouble(Ask-150*_Point); //Le pedimos que revise si hay más posicones abiertas y, de ser así, modificarlas también //Mira todas las posicones y, si i es mayor a cero, resta una cada vez for (int i=PositionsTotal()-1; i>=0; i--) //Nos aseguramos de que la posición pertenece al par correcto con positiongetsymbol de i { string symbol=PositionGetSymbol(i); //si el símbolo del actual par es igual al símbolo de nuestra posicion... if (_Symbol==Symbol) { //Obtener el ticket de la posicion... ulong PositionTicket=PositionGetInteger(POSITION_TICKET); //Ahora calculamos el stop loss actual double CurrentStopLoss=PositionGetDouble(POSITION_SL); } } } }
Luego, es necesario especificar que tipo de error te esta dando, si es al compilar el codigo o si es al ejecutar el EA, y copiar o hacer una captura de que error es, si quieres que alguien te entienda.
Otro tema a tener en cuenta es que la gente de aqui es probable que no te pueda o tenga tiempo de ayudarte en tu problema, si realmente quieres aprender y solucionarlo vas a tener que recurrir a la documentación de mql5, bajarte el Manual.pdf y buscar y aprender ahi que esta todo super bien explicado.
Esos son los consejillos que se me ocurre darte.
Por último, dices que eres nuevo? pues bienvenido company.
Saludos.
Primer consejo, el codigo debe meterse en formato codigo al escribir el mensaje en el foro, hay una pestañita para esto, quedaria algo así:
Luego, es necesario especificar que tipo de error te esta dando, si es al compilar el codigo o si es al ejecutar el EA, y copiar o hacer una captura de que error es, si quieres que alguien te entienda.
Otro tema a tener en cuenta es que la gente de aqui es probable que no te pueda o tenga tiempo de ayudarte en tu problema, si realmente quieres aprender y solucionarlo vas a tener que recurrir a la documentación de mql5, bajarte el Manual.pdf y buscar y aprender ahi que esta todo super bien explicado.
Esos son los consejillos que se me ocurre darte.
Por último, dices que eres nuevo? pues bienvenido company.
Saludos.

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Hola,
Estoy aprendiendo por mi cuenta mql5 y he hecho un pequeño asesor experto pero, me salen unos errores que no sé como solucionar
¿Alguien me podría ayudar a dar con la solución?
El primer error me sale en la línea 52 donde tengo esto:
" //Establecemos el trailing stop, usando como punto de referencia el precio, Ask
CheckTrailingStop(Ask);"
Este es el código que he escrito:
// Simple orden de compra
// Cuando el cierre es mayor a la apertura, compra
// Stop de 300 y profit de 150
// PRIMER PASO
//Abrir librería y clase
// Librería Trade, para poder abrir órdenes
#include<Trade\Trade.mqh>
// Declaramos clase CTrade
CTrade trade;
//SEGUNDO PASO:
//En void ontick, hacemos lo siguiente:
//le pedimos que obtenga el precio de compra
//creamos una array para guardar los precios
//le decimos desde donde calcular la array
//Llenamos el array con el dato del precio
//Ya podemos establecer condiciones de compra o venta
void OnTick()
{
//Obtenemos precio de COMPRA
double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK), _Digits);
//Creamos un array para los precios, le llamamos priceinfo
MqlRates PriceInfo[];
//Le pedimos que calcule el array desde la vela corriente en adelante
ArraySetAsSeries(PriceInfo,true);
//Llenamos el array con el dato del precio
int PriceData= CopyRates(_Symbol,_Period,0,3,PriceInfo);
// condición para comprar...
// Si el cierre de vela 1 es menor que su apertura...
if (PriceInfo[1].close > PriceInfo[1].open)
// y...
//El número de posiciones abiertas es cero
if (PositionsTotal()==0)
{
trade.Buy
(
0.10, //lotes
NULL, //Par actual
Ask, //A qué precio
Ask-1000*_Point, //Qué stop loss
Ask+500*_Point, //Qué take profit
NULL //Comentario, opcional
);
//Establecemos el trailing stop, usando como punto de referencia el precio, Ask
CheckTrailingStop(Ask); //PRIMER ERROR QUE ME MARCA
}
//creamos la variable CheckTrailingStop, de tipo decimal.
void CheckTrailingStop(double Ask)
{
//Establecemos que el stop sigua al precio a una distancia de 150 puntos.
//En este caso, 150 pips por debajo, es compra
double SL=NormalizeDouble(Ask-150*_Point);
//Le pedimos que revise si hay más posicones abiertas y, de ser así, modificarlas también
//Mira todas las posicones y, si i es mayor a cero, resta una cada vez
for (int i=PositionsTotal()-1; i>=0; i--)
//Nos aseguramos de que la posición pertenece al par correcto con positiongetsymbol de i
{
string symbol=PositionGetSymbol(i);
//si el símbolo del actual par es igual al símbolo de nuestra posicion...
if (_Symbol==Symbol)
{
//Obtener el ticket de la posicion...
ulong PositionTicket=PositionGetInteger(POSITION_TICKET);
//Ahora calculamos el stop loss actual
double CurrentStopLoss=PositionGetDouble(POSITION_SL);
}
}
}
}
Esto es todo.
Agradezco cualquier sugerencia para mejorar mi mql5
Gracias!