[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 543

 

Olá a todos!

Eu finalizei meu primeiro especialista. A tarefa original era acertar minha idéia sob a forma de código.

Peço-lhes que dêem uma olhada em minha EA e dêem sua opinião.

Muito obrigado por sua ajuda para escrever a EA!

A lógica do Expert Advisor é a seguinte:

-O preço quebra o nível RSI (1 condição),

-então utilizando uma bandeira cumpre a segunda condição (quebrar o alto ou o baixo em n barras)

-Introduzi também uma função para evitar a abertura de uma segunda ordem enquanto a primeira estiver aberta.

Mais uma vez, o objetivo era escrever um EA corretamente. Favor apontar meus erros e deficiências.

Agradeço antecipadamente.

Arquivos anexados:
proboitrsi.mq4  12 kb
 
Obrigado!
 
Pacman:

Olá a todos!

Eu finalizei meu primeiro especialista. A tarefa original era acertar minha idéia sob a forma de código.

...

Decidiu-se aqui de dar uma olhada em seu código um pouco.

1) O que está faltando é init() e deinit(),

2) Isto:
for(int i=1; i<=OrdersTotal(); i++)
      {
       if(OrderSelect(i-1,SELECT_BY_POS)==true)
         {
          if(OrderSymbol() == Symb)
            {
             if(OrderMagicNumber()==777)
                return;
            }    
         }   
      }

você pode fazer desta maneira:

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {   if(OrderSymbol() != Symb) continue;
          if(OrderMagicNumber() != 777) continue;
          return;
      }
   }
}

3) Isto.

Symb=  Symbol();
...
Min_Lot= MarketInfo(Symbol(),MODE_MINLOT);
...
Steep=   MarketInfo(Symbol(),MODE_LOTSTEP);

escreva init(), basta defini-los uma vez na inicialização, não a cada tique, porque"a chamada de função leva mais tempo do que a referência variável".

4) A lógica deste posto não está clara para mim.

while(true)
...

Quando pode ser falso?

Isto é apenas um pouco que me chamou diretamente a atenção.

 
paladin80:

Decidiu dar uma olhada em seu código um pouco.


3) Estes.

colocado no init(), basta defini-los uma vez na inicialização, não a cada tique, porque "a chamada de função leva mais tempo do que a referência variável".


Só não esqueça que no init() ambiente de mercado nem sempre está disponível
 
Vinin:
Só não esqueça que o ambiente de mercado nem sempre está disponível no init()
Você sabe que há sempre uma solução para os "complicados s***" - o valor correto é obtido através de um loop.
 
TarasBY:
Você sabe que há sempre uma solução para os "complicados s***" - você obtém o valor certo através de um loop.

Há restrições de tempo para a função init()
 

Boa noite.

A EA monitora vários pares em vários quadros. Como fazê-lo reagir não apenas a carrapatos do par/janela a que está preso, mas a carrapatos em todos os pares. Obrigado!

int start()

{

duplo MA50 [4][9];

duplo OBarHigh [4][9];

duplo OBarLow [4][9];

para (int t=0; t<==3; t++) // período de tempo

{

para (int p=0; p<==8; p+++) // par

{

MA50[t][p]=iMA(par[p],tframe[t],50,0,MODE_EMA,PRICE_CLOSE,0);

OBarHigh [t][p]=iHigh(par[p],tframe[t],0);

OBarLow [t][p]=iLow(par[p],tframe[t],0);

 
imux:

Boa noite.

A EA monitora vários pares em vários quadros. Como fazê-lo reagir não apenas a carrapatos do par/janela a que está preso, mas a carrapatos em todos os pares. Obrigado!



Talvez uma EA em loop ajudaria
 
Vinin:

Há restrições de tempo para a função init() funcionar
Eu retiro pelo menos uma dúzia de valores do ambiente do mercado em minha EA init(). No estágio inicial, às vezes havia problemas - agora tudo funciona. Esta é minha experiência pessoal - eu não pretendo ser uma regra. ;)
 
silhouette:

Por favor, ajude-me a entender corretamente o problema de encontrar divergências nos osciladores. Neste caso, que seja MACD. Esbocei o seguinte algoritmo:

1) Conte barras desde o início e procure por picos no oscilador:

2) Criar matrizes contendo horários de pico:

e entrar neles o valor MACD[i] se a condição for cumprida. O último novo pico deve ter o índice [n] e o penúltimo [n+1];

3) Consideremos uma outra solução sob a situação (1):

Na verdade, o problema com o ponto 2: como organizar uma matriz como em uma série de tempos para que os valores mudassem a cada novo pico?


Por favor, ajude!