Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 456

 
E_Ghazaryan:
Sim, certo =D )))) Já em anexo.)))

Todos estes parâmetros devem ser listados após vírgula em iCustom() após o nome do indicador, e depois deles mais dois parâmetros: número tampão e número de barras, de onde os dados são tirados. Isto é

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 6, 2, true, false, buffer_number, bar_number).

Todos os valores listados podem ser definidos por variáveis externas da EA e os nomes destas variáveis podem ser escritos em iCustom() em vez dos valores codificados em hardcoded.

 

Pode dizer-me porquê?

duplo d = 0,07;

d = NormalizeDuplo(d,2);

em ambos os casos d=== 0.07000000000000001

como é que deixo 2 casas decimais?

 
pusheax:

Pode dizer-me porquê?

duplo d = 0,07;

d = NormalizeDuplo(d,2);

em ambos os casos d=== 0.07000000000000001

como deixar 2 casas decimais?


Note que quando a saída para o Journal usando Print(), um número normalizado pode conter um maior número de casas decimais do que se espera. Por exemplo,

   double a=76.671;             // нормализованное число с 3 знаками после запятой
   Print("Print(76.671)=",a);   // выведем его как есть
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // выведем с заданной точностью

será produzido no terminal:

  DoubleToString(a,8)=76.67100000

  Print(76.671)=76.67100000000001


Ou seja, para imprimir a produção de valores extra não é um problema.

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Karputov Vladimir:


Esteja ciente de que um número normalizado quando a saída para o Jornal utilizando Print() pode conter mais casas decimais do que se espera. Por exemplo,

será produzido no terminal:


Assim, para a impressão, a produção de valores extra não é um problema.

Obrigado, é que quando tento abrir uma posição com 0,07 lote que gera erro (pensei que era o assunto), pode ser outra coisa, vou tentar saber mais.
 
pusheax:
Obrigado, é que quando tento abrir uma posição com 0,07 lote dá um erro (pensei que era esse o problema), deve ser outra coisa, vou investigar mais a fundo.
A primeira coisa a fazer é olhar para a descrição do número do erro. Isto irá encurtar o caminho da pesquisa.
 

boa noite

Declarei uma matriz dinâmica

dupla ordem_total[][10];

Eu redefini no OnInit

ArrayResize(all_order, 20);

Introduzo dados na função

void OR_spisok(double a0, double a1, double a2, double a3, double a4, double a5)

{

int a10=int(a0);

all_order[a10][0]=a0;

all_order[a10][1]=a1;

all_order[a10][2]=a2;

all_order[a10][3]=a3;

all_order[a10][4]=a4;

all_order[a10][5]=a5;

}

três linhas funcionam bem, em 4 agarra

2015.10.09 20:13:47.908 3102 EURUSD,H1: matriz fora do intervalo em '3102.mq4' (393,10)

393,10 é:

all_order[a10][0]=a0;

o que é que está errado?

Removido linha#propriedade estrita

O guião funciona, posso continuar sem esta linha?

 
pr0gre5:

boa noite

declarou uma matriz dinâmica


Removida a linha#propriedade estrita

O guião funciona, posso continuar sem esta linha?

Sim
 
Artyom Trishkin:

Todos estes parâmetros devem ser listados após vírgula em iCustom() após o nome do indicador, e depois deles mais dois parâmetros: número tampão e número de barras, de onde os dados são tirados. Isto é

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 6, 2, true, false, buffer_number, bar_number).

Todos os valores listados podem ser definidos por variáveis EA externas e escrever nomes destas variáveis em iCustom() em vez de valores codificados em hardcoded.

Obrigado pela sua resposta. Mas o facto é que o fiz no início, mas quando recebi valores errados, decidi remover os parâmetros do iCustom, para que o Consultor Especialista utilizasse os parâmetros padrão do indicador. Em ambos os casos, no entanto, a EA recebe valores errados. Por exemplo, Alerta dá 30,32362 para a linha Azul, mas quando olho para o gráfico indicador, tem 22,3320 no mesmo local. E o mesmo com outras linhas.
 
E_Ghazaryan:
Obrigado pela resposta. Mas a questão é que, no início, fi-lo, mas quando recebi valores errados, decidi remover os parâmetros do iCustom para que a EA utilizasse os parâmetros indicadores padrão. Em ambos os casos, no entanto, a EA recebe valores errados. Por exemplo, Alerta dá 30,32362 para a linha Azul, mas quando olho para o gráfico indicador, tem 22,3320 no mesmo local. E o mesmo com as outras linhas.
Mostrar-me o código onde se obtêm os dados do indicador.
 
Artyom Trishkin:
Mostrar-me o código onde se obtêm os dados do indicador.

O código era grande. Mas para descobrir qual é o problema, o Expert Advisor não trabalha segundo as regras, cortei esta parte numa parte separada e comecei a testá-la.

duplo Ind_Blue=iCustom(NULL, 0, "_MTF_ADX3",1,0));

duplo Ind_Red=iCustom(NULL, 0, "_MTF_ADX3",2,0));

Alerta(" Ind_Blue= " , Ind_Blue , " Ind_Red= " , Ind_Red);

Estou também a anexar o ficheiro do Expert Advisor. Não quero desperdiçar o seu tempo, mas não consigo encontrar o problema.

E há um indicador semelhante com o mesmo problema (Adx mtf). Tenho um ficheiro mq4 para ele. Mas parece não haver qualquer problema no código.

Arquivos anexados:
_MTF_ADX3.ex4  5 kb
Adx_mtf.ex4  21 kb
Adx_mtf.mq4  6 kb
Razão: