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

 
MakarFX:

use as leituras para construir a lógica de seu indicador

Não, não funciona assim.

aqui . 1 indicador sempre mostra um número - 2147483647. assim que um sinal é recebido, ele mostra um número diferente em um dos amortecedores. Isto eu já descobri.

Mas o segundo indicador mostra sempre 0 ou 2147483647 em 2 amortecedores simultaneamente

Arquivos anexados:
 
Acho que já descobri. É suposto ser assim
  
     if (in1b<2147483647 && in2b>0 && in2b<2147483647)
           Sell[i]=low[i];
     if (in1s<2147483647 && in2s>0 && in2s<2147483647)
            Buy[i]=high[i];
 
jarikn:
Acho que já descobri. Deveria ser assim

não são necessárias especificações neste caso, ou seja, apenas se >0

 
MakarFX:

neste caso, as especificações não são necessárias, ou seja, apenas se >0

mas o que está nos amortecedores quando não há sinal. não creio que >0 funcione aqui. mas vou tentar agora

Arquivos anexados:
 
jarikn:

Mas aqui está o que está nos amortecedores quando não há sinal. não creio que >0 funcione aqui. mas vou tentar agora

o primeiro indicador tem o valor EMPTY_VALUE quando não há sinal

ir assim

   if(iCustom(NULL,0,"in1",1,i)>0&&iCustom(NULL,0,"in1",1,i)<Bid*2&&iCustom(NULL,0,"in2",0,i)>0) // индикатор стрелка вниз

   if(iCustom(NULL,0,"in1",0,i)>0&&iCustom(NULL,0,"in1",0,i)<Bid*2&&iCustom(NULL,0,"in2",1,i)>0) // индикатор стрелка вверх
 

Por favor, ajude-me a resolver este problema com o testador. Estou testando a abertura de posição para a CME sobre futuros EUR/USD

Com a ascensão do mercado no testador, abro uma posição longa na parada com minha parada e o comércio recebe um bilhete nº 2. O mercado sobe e a próxima posição é aberta com uma parada e o comércio recebe o bilhete nº 3 no testador.

Quando o mercado vai contra a posição nº 3 e atinge sua parada, idealmente o nº 3 deve fechar na parada, e o nº 2 deve ficar lá, esperando que o preço chegue à parada nº 2. Mas por alguma razão, quando a parada nº 3 é acionada, o testador também fecha a posição nº 2.

O código para mql5 é

MqlTradeRequest request={};
MqlTradeResult  result={};
                                 
request.action = TRADE_ACTION_DEAL; //Вход рынку
request.symbol = Symbol();
request.volume = 1.0; //Кол-во фьючей
request.type   = ORDER_TYPE_BUY; //Купить
request.price  = SymbolInfoDouble(Symbol(),SYMBOL_ASK);   
request.sl     = NormalizeDouble(sl,5); // Стоп

bool check     = OrderSend(request,result);


 
NastyaMaley:

Por favor, ajude-me a resolver este problema com o testador. Estou testando a abertura de posição para a CME sobre futuros EUR/USD

Com a ascensão do mercado no testador, eu abro uma posição longa na fuga com minha parada e o comércio fica com o número 2. O mercado subiu e a próxima posição é aberta com uma parada, o comércio recebe o número 3 no tester.

Quando o mercado vai contra a posição nº 3 e chega a sua parada, a idéia é que o nº 3 deve fechar na parada e o nº 2 deve ficar lá, esperando que o preço chegue à parada nº 2. Mas por alguma razão, quando a parada nº 3 é acionada, o testador também fecha a posição nº 2.

O código para mql5 é


Eu não conheço o mql5, mas não vejo onde há uma escolha de ordem para fechar
 
MakarFX:

o primeiro indicador tem um valor de VAZIO_VALOR quando não há sinal

deve ser feito desta maneira

Sim, é isso mesmo. É isso aí. Muito obrigado.

 

Penso que a razão do comportamento do testador se tornou clara. O tipo de conta demo em que o robô está testando é Netting. Portanto, se a parada especificada ao abrir a posição nº 3 for acionada, ela fechará todo o volume da posição. Portanto, na parada de #3, fecha também #2, apesar de ter sua própria parada separada definida para ela quando foi aberta.

Com o tipo de conta Hedging, tudo funcionaria como no bom e velho mql4.

 
NastyaMaley:

Por favor, ajude-me a resolver este problema com o testador. Estou testando a abertura de posição para a CME sobre futuros EUR/USD

Com a ascensão do mercado no testador, abro uma posição longa na parada com minha parada e o comércio recebe um bilhete nº 2. O mercado sobe e a próxima posição é aberta com uma parada e o comércio recebe o bilhete nº 3 no testador.

Quando o mercado vai contra a posição nº 3 e atinge sua parada, idealmente o nº 3 deve fechar na parada, e o nº 2 deve ficar lá, esperando que o preço chegue à parada nº 2. Mas por alguma razão, quando a parada nº 3 é acionada, o testador também fecha a posição nº 2.

O código para mql5 é o seguinte

Você não deve usar paradas. Em vez de usar paradas, deveríamos colocar ordens pendentes na direção oposta.

Razão: