Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 100
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
Olá a todos, podem me ajudar a encontrar um erro no código da EA, acho que pesquisei tudo isso, parece estar tudo escrito corretamente no código, mas o programa não negocia corretamente por alguma razão! A idéia é a seguinte: o assessor tem que procurar duas velas longas da mesma direção (o comprimento entre as velas é ajustável no assessor, ou seja, entre as duas velas mínimas ou máximas, dependendo da direção), se o preço na direção oposta quebrar o mínimo ou máximo da última vela, deve ser aberto um negócio (Exemplo de situações de imagem no quadro anexo ao arquivo). O conselheiro deve abrir negócios em todas essas situações adequadas, mas por alguma razão ele abre negócios somente nas janelas de negociação entre dias. Aqui está a situação, que não é difícil para os programadores, por favor, ajude, conserte o erro. Código EA veja abaixo, assim como no arquivo anexo.
//+-----------------------------------------------------------------------------------------------+
//| Espaçamento_Candles.mq4 |
//| Direitos Autorais 2017, Vladim |
//| vk.com/id229534564 |
//| Correspondência: Vladim120385@yandex.ru |
//+-----------------------------------------------------------------------------------------------+
#Direitos autorais de propriedade "Copyright 2017, Vladim"
#link de propriedade "vk.com/id229534564"
#propriedade versão "1.00"
#propriedade rigorosa
//--- Parâmetros EA
paramEA de corda externa = ""; // Parâmetros EA
volume duplo externo = 0,01; // Volume
stopLoss duplo externo = 5; // StopLoss.
takeProfit duplo externo = 1,5; // TakeProfit
Espaçamento máximo externo duplo = 150; // Espaçamento máximo
duplo MinSpacing externo = 30; // MinSpacing
TrailingStop duplo externo = 0; // TrailingStop
magia int externa = 127; // Magia
//--- variáveis globais
data/hora newCandle;
int ponta;
//+-----------------------------------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEED);
}
//+-----------------------------------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+-----------------------------------------------------------------------------------------------+
nulo OnTick()
{
if(newCandle != Tempo[0]) FindPattern();
newCandle = Tempo[0];
}
//+-----------------------------------------------------------------------------------------------+
OpenOrder(int type) // Abrir uma ordem de mercado
{
if(type == OP_BUY) if(OrderSend(_Symbol, OP_BUY, volume, Ask, 0, 0, 0, "", magic, 0)) SetSLTP(OP_BUY);
if(type == OP_SELL) if(OrderSend(_Symbol, OP_SELL, volume, Bid, 0, 0, 0, 0, "", magic, 0)) SetSLTP(OP_SELL);
}
//+-----------------------------------------------------------------------------------------------+
SetSLTP(tipo int) //set stop orders
{
dupla lâmina = 0;
duplo tp = 0;
if(type == OP_BUY)
for(int i = 0; i < OrderTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol() == _Symbol && OrderMagicNumber() == magic && OrderType() == OP_BUY && OrderStopLoss() == 0)
{
sl = NormalizeDouble(Low[1] - stopLoss * _Point, _Digits);
tp = NormalizeDuplo(PreçoAbrir Pedido() + (PreçoAbrir Pedido() - Baixo[1]) * takeProfit, Digits);
if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0)) retorna;
}
if(type == OP_SELL)
for(int i = 0; i < OrderTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol() == _Symbol && OrderMagicNumber() == magic && OrderType() == OP_SELLL && OrderStopLoss() == 0)
{
sl = NormalizeDouble(Alta[1] + stopLoss * _Point, _Digits);
tp = NormalizeDouble(OrderOpenPrice() - (Alto[1] - OrderOpenPrice()) * takeProfit, Digits);
if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0)) retorna;
}
}
//+-----------------------------------------------------------------------------------------------+
FindPattern() // Procura de longa distância entre castiçais
{
if(Alto[1] < Alto[2] && Lance > Alto[1] && Baixo[1] < Baixo[2])
{
espaçamento duplo = NormalizeDuplo((Alto[2] - Alto[1]) / _Ponto, 0);
if(maxSpacing >= espaçamento && minSpacing <= espaçamento)
OpenOrder(OP_BUY);
}
if(Baixo[1] > Baixo[2] && Oferta < Baixo[1] && Alto[1] > Alto[2])
{
espaçamento duplo = NormalizeDuplo((Baixo[1] - Baixo[2]) / _Ponto, 0);
if(maxSpacing >= espaçamento && minSpacing <= espaçamento)
OpenOrder(OP_SELL);
}
{
if(TrailingStop!=0) TrailingStop();
}
}
//+-----------------------------------------------------------------------------------------------+
TrailingStop() vazio
{
duplo StLo,OSL,OOP;
bool error=true;
para (int i=0; i<OrdersTotal(); i++)
{
se (OrderSelect(i, SELECT_BY_POS))
{
dica = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
{
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
se (tip==0)
{
StLo = NormalizeDouble(Bid - TrailingStop*Point,Dígitos);
se (StLo < OOP) continuar;
se (StLo > OSL)
error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White);
}
se (tip===1)
{
StLo = NormalizeDouble(Pergunte + TrailingStop*Point,Dígitos);
se (StLo > OOP) continuar;
se (StLo < OSL || OSL==0 )
error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White);
}
if (!error) Alert("Error TrailingStop ",GetLastError()," ",Symbol()," SL ",StLo);
}
}
}
}
//+-----------------------------------------------------------------------------------------------+
Olá a todos, vocês podem me ajudar a encontrar um erro no código da EA, acho que pesquisei tudo, parece que está tudo escrito corretamente no código, mas o programa não negocia corretamente por alguma razão! A idéia é a seguinte: o assessor tem que procurar duas velas longas da mesma direção (o comprimento entre as velas é ajustável no assessor, ou seja, entre as duas velas mínimas ou máximas, dependendo da direção), se o preço na direção oposta quebrar o mínimo ou máximo da última vela, deve ser aberto um negócio (Exemplo de situações de imagem no quadro anexo ao arquivo). O conselheiro deve abrir negócios em todas essas situações adequadas, mas por alguma razão ele abre negócios somente nas janelas de negociação entre dias. Aqui está a situação, que não é difícil para os programadores, por favor, ajude, conserte o erro. O código EA pode ser visto abaixo e também no arquivo anexo.
Talvez já seja suficiente, você amontoou postes em cada linha e, ao mesmo tempo, criou o seu próprio.
Hi.
Você pode me dizer como limitar o comércio da EA pelo tempo?
Tentei muitos métodos do fórum, mas nada funcionou, não entendo nada de escrita.
Seria bom se você pudesse apenas apontar o dedo para o que colocar dentro.
Insira-o após o início. e o eXpert negociará todos os dias em um determinado intervalo de tempo no terminal
Olá a todos, vocês podem me ajudar a encontrar um erro no código da EA, acho que pesquisei tudo, parece que está tudo escrito corretamente no código, mas o programa não negocia corretamente por alguma razão! A idéia é a seguinte: o assessor tem que procurar duas velas longas da mesma direção (o comprimento entre as velas é ajustável no assessor, ou seja, entre as duas velas mínimas ou máximas, dependendo da direção), se o preço na direção oposta quebrar o mínimo ou máximo da última vela, deve ser aberto um negócio (Exemplo de situações de imagem no quadro anexo ao arquivo). O conselheiro deve abrir negócios em todas essas situações adequadas, mas por alguma razão ele abre negócios somente nas janelas de negociação entre dias. Aqui está a situação, que não é difícil para os programadores, por favor, ajude, conserte o erro. Veja o código EA abaixo e também no arquivo anexo.
verificar condição de entrada de compra e venda
Olá a todos, vocês podem me ajudar a encontrar um erro no código da EA, acho que pesquisei tudo, parece que está tudo escrito corretamente no código, mas o programa não negocia corretamente por alguma razão! A idéia é a seguinte: o assessor tem que procurar duas velas longas da mesma direção (o comprimento entre as velas é ajustável no assessor, ou seja, entre as duas velas mínimas ou máximas, dependendo da direção), se o preço na direção oposta quebrar o mínimo ou máximo da última vela, deve ser aberto um negócio (Exemplo de situações de imagem no quadro anexo ao arquivo). O conselheiro deve abrir negócios em todas essas situações adequadas, mas por alguma razão ele abre negócios somente nas janelas de negociação entre dias. Aqui está a situação, que não é difícil para os programadores, por favor, ajude, conserte o erro. Veja o código EA abaixo, bem como no arquivo anexo.
É melhor primeiro escrever a parte da EA que marcaria na carta as velas encontradas, para que tudo se torne claro. E as seguintes linhas são desnecessárias em seu caso:
Por favor, ajude a comunidade ...
*
Descarregado o indicador do filtro Kalman no fórum (código fonte anexado).
Tudo está bem na tabela.
Quando eu tento ler esta linha no Expert Advisor
iValue=iCustom(NULL,timeframe,"Kalmanfilter", 4,1,1 ,0,1);
Produz o mesmo grande número, obviamente não relacionado com o indicador:
O que poderia ser?
Ajuda da comunidade ...
*
Descarregado o indicador do filtro Kalman no fórum (código fonte anexado).
Tudo está bem na tabela.
Quando tento lê-lo em Expert Advisor, a seguinte linha
iValue=iCustom(NULL,timeframe,"Kalmanfilter", 4,1,1 ,0,1);
Produz o mesmo grande número, obviamente não relacionado com o indicador:
O que pode ser ?
VAZIO_VALOR
Valor vazio no buffer indicador
2147483647 (0x7FFFFFFFFFF)
VAZIO_VALOR
Valor vazio no buffer indicador
2147483647 (0x7FFFFFFFFFF)
:) Eu já o encontrei ...
Por que ela sai?
:) Eu já o encontrei ...
Mas por que ela vem à tona?
O indicador tem 2 matrizes porque existem 2 cores. Enquanto há uma linha da primeira cor na barra, a matriz com a segunda cor é igual a EMPTY_VALUE,
iValue=iCustom(NULL,timeframe, "Kalmanfilter", 4,1,1,0,1);
iValue = EMPTY_VALUE, então a linha em 1 barra é laranja. (porque matriz azul = EMPTY_VALUE)
O indicador tem 2 matrizes porque existem 2 cores. Enquanto há uma linha da primeira cor na barra, a matriz com a segunda cor é igual a EMPTY_VALUE,
iValue=iCustom(NULL,timeframe, "Kalmanfilter", 4,1,1,0,1);
iValue = EMPTY_VALUE, então a linha em 1 barra é laranja. (Porque matriz azul = EMPTY_VALUE)
Obrigado, Nikolai...
Eu tirei de ambas as linhas.
Depois os fundi em um só (deixei um buffer). O mesmo resultado.
*
Tenho uma pergunta a fazer:
O indicador tem a variável draw_begin=500, ou seja, o número de castiçais da extremidade (do castiçal mais fresco) onde o gráfico é desenhado.
E quando extraímos o valor do indicador usando o método iCustom(), esses 500 pontos são contados a partir de que castiçal ?
Por que é importante - draw_begin é usado não só para desenhar, mas também participa do cálculo do indicador ...