Lógica de aprendizagem - página 5

 
Vinin:


Essa não é a minha linha. É do autor

Código de início() ideal

Estas duas linhas parecem estranhas, para dizer de forma suave:

   limit = Bars - counted_bars-1;
   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;

melhor assim:

   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;
   else limit = Bars - counted_bars-1;
 
PapaYozh:

Não entendo porque temos que dançar em torno de variáveis booleanas quando podemos escrevê-lo desta maneira:

Eu gostei, obrigado por me lembrar, PapaYozh. Eu mesmo criei tais construções - e esqueci...
 
Vinin:


E a lógica também, a lógica do pensamento.

A terceira opção é abandonar completamente as condições lógicas no indicador. A questão que se coloca - é possível.

Vamos tentar .

Para isso, acrescentaremos algumas variáveis lógicas

Todo o código da função de início agora se parece com o seguinte


Parece-me que pode ser simplificado

for(int i = 0; i < limite; i++)
{
// Opção três_v1

high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=high-low;
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}

Arquivos anexados:
 
Mathemat:
Eu gostei, obrigado por me lembrar, PapaYozh. Eu mesmo criei tais construções - e esqueci...

Na minha opinião, há um uso excessivo da chamada de função Symbol().

Eu o escreveria dessa forma:

   string smbl=Symbol();
   showEUR  = ( StringFind(smbl, "EUR", 0) != -1);
   showUSD  = ( StringFind(smbl, "USD", 0) != -1);
   showGBP  = ( StringFind(smbl, "GBP", 0) != -1);
   showCHF  = ( StringFind(smbl, "CHF", 0) != -1);
   showJPY  = ( StringFind(smbl, "JPY", 0) != -1);
Mas isso não se trata de lógica :)
 
Vinin:

É realmente muito simples. Há um desejo de ajudar os outros a fazer o melhor código, e aprender com os outros.

Não é segredo que eventualmente se desenvolve certos estereótipos que às vezes (na maioria das vezes) ajudam e às vezes dificultam.

Vou preparar uma variante do indicador e tentar explicar o que foi feito e por quê. Se você estiver interessado, é claro.


Não há como explicar pelo exemplo como fazer um código ideal - haverá demasiadas omissões.

A questão é que existem muitas regras para criar um código ideal. Por exemplo, não muitos dos que estão familiarizados com a linguagem MQL4 sabem que é muito mais fácil para um processador realizar operações de adição e subtração do que a multiplicação e divisão. Poucas pessoas sabem que do ponto de vista da otimização do código é melhor escrever a=b+b do que a=b*2. Portanto, acho que para entender a lógica de programação e otimização é muito mais útil enviar os interessados para trabalhar na construção de um código ideal e no estudo de linguagens algorítmicas, bem como acostumar os usuários a criar fluxogramas de futuros programas para evitar omissões e minimizar retrabalhos.

Eu anexei um link para um livro muito bom sobre construção de códigos que pode ser baixado para este post.

С. S. McConnel "O Código Perfeito".


Você pode baixar o livro aqui: http://depositfiles.com/files/ebk6t6t5h (tamanho do arquivo 21 Mbytes. Formato - djvu)

Assim, de modo geral, este tópico só pode tratar de casos especiais das seções de código fonte e otimizado com explicações sobre por que a seção de código otimizado é melhor que a seção de código fonte e por que é otimizada desta forma. Acho que era exatamente isso que você queria originalmente.

 
drknn:


Em anexo a este post está um link para download de um excelente livro sobre construção de códigos.

С. S. McConnel "O Código Perfeito".

+1, livro muito útil.
 
drknn:

Assim, em geral, neste tópico só podemos discutir casos especiais das seções de código otimizado e fonte com explicações sobre por que a seção de código otimizado é melhor que a fonte e por que ela é otimizada de tal forma. Acho que é exatamente isso que você queria desde o início.

Nada mal também, mas ainda assim seria bom ou esclarecer um nome de ramo ou começar a estudar a lógica.

Eu realmente não sei como fazer o segundo eu mesmo...))

 
denis_orlov:

Também não é ruim, mas seria bom ou esclarecer o nome do ramo ou começar a estudar a lógica.

Eu realmente não sei como fazer o segundo eu mesmo...))


Lógica(grego λογική - "ciência do raciocínio", "arte do raciocínio" de λόγος - "discurso", "raciocínio", "pensamento")- a ciência das formas, métodos e leis da atividade cognitiva intelectual, formalizada com linguagem lógica. Como este conhecimento é derivado da razão, a lógica também é definida como a ciência das formas e leis do pensamento correto. Como o raciocínio assume a forma de raciocínio em linguagem, dos quais a prova e a prova são casos especiais, a lógica é às vezes definida como a ciência dos modos de raciocínio ou a ciência das formas de provar e refutar. A lógica como ciência estuda formas de se chegar à verdade no processo de cognição de forma indireta, não a partir da experiência sensorial, mas a partir do conhecimento obtido anteriormente, de modo que também pode ser definida como uma ciência sobre formas de se inferir o conhecimento.

O conhecimento dedutivo, obtido através da aplicação das leis da lógica e dos métodos do pensamento lógico, - a finalidade de qualquer ação lógica, visando alcançar a verdade e a aplicação do conhecimento resultante a um conhecimento mais profundo dos fenômenos e eventos do mundo.

Uma das principais tarefas da lógica é determinar como chegar a uma conclusão a partir de uma premissa(raciocínio adequado) e como obter um verdadeiro conhecimento sobre o tema do pensamento, a fim de obter uma compreensão mais profunda das nuances do objeto de pensamento em estudo e suas relações com outros aspectos do fenômeno em questão.

A lógica serve como uma das ferramentas de quase todas as ciências.

 
denis_orlov:

Também não é ruim, mas seria bom ou esclarecer o nome do ramo ou começar a estudar a lógica.

Eu mesmo não sei como fazer o segundo)...


Eu posso compartilhar como foi para mim.

Levei três anos para tentar entender a lógica como uma ciência - ainda não consegui entender a essência, por exemplo, por que preciso de lógica em absoluto. Era apenas um conjunto de padrões quase inúteis, mas eu sentia que algo estava errado, então continuei a ler, a tentar raciocinar com seus esquemas, a resolver todo tipo de problemas lógicos com a ajuda de fórmulas. E então, do nada, de repente, me surgiu... Então, quando finalmente percebi o valor desta disciplina, comecei a envolver ativamente meus amigos no estudo da lógica. Eu estava literalmente "em chamas" com lógica. Meus amigos foram ativamente atraídos por todo o humor lógico, a beleza das conclusões difíceis, a insolubilidade dos paradoxos, e enquanto eu estava por perto, eles aprenderam pelo menos alguma coisa. Mas quando deixadas sozinhas consigo mesmas, elas se desvaneceram como as brasas de um incêndio. Nenhum deles jamais havia acendido o fogo de seu próprio espírito. Aqui eu entendi que eles estavam interessados em mim, mas não mais - nenhum deles tinha o poder de pontapé atrás deles que os obrigaria a entrar nesta ciência. E então todos aqueles que tinham realmente estudado Lógica, para mim, eu tinha me dividido em duas categorias. Todos eles foram obrigados a estudá-la. Não havia como fugir dele. Alguns professores que ensinam lógica nas universidades dizem que é muito difícil para os estudantes. Pelo contrário, eles se surpreendem de como foi difícil para eles e como é fácil de aplicar. Assim, para mim mesmo, dividi todos aqueles forçados em duas classes - aqueles que se apaixonaram pela lógica ao estudá-la, e aqueles que passaram seus créditos e se esqueceram dela. Sempre acho agradável conversar com aqueles que se apaixonaram por ela - eles a entendem num piscar de olhos. Mas às vezes é difícil lidar com os esquecidos - tais pessoas jogam a roleta russa com sua própria morte. O fato de que conscientemente só pode agir em um plano pré-fabricado. Esta é a única maneira de restaurar a ordem em suas vidas. Fazer um plano de ação é um processo de pensamento. Se não for feito corretamente, o resultado não será bom. Aquele que tem o caos na cabeça, também tem uma bagunça em seus assuntos. Assim, acontece que o pensamento controla nossas vidas. E abandonar a lógica aqui é um caminho rápido para a sepultura.

:) Já chega, senão posso continuar por horas falando sobre tais coisas e isso finalmente nos afastará do tema deste ramo.

P.S.

Só posso acrescentar que estava em uma situação tão difícil em minha vida que não sabia o que fazer - todos os meus planos e esperanças tinham se desmoronado. Dói como o inferno. Eu estava sufocado com a falta de esperança. Decidi que, até compreender a situação, não podia decidir o que fazer com minha vida e como me relacionar com aqueles ao meu redor. Eu sabia pelos livros que existe uma ciência como a Lógica. Neste momento, decidi que tinha que aprender, para que minhas conclusões estivessem corretas. A complexidade e a dor da minha situação de vida foi a força que me impulsionou, fazendo-me buscar respostas às minhas perguntas não apenas na lógica, mas também em muitas outras ciências. Tudo isso faz parte do passado agora. Por que estou lhe dizendo isto? Eu só queria que você entendesse o que me levou a estudar a lógica. Por assim dizer, mostrei por exemplo que não sou uma exceção e que também eu tive que estudar esta disciplina por baixo do bastão. Mas eu não o estudei na universidade, mas por conta própria.

 
nikost:


Parece-me que podemos simplificá-lo ainda mais

for(int i = 0; i < limite; i++)
{
// variante três_v1

high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=alta-baixa;
MaTDn[i] = baixo - atr;
MaTUp[i] = alto + atr;
}


Eu tentei manter a renderização como no código original. O ATR é calculado de forma diferente. Se você comparar os dois indicadores, você verá a diferença.
Razão: