[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
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;
datetime T_Bar=Time [Ind_Bar]; // Время открытия бараdouble O_Bar=Open [Ind_Bar]; // Цена открытия бараdouble C_Bar=Close[Ind_Bar]; // Цена закрытия бараdouble H_Bar=High [Ind_Bar]; // Максимальная цена бараdouble L_Bar=Low [Ind_Bar]; // Минимальная цена бара
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
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.
datetime T_Bar=Time [Ind_Bar]; // Время открытия бараdouble O_Bar=Open [Ind_Bar]; // Цена открытия бараdouble C_Bar=Close[Ind_Bar]; // Цена закрытия бараdouble H_Bar=High [Ind_Bar]; // Максимальная цена бараdouble L_Bar=Low [Ind_Bar]; // Минимальная цена бара
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?
Olá, alguém pode fazer um indicador em ziguezague para dobrar a corrente a um desvio mínimo em relação ao valor mais baixo, mas em pips... Por exemplo, se você definir um desvio de 50 pips, qualquer coisa menos que isso, é considerado ruído... Eu realmente não sei como procurar por um kollichestvo tão grande no fórum... Obrigado antecipadamente.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
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)