O indicador do sistema Sultonov - página 25

 
Maxim Kuznetsov:

Os negociantes trabalham com o Excel. É como o "papel de tornassol". Se ele não está familiarizado com folhas de cálculo, que tipo de comerciante é ele? Como ele calcula orçamentos e dinheiro?

E se o programador não for capaz de traduzir uma folha de excel para um programa MQL, ele ainda deve praticar :-)

Yusuf está tentando fazer suas observações (mesmo com o raciocínio do qual eu discordo em princípio), mas você está fazendo uma coisa ainda pior - em vez de ajuda básica, você está forçando-o a aprender coisas desnecessárias. E, ao mesmo tempo, todos sabem que ele não iniciará a programação e não transferirá suas fórmulas para o mql. Você apenas zomba e tira meses ou até anos de distância de uma pessoa.

Hm, sim, não consigo imaginar como escrever diretamente para uma folha de excel - ela está sentada sozinha e desenrola o emaranhado - as mesas estão muito intrincadamente entrelaçadas - portanto, terá que gastar tempo para descobrir, e para avaliar o trabalho deve também de acordo com os TOR.

Além disso, novamente pela minha experiência, quando reescrevi o algoritmo do Excel, encontrei erros lógicos, pois pensei adicionalmente no que estava escrevendo - muitas vezes é conveniente fantasiar no Excel.

E, além disso, recomendo anexar o arquivo em si.

Por isso, considero seus argumentos sobre forçar o aprendizado desnecessário como infundado e infundado.

Se você tem as habilidades, por que não pegar e ajudar a pessoa lendo telepaticamente o TOR de sua cabeça à distância?

 

Estou cansado de resolver quebra-cabeças. Faça como se eu tivesse feito uma captura de tela na primeira página com explicações https://www.mql5.com/ru/forum/305148. Para tornar as informações mais digeríveis, faça o cálculo sobre uma história rasa, quanto menos melhor (será muito mais fácil entendê-lo). Se você quiser ajuda, comprima seus rolos de texto, ninguém vai ler um texto grande, muito menos entendê-lo.

Расчет коэффициентов
Расчет коэффициентов
  • 2019.02.28
  • www.mql5.com
Нужно погонать коэффициенты к 1-7 следующим образом: A1*k1+B1*k2=I1 A2*k1+B2*k2=I2 A3*k1+B3*k2+C3*k3=I3 A4*k1+B4*k2+C4*k3+D4*k4=I4 и так далее...
 

Os primeiros valores da série deslocada são os seguintes:

1.1376 1.1377 1.1375 1.1361 1.1358

como você o tem:

x1 x2 x3 x4 y

1.1376 1.1376 1.1377 1.1375 1.1361

Então x1 e x2 são a mesma fila? O que aconteceu com o CD5, que começa em1.1358?
 
Yousufkhodja Sultonov:

Correção

Tire uma foto da tela de toda a tabela calculada.

 
forexman77:

Tire uma foto da tela de toda a tabela calculada.

De preferência, um zip do arquivo Excel e fazer perguntas sobre ele. Caso contrário, isto continuará para sempre. Você vai acabar torturando Yusuf. Bem, ele não pode fazer isso.
 
Yuriy Asaulenko:
É melhor zipar o arquivo excel e fazer perguntas sobre ele. Caso contrário, isto continuará para sempre. Você vai acabar torturando Yusuf. Bem, ele não pode fazer isso.

Bem persuadido, poste um screenshot você mesmo, contribua para o desenvolvimento. Darei uma olhada amanhã.

Que tipo de resposta será o mesmo que uma saudação. Se você não tiver informações claras, não obterá nenhum resultado.

 
forexman77:

Tire uma foto da tela de toda a tabela calculada.

Não se preocupe, o programa agora está totalmente consertado.

 
Yuriy Asaulenko:
É melhor zipar o arquivo Excel e fazer perguntas sobre ele. Caso contrário, isto continuará para sempre. Você vai acabar torturando Yusuf. Bem, ele não pode fazer isso.

Yuri, você também acompanha online?

 
Yousufkhodja Sultonov:

Yuri, você também acompanha online?

Sim, esporadicamente, mas ainda estou convencido de que não é nada, e as explosões do nada são a instabilidade do próprio sistema.
 
Yousufkhodja Sultonov:

Portanto, aqui está o indicador dummy.

Este manequim é um simples indicador MA, por exemplo, mas é adaptado ao seu caso com algumas simplificações que não são ideais em termos de desempenho, mas menos estressantes para a aprendizagem.

Para escrever seu indicador, você só precisa escrever o código de cálculo no corpo da função

void Soltonov(int pos) // основной расчет индикатора бара pos. В массиве X, размерностью 13 находятся значение цены 13 бар, начиная от позиции pos

no momento há um cálculo de MA com o período 13 na forma de 3 linhas.

Por que eu tomei 13 por padrão? Porque você mesmo disse que utiliza 13 valores de preço para o cálculo no momento.

Estes 13 valores estão localizados em uma matriz X (X[0] a X[12])

Você simplesmente executa o cálculo destes 13 valores no corpo desta função e escreve o valor no buffer indicador SoltonovBuffer[pos]. Todo o indicador será formado automaticamente.

//+------------------------------------------------------------------+
//|                                                     Soltunov.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com/ru/users/yosuf"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Soltonov
#property indicator_label1  "Soltonov"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrMagenta
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

//--- indicator buffers
double         SoltonovBuffer[]; // это буфер линии индикатора
double         X[];              // это вспомогательный массив для значений цены
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,SoltonovBuffer,INDICATOR_DATA);  
   ArrayResize(X,13);                      // задаем размер динамического массива X - 13
   ArraySetAsSeries(X,true);               // для удобства обучения устанавливаем индексацию массива как в таймсерии
   ArraySetAsSeries(SoltonovBuffer,true);  // для удобства обучения устанавливаем индексацию массива как в таймсерии
   ArrayInitialize(SoltonovBuffer,EMPTY_VALUE); // инициализируем буфер индикатора пустыми значениями

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   int N=rates_total-prev_calculated;
   if(N>1 && rates_total>12) // если осуществляем первый вход или была задержка больше времени одного бара, выполняем инициализацию всех баров
     {
      for(int i=rates_total-1; i>11; i--)
        {
         ArrayCopy(X,price,0,i-12,13);
         Soltonov(rates_total-1-i);
        }
      ArrayCopy(X,price,0,rates_total-13,13);
      return(rates_total);
     }
   else if(N==1) ArrayCopy(X,price,0,rates_total-13,13);     // если новый бар
   else  X[0]=price[rates_total-1];                          // если новый тик без образования нового бара
   Soltonov(0);
   return(rates_total);
  }
//+------------------------------------------------------------------+
// Писать код в этой функции!
//+------------------------------------------------------------------+
void Soltonov(int pos) // основной расчет индикатора бара pos. В массиве X, размерностью 13 находятся значение цены 13 бар, начиная от позиции pos
                       // X[0]- значение цены бара с номером pos
                       // X[1]- значение цены бара с номером pos+1
                       // ....
                       // X[12]- значение цены бара с номером pos+12
  {
   double Sum=0;                         // создаем переменную для подсчета суммы баров
   for(int i=0;i<13;i++) Sum = Sum+X[i]; // суммируем 13 баров
   SoltonovBuffer[pos]=Sum/13;           // помещаем в значение индикаторного буфера среднее арифметическое 13 цен
  }
//+------------------------------------------------------------------+

A partir do MT5 você pressiona F4 e chega a ME (MetaEditor). Aqui você cria um indicador personalizado (Ctrl+N), especifica um nome durante a criação, por exemplo"Soltunov"(o meu é o padrão). Quando o código for gerado, substitua todo este código pelo meu boneco.

E comece a dominar a programação.

Aconselho a pré-ajustar as barras máximas na janela nas configurações do MT5 para não serem muito grandes (5000 é o suficiente).

Você não precisa ler nenhum livro para dominar a linguagem MQL5. Basta usar a Ajuda pressionando a tecla F1, primeiro clicando na função ou palavra de interesse. Use também a função de busca na Ajuda.

veja o gif animado (clique sobre a foto):


Eu também recomendo fortemente dominar imediatamente o depurador embutido do ME com configurações de pontos de interrupção para passar através do programa com a capacidade de observar mudanças variáveis.

Veja também o gif animado.


Boa sorte, Yusuf!
Se você tiver alguma dúvida, se o método de regra geral não for útil, não hesite em perguntar.

Acho que o mundo inteiro o ajudará.

Arquivos anexados:
Soltonov.mq5  8 kb