[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

 

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.

Arquivos anexados:
 

Você não pode declarar matrizes como esta

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

 
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

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

 
victor417:

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

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?

Vejo inicialização variável. Onde estão as matrizes?

Timeseries? ;)

 
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.
 

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)

 
Olá! Alguém pode acrescentar aqui uma parada de trilha; e a parada é definida de forma diferente a cada vez... Conserte-a, por favor.
Arquivos anexados:
a_sidus_1.mq4  5 kb
Razão: