Preguntas de un "tonto" - página 234

 
forward666: Sí, necesito una visualización

Para las pruebas: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

Todavía no se ha encontrado ayuda para el comercio en vivo - sólo trate de abrir y cerrar una posición en una cuenta de demostración.

 
Boris.45: Buenas tardes, estimados traders! Por favor, ayuden a un programador novato. He escrito un bloque de programa usando fractales para varios marcos de tiempo para buscar canales móviles (SK) de Borispolz y empecé a escribir algoritmos para la apertura de posiciones. Me he enfrentado a una situación cuando el marco de tiempo de las tendencias de movimiento rápido es sólo una o dos barras. Esta situación sugiere lo siguiente: es necesario trabajar en marcos temporales seleccionados en la búsqueda y el cálculo de los parámetros de SK, mientras que la decisión de colocar órdenes o abrir posiciones debe tomarse en marcos temporales muy pequeños. Por favor, aconsejar cómo organizar el programa de tal manera que el bloque para el cálculo de los parámetros SK funciona sólo en los marcos de tiempo seleccionados, por ejemplo, H1 y H4, y el bloque para la toma de decisiones sobre la colocación de órdenes funciona en el marco de tiempo M1. No he encontrado soluciones para que en los artículos.

Gracias por su atención.

Estoy bastante alejado de los fractales, pero he aquí algunas consideraciones generales. Podemos intentarlo de la manera más sencilla: crear un indicador que calcule los "parámetros SK" en H4. A continuación, deje que nuestro Asesor Experto compruebe este indicador en cada tick y tome decisiones sobre la colocación de órdenes.
 
Yedelkin:

Para las pruebas: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

Para el comercio en vivo no he encontrado ninguna ayuda todavía - sólo trate de abrir y cerrar una posición en una cuenta de demostración.

¡Gracias! ¡Lo probaré!

Pero sólo lo necesito para la visualización en una cuenta demo)

 
forward666: Pero sólo lo necesito para la visualización en una cuenta demo)
Si no funciona en una cuenta demo, escríbeme.
 
Yedelkin:
Si no funciona en una cuenta de demostración, hágamelo saber.
¡Bien! ¡Lo probaré esta noche y te informaré!
 
forward666:

Pero sólo lo necesito para la visualización en una cuenta demo)


Desde el historial, se puede tirar del ratón hacia el gráfico (con la palanca de cambios - todo).

¡¡¡!!! Con un controlador se restablecerán los ajustes de la carta.
 

¿Qué pasa con el código?

Los gráficos están bien, en el probador sale el error Array Out Of Range

#property indicator_label1  "LINE"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrGold
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

input int    period   = 10;       //Период усредения
input bool   USE_LIMIT= false;    //вкл/выкл лимитирование
                                  //Заключается в ограничении максимального изменения значения индикатора
input double use_limit= 0.00005;  //Величина
                                  //на которую максимально может измениться индикатор

double         Buffer[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
   //PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- вычисления значений индикатора
//--- calculate the indicator values
   int start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate
//--- if the calculation is made on a previous run of OnCalculate
   if(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations
//--- заполняем индикаторный буфер значениями
//--- fill indicator buffer values
   for(int i=start;i<rates_total;i++)
     {
      Buffer[0]=price[0];
      double delta=(price[i]-Buffer[i])/period;
      if(USE_LIMIT && delta>use_limit)
        {
         delta=use_limit;
        }
      if(USE_LIMIT && delta<-use_limit)
        {
         delta=-use_limit;
        }
      Buffer[i+1]=Buffer[i]+delta;
     }
//--- вернем значение prev_calculated для следующего вызова функции
//--- return the value for the next call of prev_calculated function
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
lazarev-d-m:

¿Qué pasa con el código?

Los gráficos están bien, en el probador sale el error Array Out Of Range


El bucle va hasta i<total de tasas.Entonces hay Buffer[ i+1] .

El último índice es rates_total-1.

 
lazarev-d-m:

¿Qué pasa con el código?

Los gráficos están bien, en el probador sale el error Array Out Of Range


Buffer[i+1] === +1 не делается проверка на выход за массив
 
Karlson:


El bucle va hasta i<total de tasas.Entonces hay Buffer[ i+1] .

El último índice es rates_total-1.

Cambiado a esto

i<rates_total-1
Parece que funciona