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
Controlar los límites del array especificando una cadena en el código es muy útil. Antes era: divide por cero y mira donde quieras. Y es aún peor si el error no aparece.
¿Podría dar un ejemplo de cómo hacerlo? No he encontrado nada sobre esta función en la documentación.
¡Exactamente! No necesitas hacer nada ahora. Abre la pestaña "expertos" y lee los registros. Si aparece un error, verá un mensaje al respecto. Como:
array fuera de rango....... indicando el número de línea en el código.
Abre la pestaña "expertos" y lee los registros.
Pruebe a cambiar la primera letra del nombre del script/indicador. También he tenido problemas una vez https://www.mql5.com/ru/forum/152533/page2#982156
P.D: bueno, cambia la cadena por char[]
¡Responde, Pavlik!
¡Bien por ti Pavlik!
Tu código ha funcionado de inmediato.
Ahora puede ejecutar el
¡guión!
¡Queda por encajar en el indicador!
¡Su código ha sido insertado en el indicador!
sólo hay un pequeño obstáculo
indicador no quiere reconocer el nombre
del guión. Escribí el nombre en el lugar
desde donde se debe llamar al script.
Todo lo que queda es el guión
¡reconocido!
¿puede ayudarme?
Saludos cordiales
punsa
¡Responde, Pavlik!
¡Eres genial, Pavlik!
¡su código funcionó de inmediato!
ahora puede ejecutar el
¡el guión!
¡Queda por encajar en el indicador!
¡Su código ha sido insertado en el indicador!
sólo hay un pequeño obstáculo
indicador no quiere reconocer el nombre
del guión. Escribí el nombre en el lugar
desde donde se debe llamar al script.
Sólo falta que el guión sea
¡reconocido!
¿puede ayudarme?
Saludos cordiales
Panza
Te ayudaré si lo necesitas
Te ayudaré si necesitas ayuda.
¡Hola, Vinin!
muchas gracias
¡por querer ayudar!
Te envío para que veas cómo la
llamada al guión del compostador
pansa
____________________________________
¡Hola Pavlik!
Me gustaría mostrarte un ejemplo
cómo se organizó la convocatoria del guión
con el compostador, ahora no funciona.
para su revisión
pansa
//+------------------------------------------------------------------+
//|sample_execute_script.mq4 |
//+------------------------------------------------------------------+
#importar "user32.dll"
int RegisterWindowMessageA(string MessageName);
int PostMessageA(int hwnd, int msg, int wparam, string Name);
void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);
#importar
int inicio()
{
int winHandle = WindowHandle( Symbol(), Period() );
//
//
//
if( signal < 0 && trigl==true && buy == true ) {StartScript( winHandle, "SchliesenProfitOrders" ); }
//
//
//
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");
PostMessageA(hWnd, MessageNumber, 16, ScriptName);
if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
}
void ClearConfigDialog()
{
Dormir(100);
keybd_event(13, 0, 0, 0);
}
//
//
//
return(0);
¡Hola, Vinin!
muchas gracias
¡por querer ayudar!
Te envío para que veas cómo la
llamada al guión del compostador
pansa
____________________________________
¡Hola Pavlik!
Me gustaría mostrarte un ejemplo
cómo se organizó la convocatoria del guión
con el compostador, ahora no funciona.
para su revisión
pansa
¿Es realmente difícil hacer clic en el SRC y pegar el código?
Esto debería funcionar bien:
Y no te olvides de las mayúsculas y minúsculas de la primera letra del script, por ejemplo, si el script "test" no empieza, debes probar con "Test".
Respetuosamente, Pavlik ))
Esto debería funcionar bien:
Y no olvides el caso de la primera letra del script, por ejemplo, si el script"test" no se ejecuta, debes probar con "Test".
Saludos, Pavlik )))
¡Hola Pavlik!
Tengo su refinamiento y
trató de poner todo en el indicador
pero el indicador no quiere.
vea lo que puede hacer
¡para que funcione!
Panza
//+------------------------------------------------------------------+
//|AltrTREND_Signal.mq4 |
//| Copyright 2014, MetaQuotes Software Corp.
//|https://www.mql5.com |||
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|AltrTrend_Signal_v2_2_alert.mq4 |
//|Ramdass - Conversión sólo |
//+------------------------------------------------------------------+
#property copyright "Autor - OlegVS, GOODMAN"
#propiedad estricta
#importar "user32.dll"
int RegisterWindowMessageA(uchar &lParam[]);
int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);
#importar
#propiedad ventana_del_gráfica_del_indicador
#property indicator_buffers 2
#property indicator_color1 DeepSkyBlue
#property indicator_color2 OrangeRed
#property indicator_width1 1
#property indicator_width2 1
//---- parámetros de entrada
extern bool Mensaje_alerta=true;
extern int Tiempo_alerta_minutos=60; // ????? ????? ?????????? ???? ??? ? 60 ?????.
extern int K = 30;
extern double Kstop = 0,5;
externo inttern Kperiod = 150;
extern int PeriodADX = 7; //14;
extern int Cuenta de Barras = 100;
//---- buffers
doble val1[];
doble val2[];
doble AlertTime;
//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada|
//+------------------------------------------------------------------+
int init()
{
nombre_corto_de_cadena;
//---- línea indicadora
IndicatorBuffers(1);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,241);
IndicatorBuffers(2);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,242);
SetIndexBuffer(0,val1);
SetIndexBuffer(1,val2);
if(CountBars>=Bars)
CountBars=Barras;
SetIndexDrawBegin(0, Bares - CountBars + PeriodADX );
SetIndexDrawBegin(1, Bares - CountBars + PeriodADX );
//----
return(0);
}
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2|
//+------------------------------------------------------------------+
int inicio()
{
int, shift, counted_bars = IndicatorCounted();
//----
if(counted_bars<0) return(-1);
//----
int i1, i2, t_per;
double Range, AvgRange, smin, smax, SsMax, SsMin, SSP, price;
bool uptrend, old;
//----
if(Bares <=PeriodADX+ 1)
return(0);
//----
for(shift = CountBars - PeriodADX ; shift >= 0; shift--)
{
SSP = MathCeil(Kperiod / iADX(NULL, 0, PeriodADX , PRICE_CLOSE, MODE_MAIN, 1));
Rango = 0;
AvgRange = 0;
for(i1 = shift; i1 <= shift + SSP; i1++)
{
AvgRange = AvgRange + MathAbs(High[i1] - Low[i1]);
}
Rango = AvgRange / (SSP + 1);
//----
SsMax = High[shift];
SsMin = Low[shift];
for(i2 = shift; i2 <= shift + SSP - 1; i2++)
{
precio = Alto[i2];
if(SsMax < precio)
SsMax= precio;
precio = Low[i2];
if(SsMin >= precio)
SsMin = precio;
}
//----
smin = SsMin + (SsMax - SsMin)*K / 100;
smax = SsMax - (SsMax - SsMin)*K / 100;
val1[shift] = 0.0;
val2[shift] = 0,0;
if(Close[shift] < smin)
{
Tendencia alcista = falso;
}
if(Close[shift] > smax)
{
Tendencia alcista = verdadero;
}
if(uptrend != old && uptrend == true)
{
val1[shift] = Low[shift] - Range*Kstop;
}
if(uptrend != old && uptrend == false)
{
val2[shift] = High[shift] + Range*Kstop;
}
antiguo = tendencia alcista;
}
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
{
char buf[];
StringToCharArray("MetaTrader4_Internal_Message", buf;)
int MT4InternalMsg = RegisterWindowMessageA(buf);
StringToCharArray("fPlayer", buf);
SendMessageA(hWnd, MT4InternalMsg, 16, buf);
if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
}
void ClearConfigDialog()
{
Dormir(100);
keybd_event(13, 0, 0, 0);
}
//---- Alerta
if (Period()<Time_alert_minutes) t_per=Period(); else t_per=Time_alert_minutes; // ???? <Time_alert, ????? ????? ?????????? ???? ??? ? ??.
if (Alert_message==true && CurTime()>AlertTime && val1[0]!=0.0)
{
Alert(Symbol(), "+++ ¡Compra! +++" "//AltrTrend_Signal_v2_2_alert ");
AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;
//Reproducir sonido("pago.wav");
fPlayer ;/script
}
if (Alert_message==true && CurTime()>AlertTime && val2[0]!=0.0)
{
Alert(Symbol(), "+++ ¡¡¡Vender !!!+++" "//AltrTrend_Signal_v2_2_alert");
AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;
// Reproducir sonido("pago.wav");
fPlayer ;
}
return(0);
}
//+------------------------------------------------------------------+