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

 
BarCloseB1 = iClose(nameSym,xPeriod,xshiftBar);
BarCloseB1Signal = iClose(nameSymSignal,xPeriod,xshiftBar)

Bom dia!

Eu aprendo o valor de fechamento para o instrumento atual e o outro (o sinal para a barra de corrente) ao abrir uma nova barra de hora em hora.

Mas na realidade o valor para o instrumento atual corresponde, enquanto o valor para o instrumento de sinal toma o valor da barra anterior, ou seja, se xshiftBar = 1, então tomaxshiftBar=2 para o sinal um, ou seja, uma barra a mais

 
Vitaly Muzichenko:

Você só pode retirar o que ganhou com este recurso, que é a venda de software, sinais e energia de computador. O que é inserido só pode ser gasto com este recurso.

Vitaly, você entendeu errado. Você tem que se retirar primeiro, e depois quando e se você precisar, você pode depositar.

 
Yerkin Sagandykov:

Bom dia!

Eu aprendo o valor de fechamento para o instrumento atual e o outro (o sinal para a barra de corrente) ao abrir uma nova barra de hora em hora.

Mas na realidade o valor para o instrumento atual corresponde, enquanto o valor para o instrumento de sinal toma o valor da barra anterior, ou seja, se xshiftBar = 1, então tomaxshiftBar=2 para o sinal um, ou seja, uma barra a mais

Para verificar isso, substitua as variáveis por valores 1 e 2. Então, você saberá onde está o erro.

 
Alekseu Fedotov:

Com iCustom

Obrigado, mas você pode me dizer por que os níveis puxados voam para baixo muito rápido?
Arquivos anexados:
snake.mq4  16 kb
 
Alexey Viktorov:

Para verificar, coloque os valores 1 e 2 no lugar das variáveis. Então, você saberá onde está o erro.

O problema não está nos valores das variáveis, na minha opinião. Eu só tenho um recálculo em meu código na chegada de uma nova hora. e acontece que pelo símbolo atual aparece uma nova barra e calcula o valor de barra = 1, mas pelo símbolo do sinal é uma nova barra ainda não formada ou algo assim e calcula valores para barra = 2

 if  ( iTime(nameSym, LPeriod, 0 ) == counted_bar ) return; 
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 
Yerkin Sagandykov:

O problema não está nos valores da variável, na minha opinião. Tenho apenas um recálculo em meu código, e acontece que para o símbolo atual aparece uma nova barra e calcula a barra =1, mas para o símbolo do sinal ainda não foi formada uma nova barra e calcula os valores para barra =2

Quero que seja exato e não "de acordo com minha opinião". Então posso dizer com certeza que a nova barra aparece no símbolo do sinal. E, de alguma forma, esperar por este novo bar. Há várias opções, cabe a você decidir qual delas usar.

 

Saudações. Você poderia me dar uma dica?

Preciso calcular o saque máximo sob as ordens de uma determinada EA.

Se eu contar por todos os pedidos, então eu o faço, e isso se encaixa com os resultados da própria MT:

      if(AccountEquity()>max_equity){
         max_equity=AccountEquity();
      }   
      if(max_drawdown_total<max_equity-AccountEquity()){
         max_drawdown_total=max_equity-AccountEquity();
      } 

Calculo desta forma para um consultor especializado:

      if(MoneyCount()>max_equity_1){
         max_equity_1=MoneyCount();
      }   
      if(max_drawdown_total_1<max_equity_1-MoneyCount()){
         max_drawdown_total_1=max_equity_1-MoneyCount();
      }

double MoneyCount(){
   double count=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
            count+=(OrderProfit()+OrderSwap()+OrderCommission()); //
         }   
      }
   }
   return count;
}

Creio que os resultados devem ser os mesmos no testador, mas há uma diferença (não imediata) de um pouco mais de um por cento. O que eu estou contando errado?

 
Boa tarde. Você poderia aconselhar qual idioma preferir mql4 ou 5? E por que o mt4 tem um meta-editor 5 incorporado, ou é para o mql4 também?
 
Olá, você poderia aconselhar como refletir valores indicadores no código quando um é sobreposto ao outro, por exemplo, ATR é sobreposto ao MA, é possível no MT4?
 
ZahvatkiN:
Olá, você poderia aconselhar como refletir valores indicadores no código quando um é sobreposto em outro, por exemplo, ATR é sobreposto em MA, é possível em MT4?

Para MQL4 use iMAOnArray(), para MQL5 - ao criar um cabo iMA especifique o cabo de um ATR previamente criado em vez do preço pelo qual a média móvel é calculada

Razão: