Duplique este EA com o atualizador automático de números mágicos.
5 respostas
Conde-Roy
10 anos atrás #113370
Seria bom ter uma função que permitisse duplicar o seu EA com um simples toque no botão que dimensiona automaticamente os números mágicos.
Digamos que você tenha um EA com 20 números mágicos diferentes e queira ter dois ou mais EAs com o mesmo conjunto de regras sendo executados simultaneamente. Então, tudo o que você precisa fazer é pressionar o botão (duplicar/copiar) do EA e o EA Wizard reconhecerá os números mágicos atuais e replicará o EA, mas com a próxima sequência de números que normalmente ocorre; nesse caso, 21 - 40 etc.
saudações,
Roy

Marca Fric
10 anos atrás #128940
beniko
10 anos atrás #129607
Olá, Conde-Roy,
Neste momento, o que você pode fazer é criar todas as variáveis que usará para os números mágicos e, em seguida, criar uma nova regra que faça o seguinte:
Se
o bar está aberto
Depois
atribuir valores
MagicNumber2=MagicNumber1+1
MagicNumber3=MagicNumber2+1
MagicNumber4=MagicNumber3+1
etc...
Em outras palavras, o usuário precisa configurar o primeiro MagicNumber e todos os outros serão calculados com base nele.
Mark, como sugeri em meu último tópico, uma guia de inicialização seria útil. Esse é um bom exemplo para o qual alguém poderia usá-la, já que o EA não faria os cálculos acima após a criação de cada nova barra.
Cumprimentos
Conde-Roy
10 anos atrás #129654
Ainda assim, como isso fica em um arquivo sqw? Você poderia compartilhar o modelo?
beniko
10 anos atrás #129655
Aqui está. Também adicionei uma regra que escreve os números mágicos na tabela.
D0NKbet
10 anos atrás #129757
Em meus EAs desenvolvidos por mim mesmo, estou usando um pouco de código que gera um número mágico exclusivo com base em...
- Prazo
- Símbolo
- Nome da EA
// criar número mágico uniq para par de moedas e período de tempo int MNSymbol,MNSymbolCalc; //transforma o Symbol() em uma string ASCII e adiciona cada caractere ao MNSymbol for(int a=0;a<StringLen(Symbol());a++){ MNSymbolCalc=StringGetChar(Symbol(), a); MNSymbolCalc=((MNSymbolCalc-64)*(MathPow(10,(a))));//subtrair 64 b/c os caracteres ASCII começam em 65, multiplicar o resultado pela potência a-ésima para fins de limpeza (embora desnecessário) MNSymbol = MNSymbol+MNSymbolCalc; } int MNPeriod=Period(); // transformar o nome do EA em uma string ASCII int MNExpert,MNExpertCalc; for(int a=0;a<StringLen(WindowExpertName());a++){ MNExpertCalc=StringGetChar(WindowExpertName(), a); MNExpertCalc=((MNExpertCalc-64)*(MathPow(10,(a))));//subtrair 64 b/c os caracteres ASCII começam em 65, multiplicar o resultado pela potência a-ésima para fins de limpeza (embora desnecessário) MNExpert = MNExpert+MNExpertCalc; } // calcular o número mágico único MagicUnique=MathAbs(MNExpert + MNSymbol + MNPeriod); Comentário("Número mágico único: " + IntegerToString(MagicUnique));
Ele não é perfeito e deve ser modificado para criar posições diferentes para COMPRA / VENDA, mas, dessa forma, é certo que o número é único, mesmo se você anexar o mesmo EA em diferentes pares de moedas ou períodos de tempo
Talvez você possa adicionar algo assim ao EA Wizard? Digamos que o código acima + a diferença entre as ordens de compra e venda + um contador em execução, dependendo de quantas regras existem para a criação de ordens. Assim, ninguém precisaria mais se preocupar com os números mágicos.
Visualizando 5 respostas - 1 até 5 (de um total de 5)