Perguntas de um "boneco" - página 234

 
forward666: Sim, preciso de uma visualização

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

Ainda não foi encontrada ajuda para negociação ao vivo - basta tentar abrir e fechar uma posição numa conta de demonstração.

 
Boris.45: Boa tarde, estimados comerciantes! Por favor, ajudem um programador novato. Escrevi um bloco de programas usando fractais durante vários períodos de tempo para procurar canais móveis (SK) de Borispolz e comecei a escrever algoritmos para abertura de posições. Esta situação sugere o seguinte: é necessário trabalhar em prazos seleccionados na pesquisa e cálculo de parâmetros SK, enquanto a decisão de colocar encomendas ou posições em aberto deve ser feita em prazos muito pequenos. Aconselhar como organizar o programa de modo a que o bloco para calcular os parâmetros SK funcione apenas nos prazos seleccionados, por exemplo H1 e H4, e o bloco para tomar decisões sobre a colocação de encomendas funcione no prazo M1. Não encontrei soluções para isso nos artigos.

Obrigado pela vossa atenção.

Estou bastante longe dos fractais, mas aqui ficam algumas considerações gerais. Podemos tentar da forma mais simples: criar um indicador que calcule "parâmetros SK" em H4. Depois deixe o nosso Consultor Especialista verificar este indicador a cada vez que se verifica e tomar decisões sobre a colocação de encomendas.
 
Yedelkin:

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

Para negociação ao vivo ainda não encontrei qualquer ajuda - basta tentar abrir e fechar uma posição numa conta de demonstração.

Obrigado! Vou tentar!

Mas eu só preciso dele para visualização numa conta de demonstração)

 
forward666: Mas eu só preciso dele para visualização numa conta de demonstração)
Se não funcionar com uma conta de demonstração, escreva-me.
 
Yedelkin:
Se não funcionar com uma conta demo, avisem-me.
Ok! Vou tentar esta noite e apresentar um relatório!
 
forward666:

Mas eu só preciso dele para visualização numa conta de demonstração)


A partir da história, pode puxar o rato para o gráfico (com o shifter - todos eles).

!!! Com um controlador irá repor as definições do gráfico.
 

O que há de errado com o código?

Os gráficos estão bem, no testador surge o erro "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:

O que há de errado com o código?

Os gráficos estão bem, no testador surge o erro "Array Out Of Range".


Loop vai até i<rates_total.Then there is Buffer[ i+1] .

Buffer[rates_total] Não existe tal coisa. O último índice é rates_total-1.

 
lazarev-d-m:

O que há de errado com o código?

Os gráficos estão bem, no testador surge o erro "Array Out Of Range".


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


O laço vai até i<rates_total.Then there is Buffer[ i+1] .

Buffer[rates_total] Não existe tal coisa. O último índice é rates_total-1.

Mudou para isto

i<rates_total-1
Parece funcionar