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

 
Nauris Zukas:

Obrigado, mas então eu também teria que escalar os dados (se eu o entendi corretamente). Parece que o dimensionamento dos dados é a única solução.

Por que escalar qualquer coisa? Basta usar 2 amortecedores, colocar valores positivos em um e valores negativos no outro. Se o cálculo produzir apenas valores positivos, você pode multiplicá-los por -1. Mas se o cálculo produz tanto valores positivos quanto negativos, então minha sugestão não se encaixa.

Então você poderia fazer histogramas de diferentes larguras. Primeiro o buffer que é exibido com um histograma largo é preenchido com valor, e depois o que é exibido com um histograma fino é preenchido com valor.

Isto produzirá um histograma. Quatro amortecedores são utilizados aqui.


 
Alexey Viktorov:

Por que escalar qualquer coisa? Basta usar 2 amortecedores, colocar valores positivos em um e valores negativos no outro. Se o cálculo produzir apenas valores positivos, você pode multiplicá-los por -1. Mas se o cálculo produz tanto valores positivos quanto negativos, então minha sugestão não se encaixa.

Então podemos fazer histogramas de diferentes larguras. Primeiro, o buffer exibido no histograma largo deve ser preenchido com valores, e depois o buffer exibido no histograma fino deve ser preenchido com valores.

Isto produzirá um histograma. Quatro amortecedores são utilizados aqui.


Obrigado, mas não caberá nesta variante, pois os amortecedores com linhas estarão, por exemplo, na faixa de 1.19653 a 1.19674 e o histograma será de 0 a 250. Tiques e espalhados em uma janela, é por isso que eu queria fazer um segundo eixo Y.

 
Nauris Zukas:

Obrigado, mas não vai funcionar, porque o buffer com linhas estará, por exemplo, na faixa de 1.19653 a 1.19674 e o histograma será de 0 a 250. Tiques e espalhados em uma janela, é por isso que eu queria fazer um segundo eixo Y.

Concordo, não vai caber. Mas!!!! O que fará a escalada? Talvez dividir os valores dos histogramas por 100? Ou multiplicar por 0,01...

 
Alexey Viktorov:

Concordo, não vai caber. Mas!!!! O que faria a escalada? Que tal dividir os valores dos histogramas por 100? Ou multiplicar por 0,01...

Até agora o seguinte conceito: tomamos o valor máximo/minuto dos amortecedores lineares e fazemos o máximo spread sob estes valores, outros spreads são escalados sob o máximo.

 
Artyom Trishkin:

Portanto, o corretor não está permitindo o autotrading para sua conta, uma vez que tudo está habilitado e a EA não abre posições ou não faz pedidos.

O que o registro mostra quando a EA tenta enviar um pedido comercial para o servidor?

As encomendas são feitas, mas IsTradeAllowed() é 0. Como isso pode ser?

 
Andrei:

Você quer dizer permitir o comércio automático? Isto também é permitido...

Faz sentido chamar o helpdesk do corretor

 
Andrei:

As encomendas são feitas, mas IsTradeAllowed() é 0. Como isso é possível?


a conta é competitiva?

Há pelo menos quatro parâmetros a serem verificados:

ACCOUNT_TRADE_EXPERT
ACCOUNT_TRADE_ALLOWED
TERMINAL_TRADE_ALLOWED
IsTradeAllowed(_Symbol,TimeCurrent())
 

Você poderia me dizer como escrever um código para comparar o tick atual com o tick anterior para um instrumento comercial selecionado?

Preciso comparar: se Tick (atual) > Tick (anterior), então vá para a execução da contagem de tais ticks, e vice-versa, se Tick (atual) < Tick (anterior), então vá para o cálculo de ticks2.

Assim, quero calcular quantos carrapatos em cada barra, no gráfico e no cronograma selecionados, estão aumentando o preço e quantos estão diminuindo.

Por favor, avise! Estou escrevendo meu primeiro indicador de treinamento, e meu primeiro programa em minha vida :(

Eu o fiz correto?

int Tick;

int Tick2;

int start()

if((Licitação - Licitação[1]) > 0)

{

Tick++;

retornar;

}

senão

{

Tick2++;

retornar;

}

 
YarTrade:

Você poderia me dizer como escrever um código para comparar o tick atual com o tick anterior para um instrumento comercial selecionado?

Preciso comparar: se Tick (atual) > Tick (anterior), então vá para a execução da contagem de tais ticks, e vice-versa, se Tick (atual) < Tick (anterior), então vá para o cálculo de ticks2.

Assim, quero calcular quantos carrapatos em cada barra, no gráfico e no cronograma selecionados, estão aumentando o preço e quantos estão diminuindo.

Por favor, avise! Estou escrevendo meu primeiro indicador de treinamento, e também meu primeiro programa em minha vida :(

Estou fazendo certo?

Tente escrever Data, Hora, Licitação e resultados de seus cálculos em cada tick. Em seguida, carregue-o para o Excel e verifique. Não faz sentido reconciliar cada dúzia de linhas do programa!

Mas veja, você tem retorno em cada ramo do operador condicional, ou seja, ele é sempre executado. Portanto, tiramos do operador condicional:

int Tick=0, Tick2=0;       // Для вставки программы используйте кнопку SRC
double Bid1;

void OnInit()
{
  Bid1=Bid;
}

void start()   // Вместо start более модно писать OnTick
{
    if(Bid > Bid1) Tick++;                             
    else           Tick2++;
    Bid1=Bid;                          
}

Licitação[1] - é assim?

 
STARIJ:
// Вместо start более модно писать OnTick

:)

Razão: