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
Gracias mntiwana y malden. pero ¿por qué tengo que volver a comprar? Pueden enviar estos indicadores en mensajes
Envíe el correo electrónico original con el enlace que recibió cuando compró ese indicador a support@forex-tsd.com y, si todo es correcto, recibirá una versión actualizada.
Bien mlanden. pero el indicador antes de nmc parece interesante que después de nmc . ¿Son sólo mis sensaciones?
Ok mlanden. pero el indicador antes de nmc parece interesante que después de nmc . ¿Son solo mis sensaciones?
Los resultados de la versión "nmc" no cambian en absoluto en comparación con la versión "pre-nmc". "nmc" significa "new metatrader compatible"
todo lo mejor
¿Por qué?
Mladen,
Por favor, ¿puede darme la razón de por qué este ea no funciona.
//----------------------- EA PARÁMETRO
cadena externa
Expert_Name = "---------- Pending Order EA v1",
Expert_Name2 = "---------- Para el precio actual establecer EntryLevel = 0";
extern double
EntryLevel = 1.8600,
Distance = 100,
StopLoss = 50,
TakeProfit = 50,
TrailingStop = 50;
cadena externa
Order_Setting = "---------- Order Setting";
extern int
NumberOfTries = 5,
Slippage = 5,
MagicNumber = 1234;
cadena externa
MM_Parameters = "---------- Money Management";
extern double
Lotes =0,01
extern bool
MM = false, //Utilizar o no la Gestión Monetaria
AccountIsMicro = true; //Utilizar microcuenta o no
extern int
Riesgo = 0; /10%.
extern string
Testing_Parameters= "---------- Back Test Parameter";
extern bool
Show_Settings = true;
//----------------------- VARIABLE GLOBAL
static int
TimeFrame = 0;
cadena
TicketComment = "PendingOrderEA v2",
LastTrade
bool
TradeAllow = true,
EntryAllow = true;
//+------------------------------------------------------------------+
//| función de inicialización del experto ||
//+------------------------------------------------------------------+
int init()
{
//----------------------- GENERAR EL NÚMERO MÁGICO Y EL COMENTARIO DEL TICKET
//----------------------- FUENTE : PENGIE
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());
TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period());
//----------------------- MOSTRAR LA CONFIGURACIÓN DE EA EN EL GRÁFICO
//----------------------- FUENTE : CODERSGURU
if(Show_Settings) subPrintDetails();
si no Comentar("");
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta ||.
//+------------------------------------------------------------------+
int deinit()
{
//----------------------- PREVENIR EL RECUENTO MIENTRAS EL USUARIO CAMBIA EL MARCO DE TIEMPO
//----------------------- FUENTE : CODERSGURU
TimeFrame=Periodo();
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int inicio()
{
doble
// BuyLevel,
SellLevel;
int
cnt,
ticket
total;
//----------------------- Fijar el precio de compra y de venta
if(EntryLevel==0) EntryLevel = Bid;
// BuyLevel = EntryLevel + Distance*Point;
SellLevel = EntryLevel - Distance*Point;
// if((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point)
// {
// Comentario("Precio de entrada o distancia no válidos");
// return(0);
// }
//----------------------- AJUSTAR LOS LOTES SI SE UTILIZA LA GESTIÓN MONETARIA
if(MM) Lotes = subLotSize();
//----------------------- ENTRY
//----------------------- TOTAL DE LA ORDEN EN BASE AL NÚMERO MÁGICO Y AL SÍMBOLO
total = subTotalTrade();
//----------------------- ESTABLECER LA ORDEN SÓLO 1 VEZ
if(TradeAllow)
{
//----------------------- IF NO TRADE
if(total<1 && EntryAllow)
{
ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);
// ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green);
EntryAllow = false;
return(0);
}
if(total==1)
{
subDeleteOrder();
TradeAllow = false;
}
}
//----------------------- SECCIÓN DE TRAILING STOP
if(TrailingStop>0 && subTotalTrade()>0){
total = OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
{
subTrailingStop(OrderType());
return(0);
}
}
}
return(0);
}
//----------------------- END PROGRAM
//+------------------------------------------------------------------+
//| DEFINICIONES DE FUNCIONES
//+------------------------------------------------------------------+
//----------------------- FUNCIÓN DE GESTIÓN DEL DINERO
//----------------------- FUENTE : CODERSGURU
double subLotSize()
{
double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;
if(AccountIsMicro==false) //cuenta normal
{
if(lotMM < 0.1) lotMM = Lotes;
if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
else //microcuenta
{
if(lotMM < 0.01) lotMM = Lots;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
return (lotMM);
}
//----------------------- NÚMERO DE ORDEN BASADO EN EL SÍMBOLO Y LA FUNCIÓN MAGICNUMBER
int subTotalTrade()
{
int
cnt,
total = 0;
for(cnt=0;cnt<TotalOrdenes();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber) total++;
}
return(total);
}
//----------------------- FUNCIÓN DE BORRADO DE PEDIDOS
void subDeleteOrder()
{
int
cnt,
total = 0;
total = OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
{
switch(OrderType())
{
// caso OP_BUYLIMIT :
// case OP_BUYSTOP :
case OP_SELLLIMIT:
case OP_SELLSTOP :
OrderDelete(OrderTicket());
}
}
}
}
//----------------------- FUNCIÓN TRAILING STOP
//----------------------- FUENTE : CODERSGURU
//----------------------- MODIFICADO : FIREDAVE
void subTrailingStop(int Tipo)
{
if(Type==OP_BUY) // se abre la posición de compra
{
if(Bid-OrderOpenPrice()>Punto*TrailingStop &&
OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
if(Type==OP_SELL) // se abre la posición de venta
{
if(OrderOpenPrice()-Ask>Point*TrailingStop)
{
if(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
//----------------------- GENERAR EL NÚMERO MÁGICO EN BASE AL SÍMBOLO Y A LA FUNCIÓN TEMPORAL
//----------------------- FUENTE : PENGIE
//----------------------- MODIFICADO : FIREDAVE
int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)
{
int isymbol = 0;
if (symbol == "EURUSD") isymbol = 1;
else if (symbol == "GBPUSD") isymbol = 2;
else if (symbol == "USDJPY") isymbol = 3;
else if (symbol == "AUDCAD") isymbol = 4;
else if (symbol == "AUDUSD") isymbol = 5;
else if (symbol == "USDCAD") isymbol = 6;
else if (symbol == "EURGBP") isymbol = 7
else if (symbol == "EURJPY") isymbol = 8
else if (symbol == "EURCHF") isymbol = 9
else if (symbol == "EURAUD") isymbol = 10;
else if (symbol == "EURCAD") isymbol = 11
else if (symbol == "GBPUSD") isymbol = 12
else if (symbol == "GBPJPY") isymbol = 13
else if (symbol == "GBPCHF") isymbol = 14;
else if (symbol == "GBPAUD") isymbol = 15
else if (symbol == "GBPCAD") isymbol = 16;
si no, isymbol = 17;
if(isymbol<10) MagicNumber = MagicNumber * 10;
return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame));
}
//----------------------- FUNCIÓN DE COMENTARIO DE IMPRESIÓN
//----------------------- FUENTE : CODERSGURU
void subPrintDetails()
{
string sComment = "";
string sp = "----------------------------------------\n";
string NL = "\n";
sComment = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;
sComment = sComment + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ";
sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";
sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;
sComment = sComment + sp;
Comment(sComment);
}
//----------------------- FUNCIÓN DE VARIABLE BOOLEN A CADENA
//----------------------- FUENTE : CODERSGURU
string subBoolToStr ( valor bool)
{
if(valor) devuelve ("True");
else return ("False");
}
//----------------------- FIN DE LA FUNCIÓN
Gracias de antemano.
Jo
mladen,
Espero que estés bien. El siguiente tiene dos errores de compilación.
mladen, espero que estés bien. lo de abajo tiene dos errores al compilar. amablemente ayuda
candyman752
Pruebe ahora : rstochalert-4tf_1.mq4
Estimado MLADEN,
(mis preguntas son siempre sobre la reparación de ayuda más que la ayuda de codificación)
Tengo una solicitud para entender..... ver en 2 imágenes que he añadido, 1 ª es con 1 error y 2 advertencias relativas a la línea 70 y 72....como se puede ver en la imagen 2 ª, he sustituido y 1 error y 1 advertencia eliminado......mi pregunta es ... es correcto hacer esta manera....y la segunda pregunta sobre la segunda advertencia que todavía está detrás de la línea 80 ... si se deja como es, no hay problema en el funcionamiento?
saludos
mntiwana
Estimado MLADEN,
(mis preguntas son siempre sobre la reparación de ayuda más que la ayuda de codificación)
Tengo una solicitud para entender.....ver en 2 imágenes que he añadido, 1 ª es con 1 error y 2 advertencias relativas a la línea 70 y 72....como se puede ver en la imagen 2 ª, he sustituido y 1 error y 1 advertencia eliminado......mi pregunta es ... es correcto hacer de esta manera....y la segunda pregunta sobre la segunda advertencia que todavía está detrás de la línea 80 ... si se deja como es, no hay problema en el funcionamiento?
saludos
mntiwanamntiwana
asi todo esta bien. hiciste los cambios bien
mntiwana así todo está bien. hiciste los cambios OK
muchas gracias gran jefe por animar a un estudiante curioso.
mis saludos
Mladen,
Por favor, puede darme la razón por la que este ea no funciona.
//----------------------- EA PARÁMETRO
cadena externa
Expert_Name = "---------- Pending Order EA v1",
Expert_Name2 = "---------- Para el precio actual establecer EntryLevel = 0";
extern double
EntryLevel = 1.8600,
Distance = 100,
StopLoss = 50,
TakeProfit = 50,
TrailingStop = 50;
cadena externa
Order_Setting = "---------- Order Setting";
extern int
NumberOfTries = 5,
Slippage = 5,
MagicNumber = 1234;
cadena externa
MM_Parameters = "---------- Money Management";
extern double
Lotes =0,01
extern bool
MM = false, //Utilizar o no la Gestión Monetaria
AccountIsMicro = true; //Usar microcuenta o no
extern int
Riesgo = 0; /10%.
extern string
Testing_Parameters= "---------- Back Test Parameter";
extern bool
Show_Settings = true;
//----------------------- VARIABLE GLOBAL
static int
TimeFrame = 0;
cadena
TicketComment = "PendingOrderEA v2",
LastTrade
bool
TradeAllow = true,
EntryAllow = true;
//+------------------------------------------------------------------+
//| función de inicialización del experto ||
//+------------------------------------------------------------------+
int init()
{
//----------------------- GENERAR EL NÚMERO MÁGICO Y EL COMENTARIO DEL TICKET
//----------------------- FUENTE : PENGIE
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());
TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period());
//----------------------- MOSTRAR LA CONFIGURACIÓN DE EA EN EL GRÁFICO
//----------------------- FUENTE : CODERSGURU
if(Show_Settings) subPrintDetails();
si no Comentar("");
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta ||.
//+------------------------------------------------------------------+
int deinit()
{
//----------------------- PREVENIR EL RECUENTO MIENTRAS EL USUARIO CAMBIA EL MARCO DE TIEMPO
//----------------------- FUENTE : CODERSGURU
TimeFrame=Periodo();
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int inicio()
{
doble
// BuyLevel,
SellLevel;
int
cnt,
ticket
total;
//----------------------- Fijar el precio de compra y de venta
if(EntryLevel==0) EntryLevel = Bid;
// BuyLevel = EntryLevel + Distance*Point;
SellLevel = EntryLevel - Distance*Point;
// if((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point)
// {
// Comentario("Precio de entrada o distancia no válidos");
// return(0);
// }
//----------------------- AJUSTAR LOS LOTES SI SE UTILIZA LA GESTIÓN MONETARIA
if(MM) Lotes = subLotSize();
//----------------------- ENTRY
//----------------------- TOTAL DE LA ORDEN EN BASE AL NÚMERO MÁGICO Y AL SÍMBOLO
total = subTotalTrade();
//----------------------- ESTABLECER LA ORDEN SÓLO 1 VEZ
if(TradeAllow)
{
//----------------------- IF NO TRADE
if(total<1 && EntryAllow)
{
ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);
// ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green);
EntryAllow = false;
return(0);
}
if(total==1)
{
subDeleteOrder();
TradeAllow = false;
}
}
//----------------------- SECCIÓN DE TRAILING STOP
if(TrailingStop>0 && subTotalTrade()>0){
total = OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
{
subTrailingStop(OrderType());
return(0);
}
}
}
return(0);
}
//----------------------- END PROGRAM
//+------------------------------------------------------------------+
//| DEFINICIONES DE FUNCIONES
//+------------------------------------------------------------------+
//----------------------- FUNCIÓN DE GESTIÓN DEL DINERO
//----------------------- FUENTE : CODERSGURU
double subLotSize()
{
double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;
if(AccountIsMicro==false) //cuenta normal
{
if(lotMM < 0.1) lotMM = Lotes;
if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
else //microcuenta
{
if(lotMM < 0.01) lotMM = Lots;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
return (lotMM);
}
//----------------------- NÚMERO DE ORDEN BASADO EN EL SÍMBOLO Y LA FUNCIÓN MAGICNUMBER
int subTotalTrade()
{
int
cnt,
total = 0;
for(cnt=0;cnt<TotalOrdenes();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber) total++;
}
return(total);
}
//----------------------- FUNCIÓN DE BORRADO DE PEDIDOS
void subDeleteOrder()
{
int
cnt,
total = 0;
total = OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
{
switch(OrderType())
{
// caso OP_BUYLIMIT :
// case OP_BUYSTOP :
case OP_SELLLIMIT:
case OP_SELLSTOP :
OrderDelete(OrderTicket());
}
}
}
}
//----------------------- FUNCIÓN TRAILING STOP
//----------------------- FUENTE : CODERSGURU
//----------------------- MODIFICADO : FIREDAVE
void subTrailingStop(int Tipo)
{
if(Type==OP_BUY) // se abre la posición de compra
{
if(Bid-OrderOpenPrice()>Punto*TrailingStop &&
OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
if(Type==OP_SELL) // se abre la posición de venta
{
if(OrderOpenPrice()-Ask>Point*TrailingStop)
{
if(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
//----------------------- GENERAR EL NÚMERO MÁGICO EN BASE AL SÍMBOLO Y A LA FUNCIÓN TEMPORAL
//----------------------- FUENTE : PENGIE
//----------------------- MODIFICADO : FIREDAVE
int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)
{
int isymbol = 0;
if (symbol == "EURUSD") isymbol = 1;
else if (symbol == "GBPUSD") isymbol = 2;
else if (symbol == "USDJPY") isymbol = 3;
else if (symbol == "AUDCAD") isymbol = 4;
else if (symbol == "AUDUSD") isymbol = 5;
else if (symbol == "USDCAD") isymbol = 6;
else if (symbol == "EURGBP") isymbol = 7
else if (symbol == "EURJPY") isymbol = 8
else if (symbol == "EURCHF") isymbol = 9
else if (symbol == "EURAUD") isymbol = 10;
else if (symbol == "EURCAD") isymbol = 11
else if (symbol == "GBPUSD") isymbol = 12
else if (symbol == "GBPJPY") isymbol = 13
else if (symbol == "GBPCHF") isymbol = 14;
else if (symbol == "GBPAUD") isymbol = 15
else if (symbol == "GBPCAD") isymbol = 16;
si no, isymbol = 17;
if(isymbol<10) MagicNumber = MagicNumber * 10;
return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame));
}
//----------------------- FUNCIÓN DE COMENTARIO DE IMPRESIÓN
//----------------------- FUENTE : CODERSGURU
void subPrintDetails()
{
string sComment = "";
string sp = "----------------------------------------\n";
string NL = "\n";
sComment = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;
sComment = sComment + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ";
sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";
sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;
sComment = sComment + sp;
Comment(sComment);
}
//----------------------- FUNCIÓN DE VARIABLE BOOLEN A CADENA
//----------------------- FUENTE : CODERSGURU
string subBoolToStr ( valor bool)
{
if(valor) devuelve ("True");
else return ("False");
}
//----------------------- FIN DE LA FUNCIÓN
Gracias de antemano.
JoJo,
¿Puedes adjuntar el archivo mq4? Es muy difícil probarlo de esta manera