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

 
AlGuru Por favor, informe. Como especificar no Expert Advisor para fechar na próxima vela?
data/hora[] - Hora da matrizcontendo o tempo de abertura decada barra do gráfico atual .Tempo[0] - O tempo de abertura do último bar. Se o OrderOpenTime() for inferior aTime[0] - isto significa que o pedido foi aberto na última barra, e de acordo com sua estratégia, é hora de fechar este pedido.
 
STARIJ:
data/hora[] -Tempo de abertura de cada barra do gráfico atual.Tempo[0] - O tempo de abertura do último bar. Se o OrderOpenTime () estiver aberto em menos de Time[0]- isto significa que o pedido foi aberto na última barra, e de acordo com sua estratégia, é hora de fechar este pedido.
Ou, foi esquecido e foi aberto há um ano, por exemplo ;)
 
STARIJ:
data/hora[] - Array Time series, que contém o tempo de abertura decada barra do gráfico atual .Tempo[0] - hora do último bar aberto . Se o OrderOpenTime() for inferior aTime[0] - isto significa que o pedido foi aberto na última barra, e de acordo com sua estratégia, é hora de fechar este pedido.


Obrigado! Acabou de resolver o problema com a função iTime. Eu ainda não sou bom com arrays )).

 
AlGuru:


Obrigado! Acabo de resolver o problema usando a função iTime. Eu ainda não sou bom com arrays )).

Mostre-me como você resolveu isso.

Há apenas algo que você talvez não tenha considerado:

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Qualquer pergunta de novatos sobre MQL4, ajuda e discussão sobre algoritmos e códigos

Artyom Trishkin, 2017.05.25 19:43

STARIJ:
data/hora[] -Tempo, que contém o tempo de abertura decada barra do gráfico atual .Tempo[0] - O tempo de abertura do último bar. Se o OrderOpenTime () forinferior a Time[0]- significa queo pedido é aberto na última barra, e de acordo com sua estratégia, é hora de fechar este pedido.

Ou foi esquecido e descoberto há um ano, por exemplo ;)

 
Artyom Trishkin:

Mostre-me como você resolveu isso.

Há apenas algumas coisas que você talvez não tenha considerado:



OrderOpenTime() < iTime(Symbol(), 0, 0)
 
AlGuru:

OrderOpenTime() < iTime(Symbol(), 0, 0)

E se o horário de abertura do pedido fosse há uma semana? Então, definitivamente não está na última vela (se o gráfico não for semanal). Devemos fechá-lo também?

Claro que tudo depende das exigências de seu TS, mas eu seguiria o outro caminho...

 
Artyom Trishkin:

E se o horário de abertura do pedido fosse há uma semana? Então, definitivamente não está na última vela (se o gráfico não for semanal). Devemos fechá-lo também?

É claro que tudo depende das exigências de seu TS, mas eu seguiria o outro caminho...


Esta é uma condição adicional. Uma posição deve ser fechada quando o preço atingir a linha MA. Às vezes o preço abre bem na linha e abre e fecha posições em cada tick. Resolvi este problema fechando uma posição não antes da próxima vela.
 

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 com volume de 0,1 lote que foi fechado no SL.

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.

int  A2;
int A1;
int A;
int start()                                             
{                                               
int ot = OrdersTotal();                                         
int Ht = OrdersHistoryTotal();
                                                
                                                
if(Bid == iOpen(NULL,PERIOD_H1,0))
if ( A!= Hour() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
A = Hour();
}                                               
//**************************************************************************************
int Счет=0, Номер=OrdersHistoryTotal()-1;
//int A1=0;
  for( ; Номер>=0; Номер--)
  {
    if(!OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY)) continue;
    A1=OrderOpenTime();
    if(OrderProfit()>=0) break;
    Счет++;
    if(Счет ==1&&A2!=OrderOpenTime())
    {
    A2=OrderOpenTime();
     OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
    }
  }
//************************************************************************************** 
return;
}

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

        08:51:38.906    2017.03.27 13:09:44  Tester: stop loss #200  at 1.08858 (1.08856 / 1.08858)
2       08:51:38.906    2017.03.27 13:09:44  1 = 1 = 1 = 1 EURUSD,M1: open #214  sell 0.30 EURUSD at 1.08856 sl: 1.09258 tp: 1.08658 ok
0       08:51:38.906    2017.03.27 13:10:28  Tester: stop loss #192  at 1.08879 (1.08877 / 1.08879)
0       08:51:38.906    2017.03.27 13:10:28  Tester: stop loss #193  at 1.08879 (1.08877 / 1.08879)
2       08:51:38.906    2017.03.27 13:10:28  1 = 1 = 1 = 1 EURUSD,M1: open #215  sell 0.30 EURUSD at 1.08877 sl: 1.09279 tp: 1.08679 ok
0       08:51:38.906    2017.03.27 13:10:29  Tester: stop loss #194  at 1.08880 (1.08878 / 1.08880)
 
AlGuru:

Esta é uma condição adicional. Uma posição é fechada quando o preço atravessa a linha МА. Às vezes o preço abre bem na linha e abre e fecha uma posição em cada tick. Eu resolvi o problema fechando a posição antes da próxima vela.

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, enquanto a função de negociação já deve verificar a validade do sinal.

 

Olá. Por que os pares de moedas euro vs usdmostram 149.16325 em vez de 1.0616?


Razão: