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
hola mladen o cualquiera,
me he dado cuenta de que la plataforma mt4 tiene algunos indicadores por defecto (aunque algunos se repiten en la parte de indicadores personalizados,), pero el código creo que no es exactamente el mismo, cómo recuperar o ver el código de esos indicadores por defecto, muchas gracias por informarme.
hola mladen o cualquier persona, me doy cuenta de que la plataforma mt4 tiene algunos indicadores por defecto (aunque algunos se repiten en la parte de indicadores personalizados,), pero el código creo que no es exactamente el mismo, cómo recuperar o ver el código de los indicadores por defecto, muchas gracias por informarme.
No puede
Esos son indicadores incorporados (ejecutados directamente por la terminal)
parece que los indicadores incorporados son mejores que los de la sesión de indicadores personalizados en función, realmente no hay manera de saber el código de ellos?
Alguien me ha preguntado cómo estoy utilizando el encuadre temporal múltiple desde un único archivo (cuando no es posible llamar a las funciones incorporadas)
Aquí hay un ejemplo simple y algunas explicaciones en él
_____________________________
El indicador adjunto se comporta como 3 indicadores en uno y en el código encontrarán comentarios de lo que se hace y cuando. Espero que esto ayude a algunas personas a aclarar cómo se puede hacer un indicador multitemporal correcto de un solo archivo (que, entre otras cosas, siempre calculará el número correcto de barras, sin asumir cuántas barras en el marco de tiempo objetivo han sido cambiadas).
Así que este simple indicador multi time frame de un solo archivo puede ser fácilmente utilizado como una plantilla para los indicadores multi time frame
hola mladen,
¿sabes si es posible y cómo hacer iStochasticOnArray? cualquier plantilla o fórmulas para hacer eso? gracias por informar.
hola mladen, ¿sabes si es posible y cómo hacer iStochasticOnArray? ¿alguna plantilla o fórmula para hacerlo? gracias por informar.
kenwa
No existe una función incorporada. En estos posts puedes ver cómo se puede escribir una función para hacer eso y cómo se puede utilizar entonces : https://www.mql5.com/en/forum/177239/page34
hola mladen
un poco profundo para mí
e.g.double iStoch(double priceR, double priceH, double priceL, int period, int slowing, int i, int instanceNo=0) ¿se trata de dobles dentro de dobles? ¿este método puede reducir el indexbuffer ocupado dentro del mq4?
este poco extraño para mí de su función:
stoch = iStoch(rsi,rsi,rsi,StoPeriod,StoSlowing,i);
gracias por alguna aclaración.
No sé por qué no acepta el otro archivo wav
Si lo has cambiado en el código debería aceptarlo
Para repetirlo 5 veces deberías colocarlo en un bucle, pero eso podría causar algunos problemas (si el archivo de sonido es demasiado largo)Este es el código que he utilizado (sé muy poco de codificación para saber cómo hacer bucles):
//+-----------------------------------------------------------------
#property copyright "https://www.forex-tsd.com"
#property link "https://www.forex-tsd.com"
#property ventana_gráfica_del_indicador
//-----------------------------------------------------------------
extern int alertsForNotOlderThan = 300;
extern int alertsForMagicNumber = 0;
extern string alertsForSymbol = "";
extern bool alertsOn = true;
extern bool alertsSound = true
extern bool alertsMessage = true
extern bool alertsNotification = false
extern bool alertsEmail = false;
//-------------------------------------------------------
//
//-------------------------------------------------------
//
//
//
//
//
int entradas[];
bool alerted[];
string symbols[];
int tipos[];
int tiempos[];
int init() { return(0); }
int deinit() { return(0); }
int inicio()
{
//
//
// recoge los datos de las órdenes
//
//
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS)) continue;
if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) continue;
if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) continue;
if (alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())) continue;
//
//
//
//
//
for (int k=ArraySize(tickets); k>0; k--)
if (OrderTicket()==tickets[k-1]) break;
si (k==0)
{
int size = ArraySize(tickets)+1;
ArrayResize(tickets,size); tickets = OrderTicket();
ArrayResize(alerted,size); alerted = false;
ArrayResize(symbols,size); symbols = OrderSymbol();
ArrayResize(tipos ,tamaño); tipos = OrderType();
ArrayResize(times ,size); times = OrderOpenTime();
}
}
//
//
// comprueba si alguna orden necesita ser alertada por
//
//
for (i=ArraySize(entradas)-1; i>=0; i--)
{
string type = "";
if (!alerted)
{
alerted = true;
switch (tipos)
{
case OP_BUY : type = "buy"; break;
case OP_SELL : type = "sell"; break;
case OP_BUYSTOP : type = "buy stop"; break
case OP_BUYLIMIT : type = "límite de compra"; break
case OP_SELLSTOP : type = "stop de venta"; break
case OP_SELLLIMIT : type = "límite de venta"; break;
}
doAlert(type+" abierto en : "+TimeToStr(times,TIME_DATE|TIME_SECONDS)+" para "+symbols);
}
}
return(0);
}
//-------------------------------------------------------
//
//-------------------------------------------------------
//
//
//
//
//
void doAlert(string doWhat)
{
cadena mensaje;
mensaje = doWhat;
if (alertsMessage) Alert(message);
if (alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message);
if (alertsNotification) SendNotification("alertas de pedido "+mensaje);
if (alertsSound) PlaySound("hallelujah.wav");
}
pero sólo suena la alerta normal cuando se dispara.
Pensamiento: si no puedo conseguir que el PlaySound cambie, ¿podría codificar en un bucle que reproduzca una breve alerta regular cada 1 segundo durante 10 veces? - al menos eso haría mucho más para despertarme que un solo sonido de alerta regular.......
Gracias
Aquí está el código que he utilizado (sé muy poco acerca de la codificación para saber cómo hacer bucles):
//+-----------------------------------------------------------------
#property copyright "https://www.forex-tsd.com"
#property link "https://www.forex-tsd.com"
#property ventana_gráfica_del_indicador
//-----------------------------------------------------------------
extern int alertsForNotOlderThan = 300;
extern int alertsForMagicNumber = 0;
extern string alertsForSymbol = "";
extern bool alertsOn = true;
extern bool alertsSound = true
extern bool alertsMessage = true
extern bool alertsNotification = false
extern bool alertsEmail = false;
//-------------------------------------------------------
//
//-------------------------------------------------------
//
//
//
//
//
int entradas[];
bool alerted[];
string symbols[];
int tipos[];
int tiempos[];
int init() { return(0); }
int deinit() { return(0); }
int inicio()
{
//
//
// recoge los datos de las órdenes
//
//
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS)) continue;
if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) continue;
if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) continue;
if (alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())) continue;
//
//
//
//
//
for (int k=ArraySize(tickets); k>0; k--)
if (OrderTicket()==tickets[k-1]) break;
si (k==0)
{
int size = ArraySize(tickets)+1;
ArrayResize(tickets,size); tickets = OrderTicket();
ArrayResize(alerted,size); alerted = false;
ArrayResize(symbols,size); symbols = OrderSymbol();
ArrayResize(tipos ,tamaño); tipos = OrderType();
ArrayResize(times ,size); times = OrderOpenTime();
}
}
//
//
// comprueba si alguna orden necesita ser alertada por
//
//
for (i=ArraySize(entradas)-1; i>=0; i--)
{
string type = "";
if (!alerted)
{
alerted = true;
switch (tipos)
{
case OP_BUY : type = "buy"; break;
case OP_SELL : type = "sell"; break;
case OP_BUYSTOP : type = "buy stop"; break
case OP_BUYLIMIT : type = "límite de compra"; break
case OP_SELLSTOP : type = "stop de venta"; break
case OP_SELLLIMIT : type = "límite de venta"; break;
}
doAlert(type+" abierto en : "+TimeToStr(times,TIME_DATE|TIME_SECONDS)+" para "+symbols);
}
}
return(0);
}
//-------------------------------------------------------
//
//-------------------------------------------------------
//
//
//
//
//
void doAlert(string doWhat)
{
cadena mensaje;
mensaje = doWhat;
if (alertsMessage) Alert(message);
if (alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message);
if (alertsNotification) SendNotification("alertas de pedido "+mensaje);
if (alertsSound) PlaySound("hallelujah.wav");
}
pero sólo suena la alerta normal cuando se dispara.
Pensamiento: si no puedo conseguir que el PlaySound cambie, ¿podría codificar en un bucle que reproduzca una breve alerta regular cada 1 segundo durante 10 veces? - al menos eso haría mucho más para despertarme que un solo sonido de alerta regular.......
GraciasPersona77,
Lo que solía funcionar para eso es ir a un gráfico abierto, luego ir a herramientas/opciones/eventos y luego en la alerta simplemente cambiar el wav. al que usted quiere, pero no he hecho esto en un tiempo, así que no estoy seguro si esto todavía funciona, y asegúrese de que el archivo wav que está utilizando está en la carpeta de sonidos.
mrtools - gracias: ¡ha funcionado muy bien!