Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 176
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
Leitura, mas nunca teria adivinhado abrir o arquivo antes do laço )
Talvez eu não o tenha lido com atenção )Há um consultor especializado, que é guiado pelo Pinbar ao negociar. O robô funciona corretamente em moedas e é totalmente imprevisível em CFDs.
Você pode me dizer como isso pode acontecer?
Eu escrevi um robô que é baseado em Pinbar quando se comercializa. O robô funciona corretamente em moedas e completamente imprevisível em CFDs.
Você pode me dizer como isso pode acontecer?
Aqui está a função de definição Pinbar
Quando o inseri no Expert Advisor, a função funciona bem (ou seja, o Expert Advisor estabelece acordos na próxima barra após a barra correspondente às condições da função) para pares de moedas. No entanto, as negociações sobre CFD estão abertas em todos os lugares.
Qual é a diferença entre CFDs e pares de moedas para esta função?
Aqui está a função de definição Pinbar
Quando o inseri no Expert Advisor, a função funciona bem (ou seja, o Expert Advisor estabelece acordos na próxima barra após a barra correspondente às condições da função) para pares de moedas. No entanto, as negociações sobre CFD estão abertas em todos os lugares.
Qual é a diferença entre CFDs e pares de moedas para esta função?
Primeiro de tudo, substitua todos && por {} para que cada uma das condições estivesse em seu próprio bloco - depois você pode em cada bloco desenrolar o resultado testado - veja em log que valores você obtém.
Obrigado, segui o conselho e entendi onde eu estava errando. Porque minha EA estava se movendo em 5 dígitos e o CFD é de apenas 2 dígitos e eu esperava que a EA reagisse a um mínimo de 50 pips e obtive a reação de 5 pips. Fiz asneira.
Por favor, ajude-me com este aspecto.
Existe tal parte no código:
MathAbs(Close1-Open1)/(High1-Low1)
Às vezes acontece que High1=Low1. O testador então gera o erro crítico dizendo que não pode dividir por zero.
Como contornar isso?
Obrigado, segui o conselho e entendi onde eu estava errando. Porque minha EA estava se movendo em 5 dígitos e o CFD é de apenas 2 dígitos e eu esperava que a EA reagisse a um mínimo de 50 pips e obtive a reação de 5 pips. Fiz asneira.
Por favor, ajude-me com este aspecto.
Existe tal parte no código:
Às vezes acontece que High1=Low1. O testador então gera o erro crítico dizendo que não pode dividir por zero.
Como contornar isso?
Você pode fazer isso sem pensar:
Olá, encontrei um problema durante a compilação:
nulo OnTick()
{
preço mínimo duplo=99999999, mp, preço máximo=-99999999;
for(int i=0; i<10; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i);
se (mp < minprice)
minprice = mp;
}
for(int i=0; i<10; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i);
se (mp > maxprice)
maxprice = mp;
}
Comentário ("Minprice: " + DoubleToString(minprice, 5) + "\n" + "\n" +
"Maxprice: " + DoubleToString(maxprice, 5));
}
O código fonte contém funções que o compilador jura por iLow e iHigh e variável Simbol() ali em modo string, mas resolve outro problema no exemplo. O que eu preciso consertar no código acima. Estou preso e não consigo compilar o laço para verificá-lo.
DO LIVRO DIDÁTICO
Se você quiser obter o valor correspondente à barra incompleta atual, então
você pode usar a primeira forma da chamada, especificando start_pos=0 e count=1.
Exemplo:
#property copyright "2009, MetaQuotes Software Corp."
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#Descrição da propriedade "Exemplo de saída de valores altos[i] e baixos[i]".
#Descrição da propriedade "para barras escolhidas aleatoriamente".
duplo Alto[],Baixo[];
//+------------------------------------------------------------------+
//| Get Low para um determinado número de barras |
//+------------------------------------------------------------------+
duplo iLow(string symbol,ENUM_TIMEFRAMES timeeframe,int index)
{
duplo baixo=0;
ArraySetAsSeries(baixo, verdadeiro);
int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);
if(copy>0 && index<copied) low=Low[index];
retorno(baixo);
}
//+------------------------------------------------------------------+
//| Obtenha Alto para o número de barra dado |
//+------------------------------------------------------------------+
duplo iHigh(string symbol,ENUM_TIMEFRAMES timeeframe,int index)
{
dobro alto=0;
ArraySetAsSeries(alto, verdadeiro);
int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);
if(copy>0 && index<copied) high=High[index];
retorno(alto);
}
//+------------------------------------------------------------------+
Olá, encontrei um problema durante a compilação:
nulo OnTick()
{
preço mínimo duplo=99999999, mp, preço máximo=-99999999;
for(int i=0; i<10; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i);
se (mp < minprice)
minprice = mp;
}
for(int i=0; i<10; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i);
se (mp > maxprice)
maxprice = mp;
}
Comentário ("Minprice: " + DoubleToString(minprice, 5) + "\n" + "\n" +
"Maxprice: " + DoubleToString(maxprice, 5));
}
O código fonte contém funções que o compilador jura por iLow e iHigh b variável Simbol() está em modo string ali, mas resolve outro problema no exemplo. O que eu preciso consertar no código acima. Estou preso e não consigo compilar o laço para verificá-lo.
DO LIVRO DIDÁTICO
Se você quiser obter o valor correspondente à barra incompleta atual, então
você pode usar a primeira forma da chamada especificando start_pos=0 e count=1.
Exemplo:
#property copyright "2009, MetaQuotes Software Corp."
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#Descrição da propriedade "Exemplo de saída de valores altos[i] e baixos[i]".
#Descrição da propriedade "para barras escolhidas aleatoriamente".
duplo Alto[],Baixo[];
//+------------------------------------------------------------------+
//| Get Low para um determinado número de barras |
//+------------------------------------------------------------------+
duplo iLow(string symbol,ENUM_TIMEFRAMES timeeframe,int index)
{
duplo baixo=0;
ArraySetAsSeries(baixo, verdadeiro);
int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);
if(copy>0 && index<copied) low=Low[index];
retorno(baixo);
}
//+------------------------------------------------------------------+
//| Obtenha Alto para o número de barra dado |
//+------------------------------------------------------------------+
duplo iHigh(string symbol,ENUM_TIMEFRAMES timeeframe,int index)
{
dobro alto=0;
ArraySetAsSeries(alto, verdadeiro);
int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);
if(copy>0 && index<copied) high=High[index];
retorno(alto);
}
//+------------------------------------------------------------------+
há um erro nesta palavraSimbol() você deve escrever Symbol() ou _Symbol
Você tem um erro nesta palavraSimbol() - Símbolo() ou _Símbolo deve ser escrito
Obrigado, o erro no Simbol foi corrigido pela ortografia Símbolo corretamente. Eu tenho algo errado com o iLow e iHigh functions.
Adiferença em % entre MQL4 e MQL5 ? caso contrário, terei que coçar minha cabeça toda vez que passar pelos tutoriais em vídeo da MQL4.