e já sabemos o que é executado em que sequência. Isto é apenas formatação. Mas também pode decompor o código em operações logicamente consistentes e separá-las em funções separadas. Assim, aliviando o algoritmo principal das pilhas de código emaranhadas.
O problema é a duplicação do código, o número excessivo de declarações condicionais. De facto, o código consiste em 99% de linhas de alguma forma incluindo o Se operador condicional; tenho a certeza de que se o analisarmos, o número de comparações poderá ser reduzido 10 vezes. Não só isto atrasa a execução, como também este código é difícil de ler. Uma pessoa que lhe faz adições tem pelo menos 2 tarefas principais:
1 - não quebrá-lo
2 - Acrescentar a funcionalidade necessária.
O código ilegível causa uma duplicação adicional de todos os tipos de verificações e comparações - e isto mais uma vez é uma despesa adicional. Olhando através do código, lembro-me pessoalmente de mim próprio há cerca de 25 anos, quando comecei a programar, e aprendi-o no manual para o PC Atari 800XL sem qualquer professor, só porque era interessante.
Claro que é interessante, o que "se" estamos a falar, há provavelmente o meu TOR - onde eu escrevo "se sim, então sim", e o programador interpreta-o no código, e há "se" relacionado com trabalho directo com ordens, e há muitas operações com ordens...
Naturalmente, pensei que se tratava de algum tipo de loop, cuja execução leva a múltiplas verificações das condições da ordem. E acontece que a situação só pode ser corrigida através da reescrita do código a partir do zero?
e já sabemos o que é executado em que sequência. Isto é apenas formatação. Mas pode também decompor o código em operações logicamente consistentes e separá-las em funções separadas. Assim, irá aliviar o algoritmo principal das pilhas de código emaranhado.
e já sabemos o que é executado em que sequência. Isto é apenas formatação. Mas pode também decompor o código em operações logicamente consistentes e separá-las em funções separadas. Assim, aliviando o algoritmo principal das pilhas de código emaranhadas.
Argumentos muito fortes, o vosso código, onde posso ver um programador experiente?
Para definir uma paragem de perda e filtragem de ordens pendentes, utilizamos duas variantes de MA espelho. maMirror - calculado utilizando a função padrão iMA, funciona uma vez por barra, os dados são retirados dos preços abertos da barra Algoritmo de cálculo:
Para venda: ponto de cálculo inicial maMirror=iMA+pipsXHmaM(o/b) ponto de cálculo subsequente maMirror=maMirror(1)-(iMA(0)+pipsXHmaM(o/b)-iMA(1)+pipsXHmaM(o/b)) o cálculo é completado após o ponto final do cálculo.
Para compra: ponto de cálculo inicial maMirror=iMA-pipsXHmaL pontos de cálculo subsequentes maMirror=maMirror(1)-(iMA(0)-pipsXLmaM-iMA(1)-pipsXLmaM) O cálculo é terminado após o ponto final do cálculo.
Para simplificar os ToR é necessário colocar dois blocos de cálculo, que serão independentes um do outro em funcionamento e variáveis, e definidos pelo utilizador maMBlock=0 - não utilizar blocos (utiliza-se o stop loss padrão) maMBlock=1 - utilizar apenas o bloco #1. maMBlock=2 - utilizar apenas o bloco #2 (é utilizado o bloco de paragem de perda padrão) maMBlock=3 - utilizar os dois blocos
Bloco nº 1 Cálculo de stop loss. O Stop Loss é recalculado e a encomenda é actualizada em cada barra pelo valor do maMirror. 1 A variável StartPoint é utilizada para determinar o ponto de partida para o cálculo, se StartPoint=1 (o cálculo é efectuado depois de se tocar em maT), se StartPoint=2 (o cálculo é efectuado depois de se abrir a ordem). 1.1 Se StartPointO=1 então o cálculo é completado após a maT ser tocada; 1.2.Se StartPointO=2, a liquidação termina após a encomenda ser encerrada; 1.3 Se a paragem da perda não puder ser definida por maMirror, a ordem é fechada. 1.4 Levl_Zerro=0 (não utilizado), Levl_Zerro!=0 (o stop loss é actualizado para o valor máximo especificado a contar do preço de abertura, um valor negativo significa que o stop loss é convertido para um valor positivo)
Bloco 2 Cálculo de filtragem para encomendas pendentes 0.1 Para comprar uma encomenda, a encomenda é feita se maMirror>open preço da encomenda pendente 0.2 Para vender, as encomendas são feitas se maMirror<open preço da encomenda pendente 1 A variável StartPoint é utilizada para determinar o ponto de partida para o cálculo se StartPoint=1 (o cálculo é efectuado depois de se tocar em maT), se StartPoint=2 (o cálculo é efectuado depois de se abrir a ordem). 1.1 Se StartPointB=1, o cálculo é completado após o maT ser tocado; 1.2 Se StartPointB=2 (a liquidação termina após o encerramento da encomenda); 2. Se maMirrorDell=0 (não utilizado) maMirrorDell=1 (todas as encomendas abertas são eliminadas se as condições do ponto 0 não coincidirem)
Variáveis de utilizador maMirrorO (ajustes por iMA) maMirrorB (configurações iMA) StartPointO StartPointB pipsXHmaMo pipsXLmaMo pipsXHmaMb pipsXLmaMb maMBlock
maMirrorDell
Ajuda a estimar tarefas, o cliente quer um novo trabalho, não sabe quanto estimar) Como não sou um programador, sou um engenheiro da academia aeroespacial)
O primeiro e talvez o mais importante problema é que o código é ilegível e não está estruturado. Pode ter um ToR bastante claro. Se compreender os ToR e escrever o código na direcção certa, este (em regra) dá um ganho significativo na velocidade de execução, mas também custa outro dinheiro.
Neste exemplo em particular, não tem qualquer efeito. Não há nenhum desejo de lidar com tal formatação em todo o guião da EA, nem de reformatá-la completamente
zfs: Argumentos muito fortes, o vosso código, onde posso ver um programador experiente?
O meu código não é do domínio público. Os desenvolvimentos comerciais funcionam em e em torno de servidores web altamente carregados. Em particular, o meu código calcula os engarrafamentos nas estradas de "várias" cidades como parte do projecto DorogaTV
só a construção abaixo vale a pena.
um pouco mais
e já sabemos o que é executado em que sequência. Isto é apenas formatação. Mas também pode decompor o código em operações logicamente consistentes e separá-las em funções separadas. Assim, aliviando o algoritmo principal das pilhas de código emaranhadas.
O problema é a duplicação do código, o número excessivo de declarações condicionais. De facto, o código consiste em 99% de linhas de alguma forma incluindo o Se operador condicional; tenho a certeza de que se o analisarmos, o número de comparações poderá ser reduzido 10 vezes. Não só isto atrasa a execução, como também este código é difícil de ler. Uma pessoa que lhe faz adições tem pelo menos 2 tarefas principais:
1 - não quebrá-lo
2 - Acrescentar a funcionalidade necessária.
O código ilegível causa uma duplicação adicional de todos os tipos de verificações e comparações - e isto mais uma vez é uma despesa adicional. Olhando através do código, lembro-me pessoalmente de mim próprio há cerca de 25 anos, quando comecei a programar, e aprendi-o no manual para o PC Atari 800XL sem qualquer professor, só porque era interessante.
Claro que é interessante, o que "se" estamos a falar, há provavelmente o meu TOR - onde eu escrevo "se sim, então sim", e o programador interpreta-o no código, e há "se" relacionado com trabalho directo com ordens, e há muitas operações com ordens...
Naturalmente, pensei que se tratava de algum tipo de loop, cuja execução leva a múltiplas verificações das condições da ordem. E acontece que a situação só pode ser corrigida através da reescrita do código a partir do zero?
só a construção abaixo vale a pena.
um pouco mais
e já sabemos o que é executado em que sequência. Isto é apenas formatação. Mas pode também decompor o código em operações logicamente consistentes e separá-las em funções separadas. Assim, irá aliviar o algoritmo principal das pilhas de código emaranhado.
Mas não afecta de modo algum o desempenho?
Problemas com código duplicado
só a construção abaixo vale a pena.
um pouco mais
e já sabemos o que é executado em que sequência. Isto é apenas formatação. Mas pode também decompor o código em operações logicamente consistentes e separá-las em funções separadas. Assim, aliviando o algoritmo principal das pilhas de código emaranhadas.
rev 1.1
Para definir uma paragem de perda e filtragem de ordens pendentes, utilizamos duas variantes de MA espelho.
maMirror - calculado utilizando a função padrão iMA, funciona uma vez por barra, os dados são retirados dos preços abertos da barra
Algoritmo de cálculo:
Para venda:
ponto de cálculo inicial maMirror=iMA+pipsXHmaM(o/b)
ponto de cálculo subsequente maMirror=maMirror(1)-(iMA(0)+pipsXHmaM(o/b)-iMA(1)+pipsXHmaM(o/b))
o cálculo é completado após o ponto final do cálculo.
Para compra:
ponto de cálculo inicial maMirror=iMA-pipsXHmaL
pontos de cálculo subsequentes maMirror=maMirror(1)-(iMA(0)-pipsXLmaM-iMA(1)-pipsXLmaM)
O cálculo é terminado após o ponto final do cálculo.
Para simplificar os ToR é necessário colocar dois blocos de cálculo, que serão independentes um do outro em funcionamento e variáveis, e definidos pelo utilizador
maMBlock=0 - não utilizar blocos (utiliza-se o stop loss padrão)
maMBlock=1 - utilizar apenas o bloco #1.
maMBlock=2 - utilizar apenas o bloco #2 (é utilizado o bloco de paragem de perda padrão)
maMBlock=3 - utilizar os dois blocos
Bloco nº 1
Cálculo de stop loss. O Stop Loss é recalculado e a encomenda é actualizada em cada barra pelo valor do maMirror.
1 A variável StartPoint é utilizada para determinar o ponto de partida para o cálculo, se StartPoint=1 (o cálculo é efectuado depois de se tocar em maT), se StartPoint=2 (o cálculo é efectuado depois de se abrir a ordem).
1.1 Se StartPointO=1 então o cálculo é completado após a maT ser tocada;
1.2.Se StartPointO=2, a liquidação termina após a encomenda ser encerrada;
1.3 Se a paragem da perda não puder ser definida por maMirror, a ordem é fechada.
1.4 Levl_Zerro=0 (não utilizado), Levl_Zerro!=0 (o stop loss é actualizado para o valor máximo especificado a contar do preço de abertura, um valor negativo significa que o stop loss é convertido para um valor positivo)
Bloco 2
Cálculo de filtragem para encomendas pendentes
0.1 Para comprar uma encomenda, a encomenda é feita se maMirror>open preço da encomenda pendente
0.2 Para vender, as encomendas são feitas se maMirror<open preço da encomenda pendente
1 A variável StartPoint é utilizada para determinar o ponto de partida para o cálculo se StartPoint=1 (o cálculo é efectuado depois de se tocar em maT), se StartPoint=2 (o cálculo é efectuado depois de se abrir a ordem).
1.1 Se StartPointB=1, o cálculo é completado após o maT ser tocado;
1.2 Se StartPointB=2 (a liquidação termina após o encerramento da encomenda);
2. Se maMirrorDell=0 (não utilizado) maMirrorDell=1 (todas as encomendas abertas são eliminadas se as condições do ponto 0 não coincidirem)
Variáveis de utilizador
maMirrorO (ajustes por iMA)
maMirrorB (configurações iMA)
StartPointO
StartPointB
pipsXHmaMo
pipsXLmaMo
pipsXHmaMb
pipsXLmaMb
maMBlock
maMirrorDell
Ajuda a estimar tarefas, o cliente quer um novo trabalho, não sabe quanto estimar) Como não sou um programador, sou um engenheiro da academia aeroespacial)
Afecta de alguma forma o desempenho?
Argumentos muito fortes, o vosso código, onde posso ver um programador experiente?
A duplicação não tem nada a ver com isto, nem os "se". A verdadeira desaceleração é dada pelo trabalho com encomendas.
Trabalhar com encomendas em código TK, ou talvez a própria TK, ou MT4 trabalhar com encomendas em geral?