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

 
Artyom Trishkin:

IndicadorDígitos(5)

Obrigado!
 

Deixe-me fazer outra pergunta. Com base no mesmo indicador. Vamos supor que anexemos o indicador ao gráfico. Obtemos o primeiro valor do Bid1. Então obtemos o segundo valor do Bid2. E precisamos comparar estes dois valores. Do segundo, subtraímos o primeiro e obtemos o número que adicionamos ao primeiro Bid1.

Bid1=1.11133

Bid2=1.11135

Bid2-Bid1=0.00002

Bid1+0.00002=1.11135

Entendo que o resultado é o mesmo que no indicador original.

Eu só quero ver a implementação e entender a lógica do código.

 
Alexey Viktorov:

Você tem que desbloqueá-lo nas propriedades do arquivo.

Obrigado! :)
 
jaffer wilson :

Duas declarações:

Impressão: 22.33

И

Impressão: 2.00000

Por que existem saídas diferentes? Em C / C ++ a afirmação acima funciona bem.

Alguém tem alguma idéia sobre este problema?

 

Ajude-me a entender as matrizes de preços em mt5. Não está claro no indicador. I preços de saída, que estão em OnCalculate:

  for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

Eu recebo preços estranhos:

2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[10] = 1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[9] = -523642413
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[8] = 1691873517
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[7] = 590987500
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[6] = 1583296744
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[5] = 115448721
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[4] = 360090058
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[3] = -1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[2] = -856244680
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[1] = 366962006
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[0] = -1209462791

Eu o faço ao contrário, crio um array e o copio (eu procuro tentando, não está claro para mim):

double Open[];//глобальная
CopyOpen(NULL,0,0,Bars_To_Process*2,Open); //OnCalculate
 for(int i=10; i>=0; i--)
         PrintFormat("Open[%d] = %d",i,Open[i]);//OnCalculate

E eu recebo resultados semelhantes:

2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[10] = 1356522471
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[9] = -1708366192
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[8] = -729800843
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[7] = 1499458982
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[6] = 167675523
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[5] = -90709709
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[4] = -321607151
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[3] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[2] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[1] = 1663011337
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[0] = -1408749273

É ainda mais interessante com as datas. Imprimo datas que estão na OnCalculate:

for(int i=10; i>=0; i--)
         PrintFormat("s- time[%d] = %s",i,TimeToString(time[i]));

Eu entendo isso:

2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[10] = 2015.12.02 10:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[9] = 2015.12.02 09:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[8] = 2015.12.02 08:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[7] = 2015.12.02 07:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[6] = 2015.12.02 06:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[5] = 2015.12.02 05:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[4] = 2015.12.02 04:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[3] = 2015.12.02 03:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[2] = 2015.12.02 02:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[1] = 2015.12.02 01:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[0] = 2015.12.02 00:00

E quando o copio:

datetime Time[];
CopyTime(NULL,0,0,Bars_To_Process*2,Time);
for(int i=10; i>=0; i--)
         PrintFormat("Time[%d] = %s",i,TimeToString(Time[i]));

Imprime bem:

2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[10] = 2020.01.15 10:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[9] = 2020.01.15 11:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[8] = 2020.01.15 12:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[7] = 2020.01.15 13:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[6] = 2020.01.15 14:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[5] = 2020.01.15 15:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[4] = 2020.01.15 16:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[3] = 2020.01.15 17:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[2] = 2020.01.15 18:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[1] = 2020.01.15 19:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[0] = 2020.01.15 20:00

Mas você não pode ir longe apenas nas datas. Ajude-me a entender. Como posso obter os preços de abertura e fechamento corretos?

 
Yevhenii Levchenko:

Ajude-me a lidar com matrizes de preços em mt5. Não está claro no indicador. Eu produzo os preços que estão na OnCalculate:

for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

Faça-o assim:

for(int i=10; i>=0; i--)
{
   Print("s- open[",i,"] = ",open[i]);
}

Você usou especificação de tipo errado na saída formatada

 
Igor Makanu:

fazer isto:

Você usou a especificação do tipo errado na saída formatada

Aaaaaahhhhh, merda! Muito obrigado, Igor!

Eu deveria ter colocado %f... Eu me enganei... e tenho que colocar o ArraySetAsSeries em todos os lugares. É um pouco esquisito...

 
Igor Makanu:

por favor

Eu não aconselharia o uso do ArraySetAsSeries() se você escrever o código indicador a partir do zero (se você o portar da MQL4 - outro assunto),

use rates_total como o número da barra mais à direita - 1, você se acostumará à lógica do indicador em MQL5 mais rapidamente

Obrigado!

Não escrever do zero... Estou transferindo o indicador mt4 para mt5
 
Oleg Bondarev:

Deixe-me fazer outra pergunta. Com base no mesmo indicador. Vamos supor que anexemos o indicador ao gráfico. Obtemos o primeiro valor do Bid1. Então obtemos o segundo valor do Bid2. E precisamos comparar estes dois valores. Do segundo, subtraímos o primeiro e obtemos o número que adicionamos ao primeiro Bid1.

Bid1=1.11133

Bid2=1.11135

Bid2-Bid1=0.00002

Bid1+0.00002=1.11135

Entendo que o resultado é o mesmo que no indicador original.

Eu só quero ver a implementação e entender a lógica do código.

Ajude-me. Não está funcionando por conta própria. Eu faço 2 buffers x[ ] para comparar os valores de Bid e y[ ] para plotar. E nada.

 
Oleg Bondarev:

Eu preciso de sua ajuda. Não consigo trabalhar nada sozinho. Eu faço 2 buffers x[ ] para comparar os valores de Bid e y[ ] para plotar. E nada.

Tente fazer a pergunta de outra forma, sua pergunta provavelmente não é clara

Razão: