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

 
SGarnov:

Número de paradas consecutivas em um par de moedas.

O Expert Advisor está em vários pares de moedas e na história há várias paradas e em seqüência diferente, para entender a história a EA inicialmente etiqueta as ordens com ID mas não as encontra na história, eu pensei que ОrderMagikNumber() irá procurá-las. Talvez, por causa do fato de que na história, a EA deixa de "ver" paradas de diferentes pares de moedas... Eu não tentei usar a EA em um par e ela será inútil.

Eu tenho que expor o código fonte novamente? Tudo o que ele precisa fazer é "procurar por trocas de parada da história e fazer com que ela se somem às novas tomadas colocadas".

E se há mais de duas paradas em um par, como você retoma o trabalho da EA neste par?

E a propósito, OrderMagicNumber() define a EA e faz os pedidos manualmente sem um mágico
 
MakarFX:

E se houver mais de duas paradas seguidas em um par, como você reativa a EA nesse par?

Faço-o com um novo pêndulo, que eu mesmo coloquei.
 
SGarnov:
Umnovo pêndulo, que eu mesmo coloquei.
Tenho que adicionar pontos de perdas anteriores ou um novo ciclo de contagem de perdas?
 
MakarFX:
É necessário acrescentar pontos de perdas anteriores ou novo ciclo de perdas?

Não. Você não precisa adicionar as anteriores. somente quando a EA começar a trabalhar.

O Expert Advisor sempre implementará apenas 4 variantes de eventos, se o coeficiente de Stop Loss for 2.

A) Tire proveito + 1 parada, o Expert Advisor deixará de trabalhar

B) Tome + 1 parada, a EA deixará de funcionar

C) Take + 2 paradas EA deixa de funcionar

D) 3 paradas EA deixa de funcionar

 
SGarnov:

Boa tarde. Ajuda com a EA. De acordo com a estratégia, se uma parada for acionada, então a EA deverá acrescentar (o número de pontos) ao próximo set takeaway
da história por ID, mas não o faz por alguma razão.

O que há de errado no código?

Se você quiser garantir um lucro mínimo, basta adicionar spread para parar e ter lucro com algum valor. Mais precisamente, a quantidade de séries aritméticas * spread (quantos spreads são perdidos, por quanto é aumentado). Apenas não aumente o alcance muito maior do que o alcance diário.

A melhor opção - em OrderMagic ou Comment, salvar o valor inicial da parada em pontos, ou o número de falhas em uma linha. Em geral, o Consultor Especialista deve lembrar todas as suas ordens/posições e não interrogar o terminal (e o servidor) desnecessariamente

 
Maxim Kuznetsov:

Para que funcione com o mínimo de lucro, é suficiente acrescentar spread para parar e tomar. Mais precisamente, a quantidade de séries aritméticas * spread (quantos spreads são perdidos, por quanto eles são aumentados). Apenas não aumente a faixa muito maior do que a faixa diária.

A melhor opção - em OrderMagic ou Comment, salvar o valor inicial da parada em pontos, ou o número de falhas em uma linha. Em geral, o Consultor Especialista deve lembrar todas as suas ordens/posições e não interrogar o terminal (e o servidor) desnecessariamente

Quanto ao código, deveria, mas não vejo isso na história. Você pode ajudar?
 

Estou pedindo a ajuda da comunidade...
Como declarar e criar corretamente os objetos globais MQL5?

Se eu fizer desta maneira:

int OnInit()
{
   CIsNewBar* NB_M1=new CIsNewBar(_Symbol,PERIOD_M1);  // Эта строка потом будет в цикле для разных символов
}

void OnTick()
{
    if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

O compilador reclama da linha em OnTick(): 'NB_M1' - identificador não declarado, o que é lógico, pois uma variável local é criada em OnInit().

Se você inserir a declaração global antes do OnInit():

CIsNewBar* NB_M1;

compila sem erros e trabalha com especialistas. Parece que o objeto é criado duas vezes - durante a declaração global e no OnInit().
Mas o compilador tem este aviso

declaração de 'NB_M1' esconde variável global -> por linha no OnInit()

ver declaração anterior de 'NB_M1'

Isso significa que uma variável local (dentro de uma função) é criada no OnInit() que esconde uma variável global com o mesmo nome?
E se sim, como esta variável local pode ser "vista" por outra função, OnTick() ?




 
SGarnov:

Não. Você não precisa adicionar as anteriores. somente quando a EA começar a trabalhar.

O Expert Advisor sempre implementará apenas 4 opções, se o valor de Stop Loss for igual a 2.

A) Tomar

B) Tome + 1 parada

C) Tome + 2 paradas

D) 3 paradas

o conselheiro deixa de trabalhar

Estou vendo, vou tentar.
 

Eu ainda não sei a quem esta mensagem é dirigida. Eu não posso criar um painel opaco. As funções OBJ_BITMAP_LABEL, OBJ_RECTANGLE_LABEL são projetadas para decorar ou criar novos objetos. Mas eles não têm uma opção de não transparência. Talvez eu não tenha estudado bem a língua ou seja uma falha dos criadores. Os objetos que são criados em primeiro plano aparecem através do painel de controle. O contrário pode ser usado, mas sobrecarregará o Procyc. Se alguém souber como fazer isso, por favor, me diga.

 
MakarFX:
Estou vendo, vou tentar.

Para facilitar a leitura de meu código fonte, ele tem uma lógica que funciona, exceto pelo problema que descrevi, não o entendo bem, minha cabeça está fervendo, mas não estou chegando a lugar algum.