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

 
Alexey Viktorov #:

Estúpido na segunda tentativa. Aparentemente, chegou a hora à noite.

Não entendi bem, mas não sei como dividir o instrumento em moedas.

E há uma probabilidade de igualdade média, não vejo isso de imediato, mas é melhor fazer uma busca completa de igualdade de nomes de moedas no instrumento do 2º para o 3º lugar. Ou cortar a 1ª e última posição e pesquisar nos 4 dígitos restantes)

 
Valeriy Yastremskiy #:

A B C D está correto, mas não entendo como dividir o instrumento em moedas.

E há uma probabilidade de igualdade média, eu não a vi imediatamente, mas é melhor fazer uma busca completa de igualdade de nomes de moedas no instrumento da 2ª para a 3ª posição. Ou cortar a 1ª e última posição e pesquisar nos 4 caracteres restantes).

Não, eu fui estúpido na segunda tentativa apenas nas 4 condições. Afinal, para a tarefa, não importa em que posição o item desejado será encontrado, em zero ou terceiro, o principal é encontrado ou não. Como resultado, existem duas condições, uma para a moeda base e outra para a segunda moeda.

 
Alexey Viktorov #:

Não, eu fiquei burro na segunda tentativa apenas nas 4 condições. Afinal, para a tarefa não importa em que posição o item de busca será encontrado, zero ou terceiro, o principal é se ele é encontrado ou não. Como resultado, há duas condições, uma para a moeda base e outra para a segunda.

Portanto, excluí a igualdade do meio da segunda ou terceira posição do instrumento. Se não for excluída, então é correto, 2 condições.

 
Valeriy Yastremskiy #:

Bem, eu estava excluindo assim a igualdade média, da segunda ou terceira posição do instrumento. Se você não excluir, você está correto, 2 condições.

Eu ainda não entendo o que significa "igualdade de pontos médios".

Sinal no EURUSD

Um pedido EURJPY - procure por EUR e encontre-o, é verdade. A segunda condição não precisa ser verificada.

GBPJPY - procure o EUR, não o encontre. procure o USD, não o encontre, os lances são falsos. Total de duas condições.

 
Alexey Viktorov #:

Eu ainda não entendo o que é um "meio igual".

Sinal no EURUSD

Pedido em EURJPY - procurar por EUR e encontrar, ejeção verdadeira. A segunda condição não precisa ser verificada.

GBPJPY - procure o EUR, não o encontre. procure o USD, não o encontre, os lances são falsos. Total de duas condições.

EURJPY é igual entre URJP

GBPJPY entre a BPJP

Concordo, é um caso raro. Mas isso é possível, a julgar pelo grande número de instrumentos.

 
Valeriy Yastremskiy #:

EURJPY igualdade entre URJP

GBPJPY entre a BPJP

Concordo, é um caso raro. Mas possível, a julgar pelo grande número de instrumentos.

Não, eu prefiro ficar no meu comprimento de onda. Acho difícil entender por que...

 

Como o construtor trabalha em estruturas?

struct as{
  int a,
      b,
      c;
    void as(){
    b=0;c=0;
    a=b+c;
    }  
 };
as sir;
 

Olá! estou rachando meu cérebro.

Quem não for difícil, por favor, ajude com os comentários.


1. Qual é a finalidade da variável "bb" e, correspondentemente, operador se (bb == 0) bb = i; ?


2. if ((Time[i]>=BeginDateCalc && Time[i]<=EndDateCalc && NumberOfBars<=0)

||| (NumberOfBars>0 && NumberOfBars>=i))

Como pode a NumberOfBars ser <= 0 e para quê?


3. s += (Alto [i] - Baixo [i]) / Ponto;

Para que serve a divisão por ponto?


4. Pela condição do laço para (i = Barras; i > 0; i--) a contagem vai da barra "mais velha" para a barra "mais jovem".

Por que a variável b++ é incrementada, mas não decrescente?

//+----------------------------------------------------------------------------+
//|                                                          AverageRange.mq4  |
//|                                                    Ким Игорь В. aka KimIV  |
//|                                                       http://www.kimiv.ru  |
//|                                                                            |
//|  14.09.2005  Скрипт для расчёта:                                           |
//|              средней волатильности инструмента High-Low                    |
//|              Возможность использования заданного количества баров          |
//+----------------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"
#property  show_inputs

extern datetime BeginDateCalc = D'2013.01.01';
extern datetime EndDateCalc   = D'2013.12.31';
extern int      NumberOfBars  = 100;         


//+----------------------------------------------------------------------------+
//|  script program start function                                             |
//+----------------------------------------------------------------------------+
void start() {
   int    i;           //счётчик
   int    b  = 0;      //использовано баров
   int    bb = 0;      //?????????????????????
   int    s =  0;      //сумма всех значений High - Low
   string st = "";     //строка вывода на экран    

  for (i = Bars; i > 0; i--) {
    
    if ((Time [i] >= BeginDateCalc && Time [i] <= EndDateCalc && NumberOfBars <= 0)
    || (NumberOfBars > 0 && NumberOfBars >= i)) {
      
      if (bb == 0) bb = i;
      s += (High [i] - Low [i]) / Point;
      
      b++;
    }
  }

  st =      "Начало: " + TimeToStr (Time [bb], TIME_DATE | TIME_MINUTES) + "\n";        // "/n" - это перенос строки
  st = st + "Конец: " + TimeToStr (Time [bb - b + 1], TIME_DATE | TIME_MINUTES) + "\n";
  st = st + "Использовано баров: " + b + "\n";
  st = st + "Средняя волатильность: " + s / b + " п.\n";
  
  Comment (st);
}
//+----------------------------------------------------------------------------+
 

A bb contém o índice de barras da primeira condição desencadeada. Este índice é então utilizado para calcular a hora de início do cálculo.

NumberOfBars - esta variável é definida pelo usuário, e este tipo não é confiável e pode definir um valor negativo. Talvez, a lógica é que se o NumberOfBars não for positivo, o cálculo é realizado entre a data de início e fim, enquanto que se for positivo, então é calculado pelo número de castiçais definidos com esta variável.

O ponto é dividido em pontos (1.01051-1.01000)/Point=51 para converter os valores da parte fracionária em pontos.

A variável bb após zero é alterada apenas uma vez durante toda a operação do script. se (bb == 0)

 
Aleksei Stepanenko #:

A bb contém o índice de barras da primeira condição desencadeada. Este índice é então utilizado para calcular a hora de início do cálculo.

NumberOfBars - esta variável é definida pelo usuário, e este tipo não é confiável e pode definir um valor negativo. Talvez, a lógica seja que se o NumberOfBars não for positivo, o cálculo é realizado entre as datas de início e fim.

Mas o ponto é dividido para transferir valores da parte fracionária para os pontos 0,00051/Ponto=51

A variável bb após zero é alterada apenas uma vez durante toda a operação do roteiro.

Para ser honesto, não entendo a lógica de Kim; por que as condições dos tempos de barras excedem o valor especificado e o número de barras calculadas com OU o número de barras calculadas é maior do que o número de barras Barz))) E, ao mesmo tempo, apenas corrige os parâmetros personalizados)

E não exibe sequer um alerta de que o usuário fez asneira)

Razão: