[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 548

 
artmedia70 писал(а) >>
¿Qué es el error 4051 y cómo detectarlo?


https://docs.mql4.com/ru/constants/errors

ERR_INVALID_FUNCTION_PARAMVALUE 4051 Valor no válido del parámetro de la función

 
artmedia70 >>:
А кто сказал, что именно тот кусочек работает неправильно? Если б я выложил весь код - места бы не хватило...
Сначала вызываете на общение, потом в кусты... :)


No. Te sugerí que desmontaras un trozo de código que no funciona. Desmontarlo en todos los detalles. En lugar de eso, has expuesto todo el código. :)

No me voy a esconder en ningún arbusto. >> Cito:

>>Vamos a desmontar línea por línea una parte de tu código que no funciona correctamente...

>> ¿lo hacemos?

Aquí están mis palabras. En lugar de una pieza que no funciona, has sacado un montón de cosas incomprensibles, un conjunto de funciones. Eso es lo que no me gusta.

 

En general, para encontrar un error, es necesario bloquear algunas partes del código. Por ejemplo, el código consta de los siguientes bloques:

- Comprobación en bloque de las señales de trading

- Bloqueo de órdenes de apertura/cierre/inversión

- Bloquear el mantenimiento de las posiciones abiertas.

Bloqueamos los dos últimos bloques utilizando el comentario multilineal /**/, ejecutamos el EA y utilizamos la impresión o la alerta para comprobar los valores de las variables clave, sólo para asegurarnos de que este bloque funciona correctamente. Si nos encontramos con un error, lo arreglamos. A continuación, desbloquee el siguiente bloque de códigos y repita el procedimiento. Y así sucesivamente hasta depurar todo el código. La otra forma sería más tediosa.

 
drknn >>:

Вообще, чтоб найти ошибку, нужно заблокировать некоторые участки кода. Например, код состоит из следующих блоков:

- Блок проверки наличия торгового сигнала

- Блок открытия/закрытия/переворота ордеров

- Блок сопровождения открытых позиций.

Блокируем при помощи многострочного комментария /**/ два последних блока, запускаем советника и с помощью принта или алерта снимаем значения ключевых переменных - просто убеждаемся, что этот блок работает корректно. Если натыкаемся на ошибку, то исправляем её. Затем снимаем блокировку со следующего блока кода и повторяем процедуру. И так далее до тех пор, пока весь код ни окажется отлажен. Другой путь будет более утомителен.

Sí, gracias, ya estoy familiarizado con eso... Estoy un poco falto de conocimientos. Y he publicado todo el código simplemente porque no sé qué parte no funciona. No tiene que ser necesariamente el que se publicó originalmente. Gracias por su participación... :)
 
¿Podría usted por favor aconsejar cómo agregar un indicador en un Asesor Experto para tomar los datos de cf h4?
#property copyright "Krokus"
#property link      ""
//----
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//----
extern int       N=20; // период канала 
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit;
   double upPrice,downPrice;
//---- 
   if (counted_bars==0) limit=Bars-N;
   if (counted_bars>=0) limit=Bars-counted_bars;
   limit--;
   for(int i=limit;i>=0;i--)
     {
      upPrice=High[iHighest(Symbol(),0,MODE_HIGH,N,i)];//максимум за N баров 
      downPrice=Low[iLowest(Symbol(),0,MODE_LOW,N,i)]; //минимум за N баров 
      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
//---- 
   return(0);
  }
//+------------------------------------------------------------------+
 
en el código del examinador, no en la llamada
 
Andrei01 >>:
Скажите, должны ли рисоваться графические объекты советником в тестере не в ценовом окне, а в отдельном? Почему-то это не работает при замене нуля на единицу при создании объекта.

Cree un indicador iCustom vacío con una ventana separada y llámelo desde el EA,

Si no tienes una ventana, entonces das una orden para dibujar, y no hay necesidad de hacerlo.

Lo único a lo que hay que prestar atención es a la escala,

La forma más sencilla es establecer dos buffers con el color de fondo,

En una ventana asignas el máximo y en la otra el mínimo, es cómodo y lo puedes ajustar desde el parámetro externo del indicador.

 
sllawa3 >>:
подскажите пожалуйста как вписать индюк в эксперт чтоб снимал данные с тф н4 ???
for(int i=limit;i>=0;i--)
     {
      int ii=iBarShift(Symbol(), 240, i);//Symbol() или NULL

      upPrice=iHigh( NULL, 240,  iHighest(NULL, 240 ,MODE_HIGH,N, ii) );//максимум за N баров 
      downPrice=iLow( NULL, 240,  iLowest(NULL, 240 ,MODE_LOW, N, ii) ); //минимум за N баров 

      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
para calcular el TF derecho (H4) independientemente del gráfico, algo así
 
esto no funcionará... ¿El límite no está prescrito y cómo prescribirlo?
int    counted_bars=IndicatorCounted();
тоже в эксперте не потянет
 
¡¡¡Barril!!! Las posiciones abiertas son cada una de ellas arrastradas, mientras se cierran en los TP y SL "ajenos"... En consecuencia, es un desastre... ¿Cómo puedo ganar?
Razón de la queja: