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

 
Como posso verificar programmaticamente se o painel de negociação com um clique está funcionando ou não?
 
Vladimir Tkach:
Como posso verificar programmaticamente se o painel de negociação com um clique está funcionando ou não?

Tirei-a da classe:

   //--- Получение параметра "панель торговли OneClick" на чарте
   bool                 IsChartOneClick(void)            {return(ChartGetInteger(m_chart_id,CHART_SHOW_ONE_CLICK));}
 
Artyom Trishkin:

Tal problema deve ser resolvido verificando se existe, ou existiu, uma posição aberta e fechada neste mesmo bar.

Caso contrário, você vai empilhar tudo. A função de sinal deve enviar sinais e a função de negociação deve verificar a validade do sinal.


Era isso que eu queria fazer, mas não sei como implementá-lo. Como verificar a barra atual.
 
AlGuru:

Era isso que eu queria fazer, só não sei como implementá-lo. Como verificar a barra atual.

Verifique se há uma posição aberta que foi aberta na barra 0.

Caso contrário, verificar adicionalmente se existe uma posição fechada, que foi aberta na barra 0 e fechada na mesma barra.

Assim, você precisa fazer essas funções:

  1. Barra aberta da última posição aberta
  2. última posição fechada barra aberta
  3. Barra de fechamento da última posição fechada
  4. O fato de abrir e fechar a última posição fechada na mesma barra (as duas funções anteriores 2 e 3 são utilizadas)
Então, usando estas funções, obtenha os dados necessários para tomar uma decisão.
 
a196012a:

Bom dia a todos!

Favor aconselhar como codificar a seguinte ação no testador de estratégia

Idéia geral

1. ordem aberta N -X (volume = 0,1)

2.Se este pedido for fechado no SL, então. para compensar a perda, imediatamente ao preço de fechamento no SL de um pedido N X, abra o pedido N - X1 (volume = 0,3)

TEMOS QUE FAZER.

3 Se a ordem (volume = 0,3) for fechada no SL, somente o valor da hora de abertura da ordem N - X será lembrado para compensar as perdas em que foi aberta.

Sei como abrir os dois pedidos, mas não consigo encontrar meu caminho até o final, como memorizar o valor da hora para um pedido fechado no SL com volume de 0,1 lote.

NOTA: Isto está relacionado ao fechamento de pedidos no mesmo carrapato.

Às vezes, mais de um pedido com o volume de 0,1 e 0,3 são fechados em um único tick.

Se 3 ordens de 0,1, por exemplo, forem fechadas em um único tick em um SL, em vez de abrir 3 ordens de 0,3. - apenas 1 ordem de 0,3 lotes é aberta

Neste caso, se eu fechar apenas 1 ordem de 0,3 lotes no SL, não receberei valores da hora quando duas ordens de 0,1 lotes forem abertas que compensem suas perdas.

Ou seja, eu preciso de 3 pedidos de 0,3 lotes para ser aberto neste caso, não um.


Às vezes 3 pedidos de 0,3 lotes serão fechados por um SL em um único tick, apesar de seus correspondentes pedidos de 0,1 lotes terem sido abertos em diferentes ticks (mas apenas por um preço).

Neste caso o programa economiza o valor correto apenas para uma última ordem de 0,1 lote.

Preciso do programa para salvar o valor por hora de cada pedido (0,1 lote) fechado por SSL.


Aqui está o meu código, que precisamos modificar.

Obrigado por sua ajuda.

Aqui está um exemplo de uma situação em que vários pedidos são fechados em um único tick


Bom dia!

Por que você precisa considerar o tempo de cada ordem fechada? Você pode passar sem ele... Ou você tem esses dados em algum outro lugar?

2) E exatamente 3 últimas ordens que fecharam com prejuízo? Ou não importa quantos pedidos haja, talvez 5 ou 8. E, portanto, para cada

...uma ordem que fechou com uma perda deve corresponder a uma ordem com um lote maior?

 
Valerius:


Bom dia!

1. Por que você precisa cronometrar cada bar que está fechado? Você pode passar sem ele... Você guarda esses dados em algum outro lugar?

2) E quanto às 3 últimas encomendas que fecharam com prejuízo? Ou não importa quantos pedidos haja, podem ser 5 ou 8... E, portanto, para cada

...uma ordem que fechou com prejuízo deve corresponder a uma ordem com um lote maior?

Obrigado por sua resposta.

Sim, levo em conta a hora de abertura nas próximas etapas do programa.

O número pode ser de 2 a 10.

Exatamente cada ordem que foi fechada por um stop loss deve corresponder a outra ordem que foi aberta com um volume maior.

Por "match" quero dizer se dentro de 1 dia 3 ordens abertas a qualquer momento foram fechadas pelo SL, imediatamente ao seu preço de fechamento

3 ordens de um volume maior devem ser abertas. Logo após cada pedido individual ser fechado. Por exemplo, às 12 horas, um pedido foi fechado ao preço de 1.2000

Às 12 horas, ao preço de 1.2000, um pedido maior é aberto. Isto é o mesmo para cada ordem de um volume menor que é fechado por um SL. Após a ordem de um volume maior ser fechada por um SL, lembre-se da hora em que a ordem abre em resposta ao fechamento do qual foi aberta. Ou seja, se o pedido foi aberto às 12h00 pelo preço de 1.200 e fechado através de uma parada, então o pedido de alto volume abre às 12h00 pelo preço de 1.2000. Se a ordem de volume maior foi fechada por um SL , lembre-se da hora de abertura da ordem de volume menor, ou seja, 12 horas.

Devemos nos lembrar do mesmo após cada pedido de alto volume que foi fechado somente através do SL.

Acho especialmente difícil abrir pedidos e salvar os valores das horas quando vários pedidos (de 2 a 10) são fechados por um único tick em um SL.

Veja a descrição detalhada desta situação no post inicial.

 
a196012a:

Obrigado por seu feedback.

Sim , a hora de abertura que levo em consideração nas ações do programa subseqüente.

O número pode ser de 2 a 10.

Exatamente cada pedido fechado por uma parada deve corresponder a outro pedido aberto por um volume maior.

Por "match" quero dizer se dentro de 1 dia 3 ordens abertas a qualquer momento foram fechadas pelo SL, imediatamente ao seu preço de fechamento

3 ordens de um volume maior devem ser abertas. Logo após cada pedido individual ser fechado. Por exemplo, às 12 horas, um pedido foi fechado ao preço de 1.2000

Às 12 horas imediatamente, ao preço de 1.2000, um pedido maior é aberto. É assim que se faz em cada ordem. E após a ordem de um volume maior ser fechada por um SL, devemos memorizar a hora de abertura da ordem em resposta ao fechamento da qual foi aberta. Ou seja, se o pedido foi aberto às 12h00 pelo preço de 1.200 e fechado através de uma parada, então o pedido de alto volume abre às 12h00 pelo preço de 1.2000. Se a ordem de volume maior foi fechada por um SL , lembre-se da hora de abertura da ordem de volume menor, ou seja, 12 horas.

E assim, após cada ordem de maior volume que foi fechada somente no SL.


E mais um detalhe.... Por exemplo, a primeira ordem foi fechada com 0,1 lote, a segunda ordem foi aberta com 0,3 lote. Lembramos o momento da abertura da primeira encomenda. Então a 2ª ordem foi fechada por uma parada e memorizamos o tempo de abertura da 2ª ordem e estabelecemos uma ordem com 0,9 lote. E assim por diante. Eu entendi corretamente? Devemos sempre nos lembrar apenas da hora da primeira encomenda?
 
Olá. Por que os pares de moedaseuro vs usdmostram149.16325 em vez de 1.0616?


 
sidovi:
Olá. Por que o pareuro vs usd é exibidoem 149.16325 em vez de 1.0616?



Tente atualizar as citações. Serviço - Arquivo de cotações - Selecione seu par de moedas - Carregue.

Se isso não ajudar, reinstale o metatrader.

 
Valerius:

Bem e mais um esclarecimento.... Por exemplo, a primeira encomenda foi fechada com 0,1 lote, a segunda encomenda foi aberta com 0,3 lote. Lembramos o momento da abertura da primeira encomenda. Então a 2ª ordem foi fechada por uma parada e memorizamos o tempo de abertura da 2ª ordem e estabelecemos uma ordem com 0,9 lote. E assim por diante. Eu entendi corretamente? Só precisamos lembrar a hora do primeiro pedido?

Todos os pedidos maiores abrirão apenas com um volume de 0,3 lotes. Todas as ordens de um volume menor que são abertas em resposta a um fechamento no SL no volume de 0,3 lotes serão abertas no volume de 0,1 lote. Apenas 0,1 e 0,3. Não há outros volumes.

Ao fechar um pedido de 0,3 lotes através do SL, lembre-se da hora em que o pedido foi aberto em resposta ao fechamento do qual ele foi aberto (ou seja, 0,1 pedido de lote).

Obrigado por sua ajuda.

Você pode me dizer onde está definida a opção de enviar uma mensagem para meu e-mail quando houver uma resposta ao meu post.

Muito obrigado mais uma vez.

Razão: