Impulso - página 32

 
Artyom Trishkin:
Aqui eu pensei: provavelmente seu desejo de simplificar tudo, de reduzir a MA, e de fazer rápido, e leva a conclusões precipitadas - "não vai funcionar". Eu lhe disse - primeiro conte a diferença entre os carrapatos vizinhos. Preenchemos a matriz com diferenças de preço, não de preço. Mas estamos procurando de passagem por MA. Correção.

Querida, há muito tempo que eu tenho esta coisa consertada. Estou lhe instruindo para ter certeza de que não receberá aqui um indicador inútil.

Agora, sobre o que você tem no final:

- média de velocidade.

Mesmo que você não tenha conseguido um MA em preço, você conseguiu um MA em velocidade. Que diferença isso faz?

Se você não sabe qual é a média do bug, então olhe com atenção:

(5+1)/2=3 //falls

(1+5)/2=3 /increases

Pense por si mesmo, matemático...

 
new-rena:

Querida, há muito tempo que eu tenho esta coisa consertada. Estou lhe instruindo para que você não receba aqui um indicador inútil.

Agora, sobre o que você tem no final:

- média de velocidade.

Mesmo que você não tenha conseguido um MA em preço, você conseguiu um MA em velocidade. Que diferença isso faz?

Se você não sabe qual é a média do bug, então olhe atentamente:

(5+1)/2=3

(1+5)/2=3 /increases

Bem, pense por si mesmo, matemático...

Isso é um pouco de boca cheia, amigo. Ser mal-educado não faz as pessoas parecerem bem.

Agora me diga o que está em suas fórmulas para o que, mentor ...

ZS. Eu entendo sua agressão - alguém não lhe deu seus cálculos, e você mesmo não entende, contando tudo no mundo MAK, matemático ... Mas você não tem que se atirar nas pessoas por causa disso - você parece estúpido.

 
Artyom Trishkin:

Isso é um pouco exagerado, amigo. Ser mal-educado não faz as pessoas parecerem bem.

Agora me diga o que está em suas fórmulas para o que, mentor...

ZS. Entendo sua agressão - alguém não lhe deu seus cálculos, e você não entende, considerando tudo no mundo como mashki, matemático ... Você não precisa se atirar às pessoas por causa disso - você parece estúpido.

A rudeza foi mútua. E o fato de que alguém não tenha dado algo, não afeta a criação do que está acontecendo aqui. Onde eu pedi, já expliquei tudo e essa pessoa está fazendo propaganda em todos os fóruns, não apenas aqui. As pessoas escrevem que ele está farto disso.

Agora vamos ao que interessa.

Eu dei o link ontem e é quase a parte principal do indicador, seu destaque, por assim dizer.

Esse é o número de carrapatos e a direção do movimento de preços é determinada para o mesmo intervalo de tempo e em sua base é obtido um sinal comercial. O que não está claro aqui?

O principal não é a média.

Assim, pela quantidade de ticks que julgamos sobre a volatilidade, e pela soma do delta para o mesmo intervalo de tempo (como você escreveu corretamente acima, o delta é a diferença de preços entre ticks sucessivos) julgamos sobre a direção do movimento de preços, ou seja, sobre a tendência. E o delta pode ser negativo ou positivo. Somamos o que temos.

De fato, para calcular este indicador e para trabalhar, precisamos e precisamos apenas do número N dos últimos ticks. Não é realmente necessário escrever carrapatos na história, exceto para testes.

Os analógicos existentes deste indicador são projetados como um velocímetro.

 
new-rena:

Sobre a rudeza - foi mútuo. E o fato de alguém não ter dado algo, não tem efeito sobre a criação do que está acontecendo aqui. Onde eu pedi, já expliquei tudo e que o homem está fazendo propaganda em todos os fóruns, não apenas aqui. As pessoas estão escrevendo que ele está farto disso.

Agora vamos ao que interessa.

Eu postei o link aqui ontem, portanto esta é praticamente a parte principal do indicador, seu destaque, por assim dizer.

Esse é o número de carrapatos e a direção do movimento de preços é determinada para o mesmo intervalo de tempo e em sua base é obtido um sinal comercial. O que não está claro aqui?

O principal não é a média.

Assim, pela quantidade de ticks que julgamos sobre a volatilidade, e pela soma do delta para o mesmo intervalo de tempo (como você escreveu corretamente acima, o delta é a diferença de preços entre ticks sucessivos) julgamos sobre a direção do movimento de preços, ou seja, sobre a tendência. E o delta pode ser negativo ou positivo. Somamos o que temos.

De fato, para calcular este indicador e para trabalhar, precisamos e precisamos apenas do número N dos últimos ticks. Escrever carrapatos na história não é realmente necessário, talvez apenas para um teste.

Os analógicos existentes de tal indicador estão na forma de um velocímetro.

Este link é este? https://www.mql5.com/ru/forum/61389/page30#comment_1776762

ZS. Sobre a rudeza recíproca - isso é você para nada. Eu não fui rude com você primeiro.

Импульс
Импульс
  • www.mql5.com
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий. - Страница 30 - Категория: автоматические торговые системы
 
Artyom Trishkin:

É este o link? https://www.mql5.com/ru/forum/61389/page30#comment_1776762

ZS. Você está errado a respeito da rudeza mútua. Eu não fui rude com você primeiro.

Sim, mas isso é em 4-pc. Pelo que entendi, estamos fazendo em 5.
 
Karputov Vladimir:

A base para o registro de carrapatos está lá.


Formato do nome do arquivo:

Há quatro colunas no arquivo:


A questão permanece - com que freqüência novos arquivos devem ser iniciados. Acho que a cada hora você deve iniciar cada arquivo. Será mais fácil de analisar.

adicionar Alto, Baixo (ou contar imediatamente as mudanças de preço) - quando um tick é perdido (por razões técnicas) eles mudam... ou seja, uma situação é possível quando dentro da M1 Bid caiu, e Alto subiu

Eu acho que isso acontece durante os impulsos e quando o terminal/computador está trabalhando em outra coisa :-)

 
Karputov Vladimir:

Houve uma gravação de 600 ticks. Este recorde (100 cada) foi distribuído em seis gráficos. Os gráficos mostram o preço e a taxa de variação do tick (EMA10). Em suma, há um motivo para estudar os números:







você está olhando um pouco, ou seja, de forma alguma... nos gráficos você tem algum tipo de função de erro de diferenciação. Ou seja, primeiro você lê a velocidade como uma derivada (dx/dt), depois a integra (por um método diferente) e a compara com a original.

dica: qualquer MA é uma função integral de facto

dica2: para ver se você está se movendo na direção certa - pegue um simples SMA e mova-o meio período para trás. Se você vê algo útil na história, isso significa que a velocidade e o impulso são contados por uma razão e você pode cavar mais fundo

 
new-rena:
Sim, mas está escrito em 4-pc. Entendo que estamos fazendo isso em 5.

Não faz diferença qual a plataforma a ser utilizada. Perguntei a Roman lá, e escrevi-lhe códigos em particular, mas não entendi porque ele fixa o tamanho do array em dois milhões de init(), depois redimensiona o array para zero no início(), depois tenta preenchê-lo com índice -1 (!!!), e só depois disso aumenta a variável TAMANHO em 1, que deve indexar o array. Compare, foi isto que sugeri:

//+------------------------------------------------------------------+
//|                                                   FillArrays.mq4 |
//|              Copyright 2015, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|   Input variables                                                |
//+------------------------------------------------------------------+
input int NumberOfStorableTicks=20;       // Количество сохраняемых тиков
int numberOfStorableTicks; // Количество сохраняемых тиков
input int PeriodOfMA=5;                   // Период сглаживания
int periodOfMA; // Период сглаживания
input ENUM_MA_METHOD MaMethod=MODE_SMA;   // Метод усреднения МА

//+------------------------------------------------------------------+
//|   Global variables                                               |
//+------------------------------------------------------------------+
string symbol;    // Symbol()
int digits;       // Digits
//+------------------------------------------------------------------+
//|   Arrays                                                         |
//+------------------------------------------------------------------+
double      Mass_ticks[];
double      Mass_smoothed_values[];
//+------------------------------------------------------------------+
//|   Structures                                                     |
//+------------------------------------------------------------------+
   MqlTick struct_tick;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   symbol=Symbol();
   digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
   //---
   numberOfStorableTicks=(NumberOfStorableTicks<1)?1:NumberOfStorableTicks;
   periodOfMA=(PeriodOfMA<1)?1:PeriodOfMA;
   //---
   ArrayResize(Mass_ticks,numberOfStorableTicks);
   ArrayInitialize(Mass_ticks,0.0);
   ArrayResize(Mass_smoothed_values,numberOfStorableTicks);
   ArrayInitialize(Mass_smoothed_values,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(SymbolInfoTick(symbol,struct_tick)) {
      double tick_bid=struct_tick.bid;
      FillArrays(numberOfStorableTicks,tick_bid,Mass_ticks);
      }
   string txt="";
   for(int i=numberOfStorableTicks-1; i>=0; i--) {
      string itxt=IntegerToString(i);
      txt+="\nmass["+itxt+"]: "+DoubleToString(Mass_ticks[i],digits);
      }
   Comment(txt);
  }
//+------------------------------------------------------------------+
void FillArrays(int array_size, double price, double &mass_price[]) {
   //--- сместим данные в массиве влево
   for(int i=array_size-1; i>0; i--) {
      mass_price[i]=mass_price[i-1];
      }
   //--- запишем новый тик в массив
   mass_price[0]=price;
}
//+------------------------------------------------------------------+
void SmoothingDataArray(int array_size, int ma_period, int ma_shift, ENUM_MA_METHOD ma_method, double &mass_price[], double &mass_smoothing[]) {
   for(int i=array_size-1; i>=0; i--) {
      mass_smoothing[i]=iMAOnArray(mass_price,array_size,ma_period,ma_shift,ma_method,i);
      }
   }
//+------------------------------------------------------------------+

No entanto, iMAOnArray() recusa-se a suavizar a situação. Por mais torcido que seja, é para trás e para frente. Mas não é necessário para o propósito aqui pretendido. Eu acho que...

Sim, eu esqueci. Foi isso que Roman sugeriu:

//---------------------
extern int MaxDrawTicks=100;
extern int Num_Aver_of_Ticks=5;  
double     xBuffer_Time []; // Массив значений   динамический
                            // В котором индекс - номер тика, значение - это бид 
int SIZE=0;                 // Вспомогательная переменная для массива                                  
int tickCounter, tickCounter_Current; 
//+------------------------------------------------------------------+
int init()
  {   
//--- устанавливаем размер динамического массива
   if(ArrayResize(xBuffer_Time,2000000)<0) {Alert(" Ошибка в изменении размера массива времени поступления тиков "); return(false);}
//--- установим индексацию для буфера как в таймсерии для динамического массива
  // ArraySetAsSeries(xBuffer_Time,true);    
//---   Возвращает количество элементов указанного массива. 
   int S=ArraySize(xBuffer_Time);
   if (S>=0) Alert("Размер массива: ",S);
   else Print("Ошибка. Массив не создан ",S);        
   ArrayInitialize(xBuffer_Time, 0);
   return(0);
  }  
//+------------------------------------------------------------------+
int start()
  {  
   //ArrayResize(ValueArr,size);
   //ValueArr[size-1] = GetValue();
   //size++; 
 //----------------------------------------  
   ArrayResize(xBuffer_Time,SIZE);
   xBuffer_Time[SIZE-1] = Bid; //NormalizeDouble((iTime (_Symbol,1,0)-_start), 2); 
  
   if ( SIZE >= 0 && ArraySize(xBuffer_Time) < 2147483647)
      {
      Alert (" Значение xBuffer_Time[SIZE-1] = ", DoubleToStr(xBuffer_Time[SIZE-1],Digits) );
      Alert (" Значение SIZE = ", DoubleToStr(SIZE,2) );  
      } 
    SIZE ++;   
 //---------------------------------------      
//------------
   return(0);
  }
 
Artyom Trishkin:

Vou tentar um tableau:

carrapato 10
tick 9
tick 8
tick 7
carrapato 6
carrapato 5
carrapato 4
tick 3 tick 2
tick 1 tick 0
Carrapato futuro
X10
X9
X8
X7
X6
X5
X4
X3
X2
X1X0
XN0
X9X8
X7X6X5
X4X3
X2
X1
X0XN0
XN1

x0, x1, x2 definem o estado atual (rosa), os demais definem o estado passado (verde claro). Os dados na matriz estão mudando constantemente, e o xn0 recém-chegado toma o lugar do tique zero. Assim, agora o estado atual será contado a partir de x1, x0, xn0, e o tick x2 da última vez é deslocado para as células que definem o estado anterior, fazendo uma pequena correção para esse estado. Se contarmos tudo juntos, todos os três primeiros tiquetaques serão corrigidos, o que me parece bastante grosseiro.

Há algo nisto. Aqui está uma captura de tela da tabela de carrapatos:

Captura de tela de uma tabela de carrapatos

Observe a área delimitada pelas grandes setas.

E aqui está o processamento da condição quando o incremento médio de carrapatos (tick0, tick1, tick2) é maior que o incremento médio (tick3, tick4, tick5, tick6, tick7, tick8, tick9, tick10) e o incremento é maior que zero:

Processamento da condição

 
Artyom Trishkin:

Não faz diferença qual a plataforma a ser utilizada. Perguntei a Roman lá, e escrevi-lhe códigos em particular, mas não entendi porque ele fixa o tamanho do array em dois milhões de init(), depois redimensiona o array para zero no início(), depois tenta preenchê-lo com índice -1 (!!!), e só depois disso aumenta a variável TAMANHO em 1, que deve indexar o array. Compare, foi isto que sugeri:

No entanto, iMAOnArray() recusa-se a suavizar a situação. Por mais que eu o torça, ele vai para trás e para frente. Mas não é necessário para os fins aqui previstos. Eu acho que...

OK. E onde está a análise do intervalo de tempo em seu código e por que a MA apareceu?

Eu também encontrei um bug em minha coisa. Não é o mesmo número de carrapatos durante um e mesmo intervalo de tempo. Não devemos perder tal indicador.

Talvez eu esteja errado, pois não uso o 5-Rka há muito tempo ainda.

Razão: