Perguntas de um "boneco" - página 132

 
Yedelkin:

Se estiver interessado no cálculo de dados de outro indicador, pode fazê-lo da seguinte forma. Primeiro, criamos outro indicador com o seu próprio método de cálculo de dados, e depois tomamos o cabo deste indicador(MQL5 Reference Guide / Technical Indicators / iCustom ) e este cabo é utilizado no novo indicador. Vejam atentamente o exemplo. Se tiver alguma dúvida sobre o exemplo

Tenho perguntas. Ainda não as compreendo.
Ok, vamos tomar como base a Média Móvel Personalizada.mq5.

adicionar o novo procedimento de alisamento MODE_MYMA à lista - sem problemas.

a questão é como alimentar os dados. através da i-cast de outro indicador? ok. vamos tomar como exemplo qualquer indicador feito pelo segundo formulário (se o indicador é feito pelo primeiro formulário... não sei como tomar o alto-baixo... então significa apenas o segundo formulário?)

Ok, vamos declarar

int newHandl;

defini-lo no onInit (parabólico, ou seja, o que quer que seja, o principal é o 2º tipo, certo? eu entendo como implementar o meu)

newHandl=iCustom(_Símbolo,0, "ParabolicSAR.mq5",0.02,0.2);

e depois? no onCalculate, alimentamo-lo em vez do preço padrão?

CalculateEMA(rates_total,prev_calculated,begin,newHandl);????

jura ou o quê? por favor explique, não compreendo... (((((

sim, ainda estou a usar modelos mcl4. aí, é simples - loop, dados (qualquer!) take, smooth out, output.
Mas aqui.... Não sei a que me agarrar...

 
GameOver:

(se o indicador é feito pelo primeiro formulário... Não percebi de onde tirar o alto-baixo... então significa apenas pelo segundo formulário?)

Sim, sobre o alto-baixo foi apenas um exemplo, como lidar com artigos por si próprio. Para a primeira forma pode assumir a tarefa de traçar a linha de fechar[i]/2 [ou sqrt(close[i]/2 )]. Em geral, também é possível apresentar um monte de variações utilizando uma única matriz.

GameOver:

OK, vamos declarar

int newHandl;

no onInit defina-o (como exemplo - parabólico. o que quer que seja, o principal é o 2º tipo, certo? como implementar o seu próprio é mais ou menos claro)

newHandl=iCustom(_Símbolo,0, "ParabolicSAR.mq5",0.02,0.2);

Está bem. Vou terminá-lo agora.

Se o manípulo indicador estiver correcto, significa que podemos dirigir-nos aos amortecedores deste indicador. Veja novamente o exemplo da MQL5 Reference / Technical Indicators / iCustom Há uma linha:

//--- скопируем значения индикатора Custom Moving Average в наш индикаторный буфер
   int copy=CopyBuffer(MA_handle,0,0,rates_total,Label1Buffer);

Agora leia MQL5 Reference / Access to Timeseries and Indicators / CopyBuffer (...Novamente: muitas coisas ficam claras quando se analisam exemplos linha a linha).

Tente receber dados de qualquer buffer de indicadores, que tenha seleccionado. Não tenho um terminal, mas em parabólico pode-se ver quais os amortecedores que são calculados e a sua numeração.

Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5
 

Pergunta sobre a descrição das funções ArrayIsSeries() e ArrayGetAsSeries().

Existe uma frase deste tipo no Manual de Referência:"As matrizes passadas para a função reflectem dados de preços, ou seja, estas matrizes têm o sinal de série temporal e a função ArrayIsSeries() voltará a ser verdadeira ao verificar estas matrizes . Mas mesmo assim, em qualquer caso, a direcção de indexação deve ser verificada apenas com a função ArrayGetAsSeries()".

Decorre de uma leitura literal que mesmo que a função ArrayIsSeries() retorne verdadeiro (isto é, confirma que o array que está a ser verificado é um array de séries temporais), mesmo assim a direcção de indexação deve ser verificada apenas pela função ArrayGetAsSeries() de qualquer forma. Então não compreendo a razão para introduzir a função ArrayIsSeries() se os seus resultados tiverem de ser verificados adicionalmente de qualquer forma. Qual é o objectivo? Será possível que a matriz possa ser uma série cronológica, mas a sua direcção de indexação não será a mesma de uma série cronológica (a bandeira AS_SERIES não será hasteada)?

 


Ao portar de Mql4 para Mql5, surgiu um erro de lote:

'Lote' - constante não pode ser modificada

input double Lot = 0.1; // Lot

if (MartingaleType ==7)
 {
 if (Counter1==1)
 Lot=Lots() ;
}

Como corrigir?


 
Dark.Angel:


Ao portar de Mql4 para Mql5, ocorreu um erro de Lote:

'Lote' - constante não pode ser modificada

Como é que se arranja?

Não pode. Não é um insecto, é uma característica. :)

Em mql5 as variáveis de entrada não são modificáveis (const).

Fazer um simples desacoplamento:

input int x=5;
input double StartLot = 0.01;

int X;
double Lot;
...
...
void OnInit()
  {
   ....
    X=x;
    Lot=StartLot;
   .......
  }
.....
void OnStart()
  {
   ....
   Lot=Lots();
  }
 

Na secçãoMQL5 Manual / Array Operations / ArraySetAsSeries, um exemplo quando a função ArraySetAsSeries() se aplica ao constant datetime array &time[] em cada tick:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---  будем хранить время открытия текущего нулевого бара
   static datetime currentBarTimeOpen=0;
//--- перевернем доступ к массиву time[] - сделаем как в таймсерии
   ArraySetAsSeries(time,true);
//--- return value of prev_calculated for next call
   return(rates_total);
  }

É isto que todos fazem (vira a matriz em cada tic) para trabalhar com a matriz como uma série cronológica?

Outra questão: podem as matrizes utilizadas pela OnCalculate() mudar arbitrariamente a sua direcção de indexação? Ou será suficiente verificar esta direcção uma vez?

 


Ao portar de Mql4 para Mql5 um erro SymbolInfoDouble:
'SymbolInfoDouble' - nenhuma das sobrecargas pode ser aplicada à chamada de função

на Mql4:
double a = balance / MarketInfo (Symbol (), MODE_MARGINREQUIRED) - 0.2 ; 

на Mql5:
double a = balance / SymbolInfoDouble(Symbol(), 0) - 0.2 ;

Como posso corrigi-lo?
 
Dark.Angel:


Ao portar de Mql4 para Mql5, o erro SymbolInfoDouble apareceu:
SymbolInfoDouble' - nenhuma das sobrecargas pode ser aplicada à chamada de função


Como posso corrigi-lo?

Porque é que existe um 0 no fundo?

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

E, além disso, verificar a divisão por 0.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

Os resultados do testador de estratégia são apresentados em gráficos:


Pode dizer-me onde descobrir o significado das diferentes cores nos gráficos?

 
pusheax:

Os resultados do testador de estratégia são apresentados em gráficos:

Pode dizer-me onde descobrir o significado das diferentes cores nos gráficos?

Os azuis são lucro, os vermelhos são perda. Mas o superior esquerdo é apenas questionável...