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

 
Igor Makanu:

Conselheiros especializados não têm amortecedores indicadores e não desenham no terminal

Leia na ajuda qual é a diferença entre Expert Advisors e scripts e indicadores

Obrigado por sua resposta.

Você pode me dizer como implementar esta funcionalidade?

 

Olá! Ajude a passar um array para uma função

ter uma estrutura

struct pattern
  {
   double            x;
   datetime          y;
 };  

Declaro um par de matrizes estáticas como esta estrutura

pattern last_pattern_up[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS], last_pattern_dn[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS];

Agora, eu quero passar uma matriz estática para uma função, mas isso me dá um erro - '[' - matriz necessária

void MyFunction(pattern &array)
{
   Print(array[1][1].x," ",array[1][1].y);
   }

Como faço para passar corretamente uma matriz para uma função?

 
Tango_X:

Olá! Ajude a passar um array para uma função

ter uma estrutura

Eu declaro um par de matrizes estáticas como esta estrutura

Agora, eu quero passar uma matriz estática para uma função, mas isso me dá um erro - '[' - matriz necessária

Como faço para passar corretamente uma matriz para uma função?

void MyFunction(pattern &array[][NUMBER_OF_PERIODS])
 
Artyom Trishkin:

Obrigado! super!

 
Alexander Layzerevich:

Obrigado por sua resposta.

Você pode me dizer como implementar esta funcionalidade?

somente separadamente um consultor especializado que chama um indicador via iCustom() e separadamente um indicador para um gráfico

que o Expert Advisor, ao chamar o indicador, usará uma nova cópia do indicador, ou seja, se você executar o Expert Advisor em um gráfico e alterar suas configurações (as que você passar para iCustom() ), o indicador não reagirá no gráfico

o indicador, que foi chamado pelo Consultor Especialista, será exibido no Testador de Estratégia no final dos testes. Durante os testes em modo visual, você pode jogar o indicador no gráfico do Testador de Estratégia....

Se você quiser usar indicador de uma maneira diferente, você pode usar indicador de sua própria escolha, mas eu não sei como mudar os parâmetros no modelo ... talvez alguém o tenha feito

 
Alexander Layzerevich:

Obrigado por sua resposta.

Você pode me dizer como implementar esta funcionalidade?

Traçar linhas(OBJ_TREND)

 
Alexander Layzerevich:

Obrigado por sua resposta.

Você pode me dizer como implementar esta funcionalidade?

Se você desenhar linhas do indicador sem usar o indicador, mas somente com cálculos transferidos do indicador para o Expert Advisor, então somente com objetos gráficos - linhas de tendência. É caro, no entanto. Mas podemos limitar a área de visibilidade das barras no gráfico.

 

Obrigado pelas dicas.

Na verdade, o Indicador faz a mesma coisa.

ou seja, tenho valores calculados e preciso conectá-los com linhas(OBJ_TREND)

 
Igor Makanu:

pelo menos um parâmetro precisa ser alterado ao modificar um pedido, erro nº 1 - se nada precisa ser alterado após o envio de um pedido ao servidor

Se você não imprimir o que enviou para o servidor, você o verá imediatamente.

O erro permanece, embora eu tenha adicionado uma condição adicional para verificar se há uma parada ou lucro

if(OrderMagicNumber() == id_number && (OrderStopLoss() == 0 || OrderTakeProfit() == 0))


Também para o rastreamento

if(OrderMagicNumber() == id_number && OrderStopLoss() != 0)
           {
            if(OrderType() == OP_BUY)
              {
               if(OrderComment() == "1" && Bid - OrderOpenPrice() >= a1 && OrderStopLoss() != OrderOpenPrice() + l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && Bid - OrderOpenPrice() >= a2 && OrderStopLoss() != OrderOpenPrice() + l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l2,OrderTakeProfit(),0,clrNONE);};
              }
            else
              {
               if(OrderComment() == "1" && OrderOpenPrice() - Ask >= a1 && OrderStopLoss() != OrderOpenPrice() - l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && OrderOpenPrice() - Ask >= a2 && OrderStopLoss() != OrderOpenPrice() - l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l2,OrderTakeProfit(),0,clrNONE);};
              };
           };
 
Alexandr Sokolov:

O erro permanece, embora eu tenha adicionado uma condição adicional para verificar a presença de parada ou lucro

Também para o rastreamento

OrderStopLoss() != NormalizeDouble(OrderOpenPrice() - l1,_Digits)
Razão: