[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 674
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
https://www.mql5.com/ru/forum/491
Obrigado.
Esse é um problema.
Eu comecei a modificar o Expert Advisor do tutorial - strings.mq4 (link para experthttp://c.mql4.com/book/mq4/experts/strings.mq4)
Acrescentei algumas linhas, mas não funciona. É claro que cometi um erro, mas não consigo encontrar o erro.
Portanto. Todas as mudanças estão concentradas no bloco 10.
Aqui está o original:
//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // Função personalizada...
{ // ...criar objeto
Cor Cor; // cor do objeto
data/hora T_Bar=Tempo [Ind_Bar]; // hora de abertura do bar
O_Bar=Abrir [Ind_Bar]; // Preço de bar aberto
duplo C_Bar=Fechar[Ind_Bar]; // Preço de fechamento de uma barra
H_Bar=High [Ind_Bar]; // Preço máximo da barra
double L_Bar=Low [Ind_Bar]; // Preço mínimo da barra
String Nom_Lin =Linha + "_"; // String - número de linha
// string Nom_Lin = DoubleToStr(Line,0)+"_"; // Isto também é possível
Str_Time=TimeToStr(T_Bar); // String - tempo aberto.
string His_Name=Prefix+Nom_Lin+Str_Time;// Nome do objeto criado
se (O_Bar < C_Bar) Cor=azul; // seleção de cor dependendo...
se (O_Bar > C_Bar) Cor=vermelho; // ... dependendo das características da barra
se (O_Bar ==C_Bar) Cor=Verde;
interruptor(Linha) // Linha fina ou grossa
{
caso 1: // Linha fina
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar);
pausa; // Interruptor de saída
caso 2: // linha grossa
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar);
ObjectSet( His_Name, OBJPROP_WIDTH, 3); // Estilo
}
ObjectSet( Seu_Nome,OBJPROP_COLOR,Cor); // Cor
ObjectSet( Seu_Nome, OBJPROP_RAY, falso); // Beam
ObjectSetText(His_Name, "Object was created by the Expert Advisor",10); // Descrição
retornar; // Sair da função
}
E aqui está o que fiz (compila sem erros): (ver também arquivo anexo)
//-------------------------------------------------------------- 10 --int Create(int Ind_Bar, int Line) // Função personalizada...
{ // ...criação de objetos
Cor Cor; // Cor do objeto
data/hora T_Bar=Tempo [Ind_Bar]; // hora de abertura do bar
O_Bar=Abrir [Ind_Bar]; // Preço de bar aberto
duplo C_Bar=Fechar[Ind_Bar]; // Preço de fechamento de uma barra
H_Bar=High [Ind_Bar]; // Preço máximo da barra
double L_Bar=Low [Ind_Bar]; // Preço mínimo da barra
//-------------------изменения---------------------------------------
double Macd_M_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// topo - acesso ao cálculo do MAACD nos dias da linha principal
double Macd_S_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// Esta é a referência para o MACD e cálculo da Linha de Sinal nos dias
double Macd_M_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// Esta é a referência para o MACD e o cálculo da linha principal no cronograma atual
double Macd_S_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// Esta é a referência para o MACD e o cálculo da linha de sinal no período de tempo atual
String Nom_Lin =Linha + "_"; // String - número da linha
// string Nom_Lin = DoubleToStr(Line,0)+"_"; // Você pode fazer isso desta maneira
Str_Time=TimeToStr(T_Bar); // String - tempo aberto.
string His_Name=Prefix+Nom_Lin+Str_Time;// Nome do objeto criado
if ((Macd_M_D1 < Macd_S_D1)&&(Macd_M_H4 < Macd_S_H4))Color=Blue;
if ((Macd_M_D1 > Macd_S_D1)&&(Macd_M_H4 > Macd_S_H4))Color=Red;
//
// se (O_Bar < C_Bar) Cor=azul; //Cor de seleção, dependendo da...
// se (O_Bar > C_Bar) Cor=vermelho; // ... dependendo das características da barra
//if (O_Bar ==C_Bar) Cor=Verde;
//-------------------изменения---------------------------------------
O objetivo - se as leituras MACD no cronograma diário e atual forem semelhantes - é colorir a vela em vermelho ou azul, dependendo da direção.
Você não pode declarar matrizes como esta
O compilador verá que existe uma variável em vez do tamanho da matriz. Ele simplesmente não saberá quanta memória deve ser alocada para a futura matriz. É por isso que seu código não funciona
Você não pode declarar matrizes como esta
O compilador verá que existe uma variável em vez do tamanho da matriz. Ele simplesmente não saberá quanta memória deve ser alocada para a futura matriz. E é por isso que seu código não funciona
A questão é que não toquei nessa parte do Expert Advisor - e funcionou bem - e a parte especificada do código foi retirada do tutorial da MQL4 - aqui https://c.mql4.com/book/mq4/experts/strings.mq4
A questão é que não toquei nesta parte do Expert Advisor - e tudo funcionou - e a parte mencionada do código foi retirada do tutorial da MQL4 - aqui https://c.mql4.com/book/mq4/experts/strings.mq4
Se é assim que as arrays são declaradas no tutorial, é bastante estranho. Você poderia ter destacado com um comentário a parte do código que VOCÊ contribuiu.
Eu também não li esse livro didático. E qual é o raciocínio do autor por trás da legitimidade da declaração de array?
Notei uma característica estranha - quanto maior o volume de citações, mais difícil o testador abranda. Se começo o teste a partir de 1999, ele corre rápido, mas quanto mais perto do tempo presente, mais duros são os freios. 2008 e mais próximo de "hoje" - impossível de testar em modo de visualização.
Como você combate os freios do testador????
drknn:
Você não pode declarar matrizes como esta
O compilador verá que existe uma variável em vez do tamanho da matriz. Ele simplesmente não saberá quanta memória deve ser alocada para a futura matriz. E é por isso que seu código não funciona.
Se é assim que as arrays são definidas no tutorial, é realmente estranho. Você teria colocado um comentário sobre a parte do código que VOCÊ escreveu?
Eu também não li esse livro didático. E qual é o raciocínio do autor por trás da legitimidade da declaração de array?
Vejo inicialização variável. Onde estão as matrizes?
Timeseries? ;)
Pode me dizer por favor, eu tenho um problema com o testador.
O relatório mostra que a perda total = 863 e o saque máximo = 1427. como isso pode ser?
Se você olhar para a curva de equilíbrio - você pode ver que o drawdown máximo - 863.
Que tipo de falha é essa, você pode me dizer por favor, ou talvez seja assim que deve ser?
Obrigado antecipadamente)