Adiós robot - hola marasmo - página 4

 
Mislaid:

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 podido encontrar nada sobre esta función en la documentación.
 
Andrei01:
¿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.

 
Mislaid:

Abre la pestaña "expertos" y lee los registros.

¿Funciona esto para los indicadores y los guiones?
 
Pavlick:

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

 
pansa:

¡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
 
Todavía hay una trampa muy buena con estas advertencias (al menos la había). La prioridad de las expresiones lógicas ha cambiado. Cuando la prioridad no está definida explícitamente por paréntesis, el compilador sólo da una advertencia, aunque la expresión lógica tiene ahora un efecto completamente diferente al anterior. Debe ser un error. Es posible que alguien haya decidido saltarse las advertencias, y entre ellas hay una advertencia sobre una expresión lógica.
 
Vinin:

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);

 
pansa:

¡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?

//+------------------------------------------------------------------+
//|                                        sample_execute_script.mq4 |
//+------------------------------------------------------------------+
#import "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);
#import

int start()
{
  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()
{
  Sleep(100);
  keybd_event(13, 0, 0, 0);
}
//
//
//
return(0);
 
pansa:

Esto debería funcionar bien:

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
    char buf[];
    StringToCharArray("MetaTrader4_Internal_Message", buf);
    int MT4InternalMsg = RegisterWindowMessageA(buf);
    StringToCharArray(ScriptName, buf);
    SendMessageA(hWnd, MT4InternalMsg, 16, buf);
    if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
}
void ClearConfigDialog()
{
    Sleep(100);
    keybd_event(13, 0, 0, 0);

}

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 ))

 
Pavlick:

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);

}

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

Razón de la queja: