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 208

 
borilunad:
Então veja acima, corrigido!
Acontece que quando fui acusado de falta de lógica booleana - eles significavam parênteses extras em operators...., mas estas são regras de formatação de expressões e operators.... é a lógica booleana?
 
T-G:

Olá a todos. Precisa de alguma ajuda.

Em meu quadro abre uma série de ordens, no valor definido pelo parâmetro MaxOrders, abaixo eu indiquei, por exemplo, como parece, não julgue estritamente por lotes

1-Pedido grande = 128

2-Lot order=256

3-lot-compra-lot=512

4-lotes de pedidos=1024

5-order-lot=2048

Tudo isto é para o testador.

MaxOrders=5, e 5 pedidos estão abertos. O problema é que no Testador de Estratégia meu corretor tem um limite de 1000 lotes e, portanto, 4 e 5 pedidos não serão abertos como eu deveria.

Procurei na Internet uma maneira de mudar este parâmetro no Testador de Estratégia, não consegui descobrir como fazê-lo.

Assim, decidi resolver este problema usando programação. Decidi abrir vários pedidos para 4 pedidos e receber dois

Lote de 4 pedidos=1000

Lote de 4 pedidos=24

para 5 pedidos 3:

5-order-lot=1000

5-order-lot=1000

5-order-lot=48

mas há dois problemas aqui,

- como quebrar corretamente o MM para que ele seja decomposto em lotes de acordo com o lote máximo

- E como abrir pedidos adicionais sem quebrar o pedido, ou seja, haverá mais pedidos do que nos MaxOrders, mas não para contar os pedidos adicionais que são abertos para atender o volume.

Talvez devêssemos dividir os lotes, ou seja, abrir várias posições que estão ligadas umas às outras com comentários onde os pais e os filhos fazem os pedidos. O pedido dos pais com o volume de 1000 terá um bilhete do pedido com o volume de 24, e o pedido das crianças com o volume de 1000 terá um bilhete nesta ordem. E teremos que fechá-los, modificá-los da mesma forma. Ou mais simples - uma micro conta e lotes muito pequenos. Nos cálculos para rastreamento visual, multiplique os lotes por coeficiente, de modo que eles tomem o valor que você precisa...

Nada mais me vem à mente, exceto uma empresa de corretagem que permite volumes maiores.

Ou... dividir por 100 seus lotes

 
artmedia70:

Não é preciso ser um especialista em álgebra booleana para afirmar claramente as condições...

Deixe-me tornar a vida um pouco mais fácil para você... Substituir se pelo habitual se, caso contrário, por && com e, ||| com ou , etc... Então você poderá ler em suas próprias palavras normais o que está escrito ou decidir o que você quer escrever.

O que você escreveu (vamos pular a descrição da condição errada por enquanto):

1. se (ot==0) Se não houver ordens de mercado (nem ordens de mercado, nem pendentes, nem abertas por esta EA, ou por outra EA, ou manualmente)... Se sim, então a linha 2 é executada, se não, então vamos para a linha 3.

2. Se (Bid==Preço) Se o preço for igual ao preço de abertura da vela atual... Se for, então a linha 3 é executada, se não, então vamos para a linha 4.

3. if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point)) Se o preço aberto da primeira vela for superior ao preço fechado da primeira vela em mais de 100 pontos e menos de 120 pontos... Se for, vá para a linha 4, se não for, vá para a linha 5.

4. if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point)) Se o alto da primeira vela for superior ao preço aberto da primeira vela em mais de 40 pontos e menos de 60 pontos... Se for, então executamos a linha 5, se não, vamos para a linha 6.

5. if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point)) Se o fechamento da primeira vela for mais alto que o baixo da primeira vela por mais de 40 pontos e menos de 60 pontos. Se for, então a linha 6 é executada, se não, vá para a linha 7.

6.

7.

Como você pode ver nesta decomposição, ou você tem todas as linhas de código executadas uma após a outra (no caso de cada linha retornar verdadeira), ou você pula a linha que vem após a linha que retorna falsa.

Para evitar confusão sobre suas condições e para obter a lógica correta, inclua todas as afirmações em chaves encaracoladas, independentemente de uma única linha dever ser executada após o valor da verdade, ou um bloco inteiro.

Por exemplo:

Portanto, tente decompor seu código em componentes, removendo parênteses extras, que são desnecessários neste caso...

Muito obrigado por sua resposta abrangente.

 
solnce600:
Acontece que quando fui acusado de falta de lógica booleana - eles significavam parênteses extras em operators...., mas estas são regras de formatação de expressões e operators.... é esta lógica booleana?

Não - ausência de parênteses curvos onde eles são necessários. Aplicando ao bloco lógico de busca do tamanho do candelabro em sua EA
 
solnce600:

Muito obrigado por sua resposta abrangente.

Eu corrigi seu código, para que ele ainda monitorasse o fechamento por parada - atribuí um valor ao mágico para você. Eu mesmo não o verifiquei.
 

Boa tarde. Caro, por favor, informe como implementar esta condição no Expert Advisor.

Os acordos são abertos no período horário sob certas condições, mas precisamos fazer com que os acordos sejam abertos somente sob as condições do gráfico de 4 horas.

Por exemplo: Se nas médias horárias do gráfico cruzado abrir um negócio, desde que o gráfico de 4 horas com as médias com outros parâmetros cruzados na mesma direção. Eu ficaria grato por respostas e ajuda.

 
teplovoz:

Boa tarde. Caro, por favor, informe como implementar esta condição no Expert Advisor.

Os acordos são abertos no período horário sob certas condições, mas precisamos fazer com que os acordos sejam abertos somente sob as condições do gráfico de 4 horas.

Por exemplo: Se nas médias horárias do gráfico cruzado abrir um negócio, desde que o gráfico de 4 horas com as médias com outros parâmetros cruzados na mesma direção. Eu ficaria grato por respostas e ajuda.

Aplica-se aos MAs para obter dados do H4 para a primeira e segunda barras:

double MA1_H4=iMA(Symbol(),PERIOD_H4,ma_period,ma_shift,ma_method,appled_price,1);
double MA2_H4=iMA(Symbol(),PERIOD_H4,ma_period,ma_shift,ma_method,appled_price,2);

Para obter dados do H1 para a primeira e segunda barras:

double MA1_H1=iMA(Symbol(),PERIOD_H1,ma_period,ma_shift,ma_method,appled_price,1);
double MA2_H1=iMA(Symbol(),PERIOD_H1,ma_period,ma_shift,ma_method,appled_price,2);

Faça o mesmo para outros períodos e indicadores.

 
artmedia70:

Aplicar aos MAs para os dados H4 para a primeira e segunda barras:

Faça o mesmo para outros períodos e indicadores.



Uau. Sou tão burro, acho que só preciso especificar o tempo necessário nos parâmetros dos feiticeiros e é isso? Obrigado, meu cérebro se recusa a trabalhar hoje em dia :)
 
artmedia70:
Eu corrigi seu código para que ele ainda rastreasse o fechamento da parada - atribuí um valor ao mágico para você. Eu mesmo não o verifiquei.


Vou fazer isso novamente. Muito obrigado.
 
Está tudo bem, todos nós os temos de vez em quando.
Razão: