Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1063
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
mas como você habilita este modo?
Marque a caixa na janela do testador, no canto inferior esquerdo:
Olá Guru.
Você pode me dizer se eu estou no caminho certo?
Objetivo: introduzir um tamanho de lote variável, dependendo da distância do MA.
Nos parâmetros de entrada:
lote duplo externo1 = 0,01; // primeira variante do lote
lote duplo externo2 = 0.03; // segunda variante do lote
externo int Distan = 20; // distância do SlowMA
Ma foi definida no corpo de Consultores Especialistas:
duplo SlowMA = iMA(NULL,60,períodoSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);
Além disso, precisamos de uma condição: se o preço atual (Bid ou Ask, dependendo da direção) for até o tamanho Distante, usamos o primeiro tamanho de lote, se for mais, usamos o segundo.
A primeira coisa que me veio à mente:
if (Ask-SlowMA<Distan) Lote == Lote1;
if (SlowMA-Bid<Distan) Lote == Lote1;
if (Ask-SlowMA>Distan) Lote == Lote2;
if (SlowMA-Bid>Distan) Lote == Lote2;
Mas não funciona. O erro está tanto nas conexões de lote quanto na lógica geral.
Obrigado de antemão.
Olá Guru.
Você pode me dizer se eu estou no caminho certo?
Objetivo: introduzir um tamanho de lote variável, dependendo da distância do MA.
Nos parâmetros de entrada:
lote duplo externo1 = 0,01; // tamanho do primeiro lote
Lote duplo externo2 = 0,03; // variante de segundo lote.
distância interna externa = 20; // distância do SlowMA
No corpo do Expert Advisor definiu Ma:
duplo SlowMA = iMA(NULL,60,períodoSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);
Então precisamos de uma condição: se o preço atual (Bid ou Ask dependendo da direção) for até o tamanho Distante, usamos o primeiro tamanho de lote, se for maior, usamos o segundo.
A primeira coisa que me veio à mente:
se (Ask-SlowMA<Distan) Lote == Lote1;
if (SlowMA-Bid<Distan) Lote == Lote1;;
se (Ask-SlowMA>Distan) Lote == Lote2;
if (SlowMA-Bid>Distan) Lote == Lote2;
Mas não funciona. É ou um erro em conjunto com o Lot, ou em lógica geral.
Agradecemos antecipadamente.
Bid and Ask são as últimas licitações e preços de compra conhecidos, ou seja, o preço atual.
SlowMA é meu nome alterado para Ma
(duplo SlowMA = iMA(NULL,60,períodoSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)
O desvio do preço atual (Bid ou Ask) do Ma (SlowMA) pode ser maior ou menor do que Distans. De acordo com isto, você deve definir o primeiro ou o segundo lote.
Encontrei variantes de mudar o lote com base no depósito ou no número de pedidos em aberto, mas não consigo obter nenhuma resposta de um termo tão linear.
Algo me diz que precisamos de uma função que devolva um valor absoluto. Isto é, se o aplicarmos a um número negativo, o resultado será positivo.
Bid and Ask são as últimas licitações e preços de compra conhecidos, ou seja, o preço atual.
SlowMA é meu nome alterado para Ma
(duplo SlowMA = iMA(NULL,60,períodoSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)
O desvio do preço atual (Bid ou Ask) do Ma (SlowMA) pode ser maior ou menor do que Distans. De acordo com isto, você deve definir o primeiro ou o segundo lote.
Encontrei variantes de mudar o lote com base no depósito ou no número de pedidos em aberto, mas não consigo obter nenhuma resposta de um termo tão linear.
Algo me diz que precisamos de uma função que devolva um valor absoluto. Isto é, se o aplicarmos a um número negativo, o resultado será positivo.
O valor absoluto da diferença de Licitação e Mestrado pode ser necessário um pouco mais tarde; agora, como você não tem a dica, vamos calcular juntos
Licitação = 1.12730;
MA = 1.12530;
Distancias = 20;
Pergunta:
Quando e se de 1.1273 a 1.1253 serão mais de 20???
Por alguma razão, minha calculadora mostra apenas 0,002. Mas isso é um longo caminho a partir de 20...
Obrigado, estou vendo. Ou você poderia fazer assim:
dist=Distan*Point;
if (Ask-SlowMA<dist) Lote == Lote1;
if (SlowMA-Bid<dist) Lote == Lote1;
if (Ask-SlowMA>dist) Lote == Lote2;
if (SlowMA-Bid>dist) Lote == Lote2;
Então, como faço isso corretamente?
Obrigado, estou vendo. Ou você poderia fazer assim:
dist=Distan*Point;
if (Ask-SlowMA<dist) Lote == Lote1;
if (SlowMA-Bid<dist) Lote == Lote1;
if (Ask-SlowMA>dist) Lote == Lote2;
if (SlowMA-Bid>dist) Lote == Lote2;
Então, como faço isso corretamente?
E agora podemos usar MathAbs() para não repensar nossa cabeça, mantendo o controle do que está sendo subtraído do que está sendo subtraído. E há outro operador condicional interessante
Lot = MathAbs(Ask-SlowMA) < dist ? Lot1 : Lot2;
O que significa: à variável Lote será atribuído o valor do Lote1 se Ask- SlowMA for menor que distante, caso contrário, o valor do Lote2 será atribuído.
Mais uma recomendação: Esqueça a variável Ponto. Use _Ponto ou a função Ponto()
Preciso de ajuda, ainda estou apenas aprendendo...
E agora você pode aplicar MathAbs() para que você não tenha que manter o controle do que subtrair do quê. E outro operador condicional interessante
O que significa: A variável Lote será atribuída o valor do Lote1 no caso de Ask- SlowMA ser inferior à distância, caso contrário, o valor do Lote2 será atribuído.
Mais uma recomendação: Esqueça a variável Ponto. Use _Ponto ou a função Ponto()