Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1659

 
Mais uma coisa - quando inicio a EA, uma ordem se abre na primeira vela, mesmo que não houvesse sinais naquele momento. Como pode ser removido?
Arquivos anexados:
 
artem artem abrindo preços dentro do mesmo período - 29 pedidos ?

+ vários pedidos falharam explicitamente seu preço de abertura se foram testados por carrapatos. Anexei uma captura de tela que mostra

Tente

Arquivos anexados:
artem.mq4  13 kb
 
Agora abre o mesmo número de pedidos tanto por carrapatos como por preço de abertura. 23pedidos no total durante o mesmo período de tempo. Só agora, por alguma razão, eu entro da 7ª vela, não da 4ª.
 
artem artem pedidos no total durante o mesmo período de tempo. Só agora estamos entrando a partir da 7ª vela, não a 4ª.

Removido tudo o que era desnecessário...parece estar funcionando como deveria

Arquivos anexados:
artem.mq4  11 kb
 
Você pode me dizer se existe uma maneira de delimitar as cadeias de configurações da EA no terminal para que elas não possam ser apagadas? Se você escrever uma string externa no código, ela permite que você edite a string, e se você a apagar acidentalmente, você tem que pressionar "reset" para restaurá-la, mas então todas as configurações são resetadas. É claro que eles podem ser salvos em um arquivo de configuração antes, mas estou apenas curioso se é possível fazer uma "mesa de pedra")
 

Verificado, tanto em carrapatos como no preço de abertura. RA-BO-TA-ET!!!!

MakarFX, muito obrigado!!! Já se passaram duas semanas desde que eu tenho mexido com este quebra-cabeça, tudo isso sem sucesso até hoje. Muito obrigado, mais uma vez! Tenho literalmente alguns esclarecimentos que me restam, e não vou mantê-los por mais tempo, e muito do seu tempo foi gasto. Na verdade, o que me interessa é o seguinte:


1) Pelo que entendi, se eu quiser mudar o número de "candelabros de confirmação", então eu só tenho que mudar um número para outro na constante, e é isso?

void OnTick()
  {
//---
   StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); 
   //---
   if(newbar!=Time[0])
     {
      if(CheckForOpen()!=Start)
        {Start=CheckForOpen(); cnt=1;}
      else
        {cnt+=1;}
      //---
      if(cnt==8)
        {
         // Открытие ордера по методу Пуриа
         if(CheckForOpen()==0) // Если сигнал для покупок 
           {
            if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
              {Print("BUY OK");}
              else {Print(GetLastError());}
           } 
         if(CheckForOpen()==1) // Если сигнал для продаж 
           {
            if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
              {Print("SELL OK");}
              else {Print(GetLastError());}
           }
        }   
      newbar=Time[0];
     }
  }

2. quando eu dirijo o Expert Advisor, a primeira ordem de venda é aberta no primeiro castiçal, mesmo não havendo sinais. Isto significa que esta primeira ordem é redundante, e a EA não deve abrir um negócio imediatamente na primeira ordem, só porque a EA acaba de ser iniciada. Como isso poderia ser corrigido? Eu tenho uma idéia de que o Init é responsável por isso e eu deveria apenas mudar para "falso", ou apagar completamente esse Init?

bool OrderBuy = true, OrderSell = true, Order = false, Init = true;

E por último, se eu o deixar assim e o executar para negociar em vários pares de moedas ao mesmo tempo, será que funcionará como deveria? Ou eu tenho que prescrever algo mais no código, para que não haja bugs e assim por diante. Especialmente, se este EA trabalhar em vários pares de moedas ao mesmo tempo?

Na verdade, é tudo o que me interessa, mas de qualquer forma - muito obrigado novamente! Se eu mesmo o tivesse feito, não sei quanto tempo teria demorado)

 
artem artem #:

Verificado, tanto em carrapatos como no preço de abertura. RA-BO-TA-ET!!!!

MakarFX, muito obrigado!!! Já se passaram duas semanas desde que eu tenho mexido com este quebra-cabeça, tudo isso sem sucesso até hoje. Muito obrigado, mais uma vez! Tenho literalmente alguns esclarecimentos que me restam, e não vou mantê-los por mais tempo, e muito do seu tempo foi gasto. Na verdade, o que me interessa é o seguinte:


1. tanto quanto eu entendo, se eu quiser mudar o número de "candelabros de confirmação", então eu só preciso mudar um número para outro na constante, e é só isso?

2. quando eu dirijo o Expert Advisor, a primeira ordem de venda é aberta no primeiro castiçal, mesmo não havendo sinais. Isto significa que esta primeira ordem é redundante, e a EA não deve abrir um negócio imediatamente na primeira ordem, só porque a EA acaba de ser iniciada. Como isso poderia ser corrigido? Eu tenho uma idéia de que o Init é responsável por isso e eu deveria apenas mudar para "falso", ou apagar completamente esse Init?

E por último, se eu o deixar assim e o executar para negociar em vários pares de moedas ao mesmo tempo, será que funcionará como deveria? Ou eu tenho que prescrever algo mais no código, para que não haja bugs e assim por diante. Especialmente, se este EA trabalhar em vários pares de moedas ao mesmo tempo?

Na verdade, é tudo o que me interessa, mas de qualquer forma - muito obrigado novamente! Se eu mesmo tivesse tentado, não sei quanto tempo levaria)

1) Sim, estes são os valores do número de "velas de confirmação" .

2) Não, na primeira não abre, somente após um determinado número de "velas de confirmação ".

3) Troque o magik e coloque-o em qualquer par

É melhor tornar o magik uma variável externa

 
Ivan Butko #:
Você pode me dizer se existe uma maneira de delimitar as cadeias de configurações da EA no terminal para que elas não possam ser apagadas? Se você escrever uma string externa no código, ela permite que você edite a string, e se você a apagar acidentalmente, você tem que pressionar "reset" para restaurá-la, mas então todas as configurações são resetadas. Eles podem, é claro, ser preservados em um arquivo conjunto, mas estou apenas curioso se é possível fazer um "tableau de pedra")
Faça um ENUM
 
MakarFX #:
Faça o ENUM

Vou tentar, obrigado.

 
Ivan Butko #:

Vou tentar, obrigado.

enum MODE
  {
   MODE_1=1,    // Мертвая строка
  };
//--- input parameters
input MODE mode= MODE_1; // Эта строка