EA N7S_AO_772012 - página 29

 
boing9267 >> :

>> O que exatamente o choca, você pode ser mais específico?

É realmente confuso. Os nomes das variáveis são um pesadelo. Metade das variáveis são globais, mas não são. Em resumo, agora estou reescrevendo tudo para entender como tudo funciona.

 
:) Eu também comecei a refazê-lo por mim mesmo, acho que poderei comparar opções durante o fim de semana :)
 
boing9267 >> :
:) Eu também comecei a refazê-lo por mim mesmo, acho que vou terminá-lo no fim de semana para que possamos comparar opções :)

Veja! Portanto, não sou o único que não entende :)

 
A propósito, acho que é ainda melhor para aprender o código:). Então, graças ao atirador por isso
 
boing9267 >> :
Acho que é ainda melhor para aprender o código:). Portanto, obrigado ao atirador por isso.

Confira as mensagens pessoais.

 
mpeugep писал(а) >>

Observação interessante! E se você puder - nomear o CD, pelo menos a primeira letra)

А

 
rtr989 писал(а) >>

desculpe a pergunta possivelmente estúpida... Diga-me, e todas essas otimizações estão de alguma forma relacionadas entre si, quero dizer que o estágio 2 é baseado em dados após o estágio 1? após o primeiro estágio, eu carrego _stage_2=y_l3.set e aqueles parâmetros de entrada que estavam após a primeira otimização, como eu entendo, são substituídos pelos prescritos em _stage_2=y_l3.set? então qual é o objetivo da primeira otimização? ou estou enganado e estou fazendo algo errado? agora estou fazendo o seguinte: carrego _step_1=x_l3.set, otimizo, escolho o melhor resultado na minha opinião, clico com o botão direito do mouse em "set input parameters", passo a passo pelo testador, depois carrego _step_2=y_l3.set, marque a caixa para otimização... e assim 6 otimizações, após a 6ª otimização eu recebo o conjunto que preciso, estou fazendo certo?

Você está fazendo tudo corretamente. E você entende quase tudo bem. Exceto pelo fato de que os arquivos do conjunto de otimização como _step_2=y_l3.set são especialmente escritos por mim, que quando carregados sequencialmente não afetam de forma alguma os valores obtidos anteriormente. >> Quanto à dependência, o primeiro e o segundo passos não dependem um do outro (quase :-)) o terceiro depende de dois (primeiro e segundo) o quarto de três, o quinto também depende de três e quase não depende do quarto, enquanto o sexto depende de todos eles.

 
ShestkoFF писал(а) >>

Hoje eu decidi tentar entender como funciona um Expert Advisor e fiquei chocado. Tudo isso me parece muito confuso.
Será que alguém além de SHOOTER777 entende como funciona uma EA? Não quero dizer como deve ser otimizado, mas como funciona.

Desculpe, mas este é um dos, se não o mais fácil dos meus EAs. Em outros, mesmo eu não consigo perceber rapidamente depois de algum tempo - esqueço, e explicar aos outros como e o que funciona é uma chatice (houve até dicas de que eu não o fiz). Eu tentei compartilhar meu código com eles, que eles poderiam me ajudar a corrigir alguns momentos ou melhorá-lo, mas.... Embora eu tente criar códigos principalmente através de funções, é mais claro e fácil de entender. Gostaria de aprender a fazer comentários concisos em código...

 
ShestkoFF писал(а) >>

É realmente confuso. Os nomes das variáveis são um pesadelo. Metade das variáveis são globais, embora não o sejam. Em resumo, agora estou reescrevendo tudo para entender como tudo funciona.

Pode haver "rachaduras" nas variáveis. Não estudei a programação em detalhes, portanto - me dê algumas dicas, uma crítica construtiva será bem-vinda.

 
SHOOTER777 >> :

Pode haver "problemas" com as variáveis. Eu não estudei a programação em detalhes, portanto, dicas, críticas construtivas são bem-vindas.

Eu não gosto de criticar as coisas que funcionam. Vou apenas fazer algumas críticas sobre o código:

  • Não é preciso escrever tudo em uma linha, é impossível ler o código dessa maneira. Por exemplo, o código de inicialização do Expert Advisor
int init(){ MMH1 = Hour( ); LFB  = iTime(Symbol(), 0, 0); H1();
Delta_G12 = G12(); if ( IsOptimization( )  ) TrBlnc = false;//if ( IsTesting() ) TrBlnc = false;
if ( VSR () !=0) { Flg=false;} else { Flg=true;}
cmmnt();}

Acho melhor você escrever

int init(){
	expertInitHour = Hour();
	SYMBOL = Symbol();
	lastBarTime  = iTime(NULL, 0, 0); 
	H1();
	AO_Delta = indicatorDelta(); 
	if (IsOptimization()) {
		TrBlnc = false;
	}
	if ( VSR() != 0) {
		Flg=false;
	} else {
		Flg=true;
	}
	cmmnt();
}

O código se torna mais legível, mas mesmo com esta substituição, não fica claro o que são H1, VSR, Flg.

  • Nomeie as variáveis de uma forma significativa. É melhor gastar mais alguns minutos para pensar em uma variável ou nome de função, mas depois é fácil lembrar para que serve. Exemplo: A função G12 - para que serve? Ele calcula o delta entre os últimos valores do indicador (você o tem até mesmo selecionando a variante do indicador). Bem, deve ser chamado de indicadorDelta, é muito mais fácil e claro.
  • Não tornar as variáveis globais, se elas forem locais. Não me lembro, em que função eu o vi.
  • Não tornar as variáveis globais estáticas não faz sentido. Se este não for o caso, por favor explique.
  • Usar constantes padrão definidas no idioma. Por exemplo, para especificar um intervalo de tempo. duplo iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));} parece melhor substituído pelo duplo iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr));}.


Vou tentar reescrever este EA e torná-lo mais claro para mim e talvez também para os outros.

Muito obrigado por compartilhar sua idéia. É muito bom que você compartilhe seu trabalho e divulgue os resultados todas as semanas.
Pedimos desculpas pelas críticas :)

Razão: