Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1431

 

Boa tarde!

Como realizar o redesenho forçado de gráficos (análogo à função - clique com o botão direito do mouse no gráfico - "Atualizar").

O código abaixo não funciona, a atualização não ocorre.


void OnStart()
  {
   long currChart, prevChart = ChartFirst();
   int z = 0, limit = 100;
   while(z < limit && !IsStopped())
     {
      currChart = ChartNext(prevChart);
         ChartRedraw(currChart);
      if(currChart == 0)
         break;
      prevChart = currChart;
      z++;
     };
   ChartRedraw(0);
  }
 

Quero fazer download de Expert Advisors gratuitos para MQL5. Vou para Expert Advisors e depois para Free Expert Advisors. Pergunta: posso usar todos os Expert Advisors da seção "free" na minha conta real ou há alguma restrição? Se um Expert Advisor disser

"já comprado", ele pode ser colocado em uma conta real ou não?

 
mikhail2929 Кравченко conta real ou há alguma restrição? Se um Expert Advisors tiver a indicação

"já comprado", ele pode ser colocado em uma conta real ou não?

Bom dia! Se você baixou um Consultor Especialista gratuito e há informações de que ele já foi comprado, você pode usá-lo. A questão é outra: quão confiável ele é? Para isso, antes de usá-lo em uma conta real, é melhor testar o Expert Advisor!

Saudações, Vladimir.

 
MrBrooklin #:

Bom dia! Se um Expert Advisor gratuito tiver sido baixado e houver informações de que ele já foi comprado, você poderá usá-lo. A questão é outra: quão confiável ele é? Para isso, antes de usá-lo em uma conta real, é melhor testar o Expert Advisor!

Saudações, Vladimir.

Obrigado, Vladimir. Entendo que o teste e a otimização são necessários. Ou seja, todos os Expert Advisors colocados na seção "gratuita" podem ser baixados e instalados para funcionar em uma conta real sem restrições. Eu entendi corretamente?

 
Boa tarde, estou procurando ajuda, quando escrevo um Expert Advisor MT5, uso a classe CTrade para modificar TP e SL. O problema é que a posição é inicialmente definida como TP e SL, depois que o TP é alterado, mas o SL deve permanecer no lugar, ao implementá-lo, ficou assim:
 for(int i = 0; i <= PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }

TP_Buy e TP_Sell são contados corretamente. No testador, ocorre o erro 4756. CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops]. Pelo que entendi, é um erro de configuração do SL, provavelmente o erro se deve ao fato de o SL estar no mesmo lugar. Mas é disso que eu preciso. No manual do CTrade está escrito que "se a mudança não for necessária, o valor anterior". Por favor, me diga como superar o erro.

 
mikhail2929 Кравченко #:

Obrigado, Vladimir. Entendo que é necessário testar e otimizar. Ou seja, todos os Expert Advisors colocados na seção "gratuita" podem ser baixados e instalados para trabalhar em uma conta real sem restrições. Eu entendi corretamente?

Acho que já respondi à sua pergunta anteriormente. Sim, você entendeu corretamente.

Atenciosamente, Vladimir.

 
rexMetaL escrever um Expert Advisor MT5, uso a classe CTrade para modificar TP e SL. O problema é que a posição é inicialmente definida como TP e SL, depois que a TP é modificada, mas o SL deve permanecer no lugar:

TP_Buy e TP_Sell são contados corretamente. No testador, ocorre o erro 4756. CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops]. Pelo que entendi, é um erro de configuração do SL, provavelmente o erro se deve ao fato de o SL estar no mesmo lugar. Mas é disso que eu preciso. No manual do CTrade está escrito que "se a mudança não for necessária, o valor anterior". Por favor, me diga como superar o erro.

Olá!

Em primeiro lugar, remova o sinal de igual no loop para que fique assim:

for(int i = 0; i < PositionsTotal(); i++)

Não examinei seu código mais detalhadamente.

Atenciosamente, Vladimir.

 
MrBrooklin #:

Olá!

Em primeiro lugar, remova o sinal de igual no loop:

Não examinei seu código mais detalhadamente.

Atenciosamente, Vladimir.

Nada foi alterado, o problema está especificamente no SL/TP
 for(int i = 0; i < PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }
 
MrBrooklin #:

Olá!

Antes de mais nada, remova o sinal de igual no loop, para que fique assim:

Não examinei seu código mais detalhadamente.

Atenciosamente, Vladimir.

Obrigado pela atenção, o problema foi resolvido com o simples arredondamento do SL/TP por instrumento. O erro ocorreu porque o SL/TP foi retirado do indicador.

Muito obrigado.

 
mikhail2929 Kravchenko #:

Obrigado, Vladimir. Entendo que é necessário testar e otimizar. Ou seja, todos os Expert Advisors colocados na seção "free" podem ser baixados e instalados para funcionar em uma conta real sem restrições. Eu entendi corretamente?

É melhor não fazer isso :)

Razão: