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 709

 

Olá a todos! Ajudem-me a encontrar um erro no código. O ponto é o seguinte: todos abertos, digamos 6 deles 4 em lucro, 2 em compra (de acordo com a imagem da tela). O fechamento é quando o lucro total atinge 1,0 (de acordo com a captura de tela). 2 X 2 = 4 fechados (são fechados usando OrderCloseBy), 2 vendidos são fechados usando OrderCloseBy.

O erro é o seguinte: as ordens sobrepostas são fechadas usando OrderCloseBy, mas o resto das ordens não são fechadas de forma alguma

Não quero escavar no código, acho que o erro está aqui.

linha 565 do código - função para fechar pedidos

Linha de código 92-100 - fechar todos os outros pedidos

linha 550 do código - função para contar as ordens abertas

Agradecia qualquer ajuda.


Arquivos anexados:
 

alexey1979621, на mql5 ответил ;)

 
Shurkin:

Olá.

Ao tesselar (terminal MT-4-670, Alt+R), as janelas do gráfico são colocadas sempre em novos lugares.

Você pode informar se é possível corrigi-los para que a posição na tela de cada gráfico específico seja constante?


MT-4-670, por mim está tudo bem

Os gráficos dos pares estão sempre localizados (em mosaico), pois estão nas abas inferiores

Em ordem de prioridade:

| 1 | 3 | 5 |

| 2 | 4 | 6 |

 
GalaX:

MT-4-670, eu estou bem

Os gráficos dos pares estão sempre dispostos (em mosaico), pois estão na parte inferior das abas

Em ordem de prioridade:

| 1 | 3 | 5 |

| 2 | 4 | 6 |


Eu sempre tenho a janela que estava em tela cheia primeiro, mudo a janela ativa - a ordem do mosaico também muda
 
GalaX:

MT-4-670, eu estou bem

Os gráficos dos pares estão sempre dispostos (em mosaico), pois estão na parte inferior das abas

Por ordem de prioridade:

| 1 | 3 | 5 |

| 2 | 4 | 6 |


Esta propriedade aparece quando o painel gráfico é ligado, quando desligado desaparece e a janela ativa é colocada primeiro.

Não consegui encontrar nada sobre isso na última versão da ajuda.

 
alexey1979621:

Olá a todos! Ajudem-me a encontrar um erro no código. O ponto é o seguinte: total aberto, digamos 6 deles 4 para lucrar, 2 para comprar (de acordo com a imagem da tela). O fechamento ocorre quando o lucro total, com Cajem em 1,0 (de acordo com a captura de tela). 2 X 2 = 4 fechados (eles são fechados usandoOrderCloseBy), 2 selos são fechados usando OrderCloseBy.

O erro aqui é o seguinte: as ordens sobrepostas são fechadas usando OrderCloseBy, mas as ordens restantes não são fechadas de forma alguma

Para evitar escavar no código, acho que o erro está aqui.

linha 565 do código - função para fechar pedidos

linhas 92-100 do código - fechar todos os outros pedidos

linha 550 do código - função para contar as ordens abertas

Agradecia qualquer ajuda.


"Linha 92-100 do código - fechar todos os outros pedidos" - o preço de fechamento do pedido está errado.

Em todos os ciclos com busca de pedidos, você precisa mudar a direção da busca de pedidos, por exemplo, da seguinte maneira

 for(t = OrdersTotal() - 1; t >= 0; t--)

E em ClosePos(), a quantidade de pedidos muda consideravelmente após a travessia. Deve haver ali muitos erros.

 

Acesso programático aos alertas - aqueles que são desenhados com uma seta vermelha no lado direito e enviam mensagens para onde devem ser enviados quando o preço cruza o nível desejado, existe???????

Ayyyyyyy

 

Ajude, por favor!!! Terceiro dia de enigmática!!!!

int stohastm1()

{


double z=iLowest(Símbolo(),PERÍODO_M1,MODE_LOW,m5,0); // índice de barras de retorno para n-períodos com preço mínimo

double x=iHighest(Símbolo(),PERÍODO_M1,MODE_HIGH,m5,0); //retorna o índice de barras para n-períodos com preço máximo

duplo MinLOWPeriod=iLow(Símbolo(),PERÍODO_M1,z); //retornar o valor do preço de barra com o preço mais baixo

duplo MaxHIGHPeriod=iHigh(Símbolo(),PERÍODO_M1,x); //retornar o preço da barra com o preço mais alto

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //retornar o preço de fechamento da última barra

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000));

duplo Km1=(i/r);


retorno(Km1);

Em tempo real o roteiro funciona!!! no testador de estratégias ERROR! DIVIDIR POR ZERO!!! A fórmula é a mais simples, mas não há maneira de fazê-lo sem divisão. (fórmula estocástica). Como pode ser visto no código e eu multipliquei os valores por 10000 para excluir geralmente os zeros! ainda um erro! POR FAVOR!!!

 
sponger:

Ajude, por favor!!! Terceiro dia de enigmática!!!!

int stohastm1()

{


double z=iLowest(Símbolo(),PERÍODO_M1,MODE_LOW,m5,0); // índice de barras de retorno para n-períodos com preço mínimo

double x=iHighest(Símbolo(),PERÍODO_M1,MODE_HIGH,m5,0); //retorna o índice de barras para n-períodos com preço máximo

duplo MinLOWPeriod=iLow(Símbolo(),PERÍODO_M1,z); //retornar o valor do preço de barra com o preço mais baixo

duplo MaxHIGHPeriod=iHigh(Símbolo(),PERÍODO_M1,x); //retornar o preço da barra com o preço mais alto

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //retornar o preço de fechamento da última barra

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000));

duplo Km1=(i/r);


retorno(Km1);

Em tempo real o roteiro funciona!!! no testador de estratégias ERROR! DIVIDIR POR ZERO!!! A fórmula é a mais simples, mas não há maneira de fazê-lo sem divisão. (fórmula estocástica). Como pode ser visto no código e eu multipliquei os valores por 10000 para excluir geralmente os zeros! ainda um erro! POR FAVOR!!!

Isto não é uma divisão?duplo Km1=(i/r);
 

borilunad:
А это не деление? double Km1=(i/r);   

é!!!! Mas você precisa!!! fórmula estocástica%K = 100%-((Fechar - Minp)/(Maxp- Minp))

  • Fechamento - preço de fechamento atual
  • Minp - mínimo mínimo para o período n
  • Maxp - máximo para o período n
  • Como posso fazer isso sem divisão?
Razão: