Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1885

 

Saudações, você poderia me aconselhar sobre um robô, mt5.

Preciso que os índices na matriz coincidam com o valor do deslocamento em relação à barra atual, como nos buffers indicadores.

Como fazer isso?

 
Andrey Sokolov #:

Saudações, você poderia me aconselhar sobre um robô, mt5.

Preciso que os índices na matriz coincidam com o valor do deslocamento em relação à barra atual, como nos buffers indicadores.

Como fazer isso?

ArraySetAsSeries

 
Vitaly Muzichenko #:

ArraySetAsSeries

Isto funciona não apenas em indicadores, mas também em robôs?

 
Andrey Sokolov #:

Isto funciona não só em indicadores, mas também em robôs?

Não conheço seu problema, mas ele vira a matriz

 
Vitaly Muzichenko #:

Não conheço seu problema, mas ele vira a matriz

Precisamos de índices na matriz para coincidir com o valor de deslocamento em relação à barra atual, como nosbuffers indicadores.

Você precisa dos valores do índice para combinar com os castiçais após o aparecimento de novos castiçais, como nos indicadores.

 
Andrey Sokolov #:

Precisamos de índices na matriz para coincidir com o valor de deslocamento em relação à barra atual, como nosbuffers indicadores.

Você precisa obter os valores do índice para combinar com os castiçais após o aparecimento de novos castiçais, como nos indicadores.

Experimente, deve funcionar

 
Vitaly Muzichenko #:

Experimente, deve funcionar.

Não funciona assim. Eu escrevo 300 no índice 0, quando um novo castiçal aparece deveria ser 300 no índice 1, mas não.

#property strict

int bars;
double arr[];

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   bool series = ArraySetAsSeries(arr, true);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[0] = 300;

   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        int res = ArrayResize(arr, bars);
   }
   
   Comment(TimeCurrent(), "  ", bars, "  ", arr[0], "  ", arr[1], "  ", arr[2], "  " , arr[3]);
}//+------------------------------------------------------------------+

Posso me escrever "deslocamento" de toda a matriz no laço em novos castiçais, mas a linguagem para trabalhar com os gráficos, provavelmente, há algo padrão.

 
Andrey Sokolov #:

não funciona assim. Escrevo 300 no índice 0, quando uma vela nova aparece deveria ser 300 no índice 1, mas não é.

Posso me escrever "deslocamento" de toda a matriz no laço em novos castiçais, mas na linguagem para trabalhar com gráficos, provavelmente, há algo padrão.

Ele vira, mas não adianta.

#property strict

int bars;
double arr[]={};

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[res-1] = 300;
   ArraySetAsSeries(arr, true);
   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
static int res;
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        res = ArrayResize(arr, bars);
   }
   
   Print(res, "  ", arr[0], "  ", arr[1], "  ", arr[2]);
}//+------------------------------------------------------------------+

Precisa ser preenchido de outra forma

 
Andrey Sokolov #:

não funciona assim. Escrevo 300 no índice 0, quando uma vela nova aparece deveria ser 300 no índice 1, mas não é.

Eu mesmo posso escrever "deslocamento" de toda a matriz no laço em novos castiçais, mas na linguagem para trabalhar com gráficos, provavelmente, há algo padrão.

Sim, há um padrão... Adicionar à matriz e remover da matriz. A matriz deve ser dinâmica. Veja na documentação para mais detalhes, não me lembro como estão escritos...

 
Vitaly Muzichenko #:

Vira tudo, mas não adianta

Precisa ser preenchido de outra forma

não funciona