Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 52
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
O que fazer se a parada/parada for 200
mas
tp=NormalizeDouble((preço+(TakeProfit*_Point)),Dígitos);
sobre um dólar-yen renderá 317.000 à taxa de câmbio de 117.000
resultado esperado 117.200
Se Point()==0,001 (em USDJPY), então 200*0,001 é igual a 0,2
Agora, se adicionarmos 0,2 a 117,0, obtemos 117,2
Onde está a "injustiça"?
Se Point()==0,001 (em USDJPY), então 200*0,001 é igual a 0,2
Agora, se adicionarmos 0,2 a 117,0, obtemos 117,2
E onde está a "injustiça"?
espera-se que 117+(200*_Ponto) renderá 117.200
é normalmente testado em EURUSD
Vitaly o descreveu acima, obrigado.
Acho que o encontrei.
Acho que é bom o suficiente como algoritmo intermediário e agora é necessário filtrar esses momentos de alguma forma
https://www.mql5.com/ru/charts/6351907/audjpy-m5-metaquotes-software-corp
117+(200*_Ponto) deve dar uma saída de 117.200
...Bem, isso é o que ele está dando... Eu lhe mostrei o cálculo. Ou você tem várias moedas e recebe dados de um símbolo "não nativo"?
Depois use SymbolInfoDouble() e (int)SymbolInfoInteger() em vez de Point() e Digits()
Bem, isso é o que ele está dando... Eu lhe mostrei o cálculo. Ou você tem uma multi-moeda, e tira os dados de um símbolo "não nativo"?
Em vez de Point() e Digits() use SymbolInfoDouble() e (int)SymbolInfoInteger()
Obrigado, funciona))))
Atualmente estou procurando uma maneira de inserir uma parada móvel em uma cadeia de pedidos
Tenho 10 pedidos em etapas de 200 de 115.000 a 117.000
Cada lote é maior por valor x do que o anterior
o objetivo é colocar uma parada móvel em toda a cadeia de pedidos usando o seguinte cálculo (preço médio)+(y*_Ponto)
Minha pergunta é como anexá-lo ao preço médio de toda a pilha e como ele é calculado dependendo dos lotes
Obrigado, funciona))))
Atualmente procurando uma maneira de inserir o rastreamento em uma cadeia de pedidos
Tenho 10 pedidos em etapas de 200 de 115.000 a 117.000
Cada lote é maior por valor x do que o anterior
o objetivo é colocar uma parada móvel em toda a cadeia de pedidos usando o seguinte cálculo (preço médio)+(y*_Ponto)
Eu mesmo tenho uma rolha de arrasto; a questão é como prendê-la ao preço médio de toda a pilha e como ela é calculada em função dos lotes
Um conselho universal: Aprenda a programar do zero. Então você não terá tais perguntas, a programação não é uma tarefa fácil.
E à essência da pergunta: Então, você tem que olhar através de TODAS as ordens no loop, selecionando apenas "necessárias" e modificando-as. Mas é preciso ter muito cuidado com esta questão, pois a probabilidade de substituir a ordem selecionada para trabalhar é muito alta.
Um conselho universal: Aprenda a programar do zero. Então não haverá tais perguntas, a programação não é fácil.
E à essência da pergunta: Portanto, você precisa passar por TODAS as ordens do loop, selecionando apenas "necessárias" e modificando-as. Mas é preciso ter muito cuidado com esta questão, pois a probabilidade de substituir a ordem selecionada para trabalhar é muito alta.
Bom dia a todos, escrevi um EA baseado em MA. (Eu mesmo comecei a escrever na MQL4 não faz muito tempo, então decidi começar com algo simples. Por isso, eu queria saber o que fiz de errado. A essência do Expert Advisor é simples: dar um alerta quando dois ou três MAs são cruzados (dependendo do MÉTODO: Agressivo = cruzamento de dois MAs, conservador = cruzamento de 3 MAs) ... Isso é tudo. Eu entrarei no mercado por conta própria. Em meu consultor especializado, eu prescrevi duas funções: Agressivo - este é um sinal em um simples cruzamento de dois MA e Conservador mais rápidos - quando no cruzamento de dois MA rápidos você também deve considerar o mais lento (ou seja, o sinal na direção da tendência). O problema é que o Expert Advisor dá apenas UM alerta (quando inicia ou muda o cronograma) e fica em silêncio sobre todos os sinais subsequentes! Eu ficaria grato se você me dissesse o que está errado. Eu prescrevi a função para todos os eventos de acordo com as regras da MQL4. É claro que eu poderia registrar tudo sem funções no evento On Tick, mas eu quero registrar funções separadamente, para que asfunções possam ser facilmentechamadas e eu quero adicionar novas funções de "filtros" com o tempo.
Código
================================================================================================
Método externo de bool=falso; // seleção do método: Conservador ou Agressivo.
Tempo_Frame=1;//Time frame
input bool Metod=false; //Conservative-TRUE | Aggressive-FALSE
FastMA_Parametr=5;
int int int int intMA_Parametr=8;
externo int SlowMA_Parametr=18;
TendMA externo interno=163;
bool externo DemarkGo=falso;
período externo interno Demperiodo=4;
int rez;// se MA cruzar para baixo, rez=-1. se cruzar para cima, rez=1.
//+------------------------------------------------------------------+
// Inicializar MA
duplo FastMA=iMA(Symbol(),Time_Frame,FastMA_Parametr,0,3,0,0);// FastMA
duplo MiddiMA=iMA(Symbol(),Time_Frame,MidMA_Parametr,0,3,0,0);// Média MA
duplo SlowMA=iMA(Symbol(),Time_Frame,SlowMA_Parametr,0,1,0,0); Slow MA
//+------------------------------------------------------------------+
int OnInit()
{
rez=0;
return(INIT_SUCCEED);
}
//=======================================
//------------------------------------------------------------------------------
nulo OnDeinit(const int razão)
{
}
//=============================================
//+---------------------Função para o sinal Konservative se Metod=true---------------------------------------------+
int Konservative()
//Cheque um crossover ascendente de 3 linhas
{
se (Metod===verdadeiro)
{
if(FastMA>MiddiMA&&&MiddiMA>SlowMA&&&rez<=0)
{
Alert(Symbol(),Time_Frame,"----Up----. Conservador");
rez=1;
Comentário ("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
retorno(rez);
}
//Cheque para crossover para baixo de 3 linhas
if(FastMA<MiddiMA&&&MiddiMA<SlowMA&&&rez>=0)
{
Alert(Symbol(),Time_Frame", ---- DOWN----. Conservador");
rez=-1;
Comentário ("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
retorno(rez);
}
}
retorno(rez);
}
//=================================================
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Função agressiva se
int Agressivo()
// Verifique se há um cruzamento ascendente de 2 linhas sem lentidão
{
se (Método==falso)
{
if(FastMA>MiddiMA&&rez<=0)
{
Alert(Symbol(),Time_Frame,"----Up----. agressivo");
rez=1;
Comentário ("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
}
//Cheque para o crossover descendente de 2 linhas sem uma linha lenta
if(FastMA<MiddiMA&&rez>=0)
{
Alert(Symbol(),Time_Frame", ---- DOWN----. Agressivo");
rez=-1;
Comentário ("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
}
}
retorno(rez);
}
Não é alto, mas 100%. No momento atual é a última ordem e as outras estão em pausa, mas o esquema não é preciso e gostaria que fosse melhor.
Não, não 100%. Ou talvez você esteja falando de algo mais.
Em geral, o algoritmo é o seguinte:
Você criou um loop para passar por todas as ordens.
Você seleciona a próxima ordem para trabalhar com ela.
Você verifica se essa ordem é necessária... Caso contrário, a próxima iteração do laço...
Se for "necessário", então você verifica se é adequado para modificação. Basta comparar o quanto está longe de seu nível StopLoss
Se a distância for suficiente, o pedido é modificado.
Portanto, se você tiver uma função de modificação com um loop em todos os pedidos, e antes de sua chamada, o loop também estiver funcionando, então o pedido selecionado será alterado...
Não, não 100%. Ou talvez você esteja falando de algo mais.
Em geral, o algoritmo é o seguinte:
Você criou um loop para passar por todas as ordens.
Você seleciona a próxima ordem para trabalhar com ela.
Você verifica se essa ordem é necessária... Caso contrário, a próxima iteração do laço...
Se for "necessário", verificar se é adequado para modificação. Basta comparar o quanto está longe de seu nível StopLoss
Se a distância for suficiente, o pedido é modificado.
Portanto, se você tiver uma função de modificação com um loop em todas as ordens, e antes de sua chamada, o loop também está funcionando, então a ordem selecionada será alterada...