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

 
Aleksandr Verkhozin:


Assisti ao vídeo sobre o trabalho com indicador externo, escrevi um pequeno código para ver os valores dos amortecedores no testador:

nulo OnTick()

{

duplo Buf1=iCustom(NULL,0, "Shved-Supply-and-Demandand-e600",0,1);

duplo Buf2=iCustom(NULL,0, "Shved-Supply-and-Demandand-e600",1,1);

duplo Buf3=iCustom(NULL,0, "Shved-Supply-and-Demandand-e600",2,1);

duplo Buf4=iCustom(NULL,0, "Shved-Supply-and-Demandand-e600",3,1);

Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);

}

As zonas aparecem e desaparecem no modo de visualização. Mas o valor dos amortecedores é sempre zero de qualquer forma. Não há maneira de formalizar essas zonas no código?

Talvez exista uma função, além do iCustom, que seria adequada para tais indicadores? Talvez, alguém tenha escrito corujas com tais indicadores?


Não há como usar amortecedores indicadores, eles armazenam valores fractais.

No indicador de propriedades fractals_show = true; você os verá no gráfico

Zonas, objeto gráfico OBJ_RECTANGLE

Você pode obter o valor dessas zonas usando


ObjectGet

Devolve o valor de um objeto especificado de propriedade.

ObjectGet(
nome_objecto da cadeia,// nome do objeto
intindex// identificador de propriedade
);


Você percorre todos os objetos, encontra o certo, e encontra o caminho.

 int obj_total=ObjectsTotal(); 
  string name; 
  for(int i=0;i<obj_total;i++) 
    { 
     name = ObjectName(i);
     Print(i," - объект ",name); 
    }

Aproximadamente, parece ser assim

 
Artyom Trishkin:
Sabe, bem neste tópico eu coloquei um modelo para uma rede de arrasto que usa o valor indicador enviado a ela em seus cálculos. Procure, não seja preguiçoso.

No final há 1 ou 3 posições abertas e estão ligadas por valor de passo Passo que é um sistema de parada/reversão. Daí a complexidade. Ou talvez seja mais fácil rastrear em todos os pedidos usando a função CalculateProfit(). Agora não consigo descobrir como o valor do indicador neste esquema de tratamento de pedidos pode ser relacionado ao rastreamento do lucro total das posições abertas.
 
geratdc:

Preciso exatamente da parada de arraste correta sobre o lucro das posições abertas. No final há 1 ou 3 delas e elas estão vinculadas pelo valor do Step, ou seja, é um sistema de parada e reversão. Daí a complexidade. Ou talvez seja mais fácil rastrear em todos os pedidos usando a função CalculateProfit(). Agora não consigo descobrir como o valor do indicador neste esquema de tratamento de pedidos pode ser relacionado ao rastreamento do lucro total das posições abertas.

O indicador, seu valor, pode ser um valor diferente, por exemplo, do MAK na barra desejada. O valor do preço calculado para mover a parada total das posições pode ser enviado para a rede de arrasto.

Entretanto, não está claro que tipo de rede de arrasto você tem em posições abertas - o que e quando exatamente ela arrasta.

 
geratdc: Estou procurando a pesca de arrasto correta para obter lucro

Todas as trilhas estão aqui. Do arquivo TrailingFuncLib.mq4 eu assumo a função TrailingStairs - STANDARD-STANDARD Trailing. Cada pedido é rastreado independentemente.

 
Artyom Trishkin:

O indicador, seu valor, pode ser um valor diferente, por exemplo, do MAK na barra desejada. O valor do preço calculado para mover a parada total das posições pode ser enviado para a rede de arrasto.

Entretanto, não está claro que tipo de rede de arrasto você tem em posições abertas - o que e quando exatamente ela arrasta.


Em princípio, sim, uma vez me foi oferecida uma rede de arrasto por um preço médio. Tudo parece lógico, mas o que isso significa - preço médio? É (preço de 1 pedido + Passo*Ponto + (preço de 2 pedidos + Passo*Ponto) + preço de 3 pedidos) / 3? Portanto, são muitos parâmetros - você tem que chamar as posições abertas e o preço atual de cada posição. De qualquer forma, esta parada de percurso me incomoda menos do que o fato de que a EA perde valor durante os testes. O que acontecerá no comércio real? Pode ser definido, mas, novamente, não sabemos qual a volta que o gráfico de moedas levará em uma semana ou um mês, então há um ponto fraco - se 3 ordens forem abertas e houver um contra-movimento no mercado, o Expert Advisor falhará devido ao saque. Portanto, devemos pensar em limitar as posições de saque e fechamento antes que o depósito seja zerado. Para resumir uma longa história, é a Fox que mais me interessa))))
 

Eu mesmo não consigo descobrir e também não encontrei nenhuma informação específica(( A idéia é marcar as fronteiras de preço no código, as zonas mais próximas construídas pelo indicador. Comecei a escrever código, mas estou confuso e não sei se estou fazendo bem ou não. Eu não sei se estou fazendo certo ou errado.

 int obj_total=ObjectsTotal();       

  string name; 

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

  {

  name = ObjectName(i); 

  if(ObjectType(name)==OBJ_RECTANGLE)

  {

    pr1=ObjectGet(name,OBJPROP_PRICE1);// верхняя цена зоны

    pr2=ObjectGet(name,OBJPROP_PRICE2);// нижняя цена зоны

  }  

  }  

E por que meu código não está inserido aqui, como no original, em linhas multicoloridas e ao lado umas das outras?
Arquivos anexados:
 
-Aleks-:

Imaginei que - aparentemente o terminal não tinha memória suficiente - fechava alguns gráficos e funcionava.

Obrigado - de fato, os cálculos acontecem.

E se as variáveis não são do tipo int, mas bool , o que fazer?


//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=162;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for (int n=0;n<N;n++)
   {
      int tmp=n;
      int a=(int) MathMod(tmp,3);
      tmp=(tmp-a)/3;
      int b=(int) MathMod(tmp,3);
      tmp=(tmp-b)/3;
      bool c= (bool) MathMod(tmp,2);
      tmp=(tmp-c)/2;
      int d=tmp;
   
      Print("N=",n,"; A=", 2+2*a, "; B=", b+1,"; C=",c,"; D=", 16+4*d);
   }
  }
//+------------------------------------------------------------------+
 
Victor Nikolaev:

Desculpe-me, mas este código é diferente do último?
 
-Aleks-:

Desculpe-me, mas este código é diferente do último?


As diferenças são mínimas. Uma das variáveis é lógica.

A saída dirá verdadeiro ou falso

 
Victor Nikolaev:


As diferenças são mínimas. Uma das variáveis é lógica.

A saída dirá verdadeiro ou falso

Você tem certeza de que olhou para o último código que postou? Se assim for, preciso descansar... obrigado.
Razão: