Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 540

 
Meu sistema comercial é baseado na análise de dados históricos. Eu construí uma função para calcular o sinal diretamente na EA. Entretanto, pelo que entendi, ao testar, o Expert Advisor usa apenas os dados na janela visual (tem muito menos barras do que nas janelas padrão com o histórico carregado do arquivo). Preciso de pelo menos várias dezenas de milhares de barras históricas para calcular o sinal. Existe alguma forma de resolver este problema, ou seja, permitir que a EA em teste utilize todo o histórico, mesmo que o período em teste seja menor? Estou usando MT4 e MQL4
 
sannin:

Ajude se você não se importar

para ensinar um consultor especializado em comércio pelo indicador

BS_Living Now ver #1.mq4 https://www.mql5.com/ru/code/11014#50910

UP= iCustom(Symbol(),NULL,"Now",BQuant,0,0);

DOW= iCustom(Symbol(),NULL,"Now",BQuant,1,0);


if(DOW){OrderSend(Symbol(), OP_SELL, Lot, Bid, Slip, 0, 0, "Forex-Robots.ru SELL", Magic, 0,Red);}


if(UP ){OrderSend(Symbol(), OP_BUY, Lot, Ask, Slip, 0, 0, "Forex-Robots.ru BUY", Magic, 0,Blue);}


Comentário

(

"\n Lucro: ", UP,

"\n Lucro: ", DOW

);

Eu tentei ler os valores no comentário, mas eles são sempre estáticos.

O nome do indicador deve ser "BS_Living Now ver #1".
 

Sim, eu tenho um indicador com o nome Agora na pasta

Coloco os valores no comentário para ver como os números mudam, mas eles são estáticos no testador, bem como ao vivo e não são zero.

 
sannin:

Sim, eu tenho um indicador com o nome Agora na pasta

Eu coloquei os valores no comentário para ver como os números mudam e são estáticos, tanto no testador como na vida real e não são zero.


Se for semelhante a um fractal, seu valor deve ser procurado na história, mas não na barra de zero.

Z.I.: Isso mesmo, começa os cálculos a partir da barra nº 1, não faz sentido procurar algo na barra zero...

 

Você pode aconselhar como adicionar a uma EA a função de fechar todas as ordens se a distância entre o preço de mercado e o preço de ordem mais distante exceder 1000 pips, por exemplo?

 
evillive:

Se em princípio é semelhante aos fractais, então faz sentido procurar seu valor mais adiante na história, mas não na barra zero.

Z.I.: Isso mesmo, começa os cálculos a partir da barra 1, não faz sentido procurar algo na barra zero...

A partir da barra nº 2 por código, Extrim_Detect(s+1);
 
AlexeyVik:

E, portanto, a condição

Obrigado, Alexey. Eu fiz tudo como você recomendou.

extern int    Min_iMA_OpenDistance   = 60;
extern int    Max_iMA_OpenDistance   = 85; 

condição de entrada modificada

int GetSignal()
{
  int Signal = 0;

  double iMA_Signal = iMA(Symbol(), 0, iMA_Period, 0, MODE_SMMA, PRICE_CLOSE, 0);
  
  int Ma_Bid_Diff = MathAbs(iMA_Signal - Bid)/vPoint;
  
  if(Ma_Bid_Diff > Min_iMA_OpenDistance && Ma_Bid_Diff < Max_iMA_OpenDistance && Bid > iMA_Signal) Signal = -1;
  if(Ma_Bid_Diff > Min_iMA_OpenDistance && Ma_Bid_Diff < Max_iMA_OpenDistance && Bid < iMA_Signal) Signal = 1;
  
  return(Signal);
}

Entretanto, após fazer as mudanças, o compilador "jura" na seguinte linha

iMA_OpenDistance  *= DcD; 

iMA_OpenDistance' - identificador não declarado - não declarado identificador. Eu li o tutorial e a ajuda sobre identificadores, mas nada funciona. Você pode me dizer onde eu errei e como consertá-lo?

 
tatianati:

Obrigado, Alexey. Eu fiz o que você recomenda.

Mudou a condição de entrada

Entretanto, após fazer as mudanças, o compilador "jura" na seguinte linha

iMA_OpenDistance' - identificador não declarado. Eu li meu tutorial e ajuda sobre identificadores, mas nada funciona. Você pode me dizer onde eu errei e como consertá-lo?

Aparentemente, teremos que usar os poderes da telepatia.

Primeiro havia apenas iMA_OpenDistance, depois foi dividida em 2 variáveis Min_iMA_OpenDistance e Max_iMA_OpenDistance, portanto a variável iMA_OpenDistance é deixada não declarada.

Você não precisa alterar os valores das variáveis externas. É melhor declarar uma variável adicional e fazer o que você quiser com ela.

Pelo que entendi, a variável vPoint é Ponto*10. Assim, Ma_Bid_Diff é a distância de Bid_Diff até o MA em pontos de 4 dígitos. E DcD é o quê? Minhas habilidades telepáticas não são suficientes. Mas de qualquer forma, parece-me que o iMA_OpenDistance *= DcD; é desnecessário. Ou isto é uma conversão para pontos de 5 dígitos? Para quê?

 
AlexeyVik:

Aparentemente, teremos que usar a telepatia.

No início havia apenas iMA_OpenDistance, depois foi dividida em 2 variáveis Min_iMA_OpenDistance e Max_iMA_OpenDistance, portanto a variável iMA_OpenDistance é deixada não declarada.

Você não precisa alterar os valores das variáveis externas. É melhor declarar uma variável adicional e fazer o que você quiser com ela.

Como entendi, a variável vPoint é Ponto*10. Assim, Ma_Bid_Diff é a distância de Bid_Diff até o MA em pontos de 4 dígitos. O que é DcD? Minhas habilidades telepáticas não são suficientes. Mas de qualquer forma, parece-me que o iMA_OpenDistance *= DcD; é desnecessário. Ou isto é uma conversão para pontos de 5 dígitos? Para quê?



Alexey, você é realmente um telepata, é realmente uma tradução de 5 dígitos. Obrigado pelo esclarecimento e como eu não consegui entender Min_iMA e Max_iMa ao invés de iMa. Mais uma vez, obrigado.

P.S. Se você abrir um curso telepático, eu serei o primeiro a me inscrever :-)

 

Talvez alguém tenha um conselheiro desse tipo.

1. abre duas ordens de compra e venda diferentes simultaneamente

2. quando um deles fecha com lucro . abre duas ordens diferentes de compra e venda novamente, etc.

Se você não tem que fazer nada com a perda de pedidos, parece ser bastante simples... talvez alguém possa escrevê-lo para você... eu ficaria muito grato a você!