Desenvolvedores! Testa sequer o que cria? - página 9

 
Mikalas:

C-4 Na minha opinião, obter informação operacional é muito mais

mais interessante do que a história. Precisamos de saber duas coisas sobre o instrumento:

1. mandados.

2. Posição

Parece-me que é muito mais importante analisar os ofícios, porque estão no nível mais baixo e pode-se conhecer as ordens e posições por eles, mas o oposto não é verdade. Mas o oposto não é verdade.

No seu caso, o OnInit() é executado uma vez no início do programa. Mas deve haver apenas um bloco de verificações. Sincroniza o estado da EA com a situação actual. E não importa de onde vieram os novos dados, desde o histórico das encomendas no momento da inicialização, desde o histórico no momento da execução ou desde o evento OnTradeTransaction. O resultado deve ser idêntico, porque também só há um bloco responsável por ele.

 

Vasiliy - este é um pedaço de código 'primitivo'.

É simples - faz-se uma encomenda e depois trabalha-se com ela....

my_order = temp_order;

Uma linha!

 
papaklass:

O evento OnTradeTransaction é mesmo necessário na sua forma actual?

Acontece que não é, uma vez que ainda temos de tirar informações da história.
 

Mikalas:

Acabei de notar que o produto DEVE ser testado (estou a testá-lo com os meus próprios cêntimos)!

vou assumir que isso está a sair do tópico.

Então o quê, dá-me a revista e o código?

Estou com vontade de ajudar aqui.

 
C-4:
Acontece que não é, uma vez que ainda temos de tirar informações da história.

Oh, meu Deus! É válido na história?

Papaklass provavelmente significava que a OnTradeTransaction devolve erros?

 

sergeev ->Estou com vontade de ajudar aqui.

Lamento, mas não preciso de qualquer ajuda.

 
Mikalas:

sergeev ->Estou com vontade de ajudar aqui.

Lamento, mas não preciso de qualquer ajuda.

porque é que tem de se babar durante 9 páginas?
 
Mikalas:

Vasiliy - este é um pedaço de código 'primitivo'.

É simples - faz-se uma encomenda e depois trabalha-se com ela....

Uma linha!

Não é uma questão de uma linha ou de cem. É sobre a abordagem. A.k. Aqui está o código como um exemplo para ver o que quero dizer. É garantido acompanhar a entrada de novas encomendas com ou sem evento TradeTransaction, quer seja uma inicialização ou uma nova encomenda a entrar:

/*Какое бы событие не наступило, оно будет обработано OnRefresh()*/

OnInit()
{
    OnRefresh();
}

void OnTimer(void)
{
    OnRefresh();
}

void  OnTradeTransaction(
      const MqlTradeTransaction&    trans,
      const MqlTradeRequest&        request,
      const MqlTradeResult&         result
   )
{
     OnRefresh();
}

///
/// Следит за поступлением новых трейдов и ордеров.
///

void OnRefresh()
{
    HistorySelect(0, TimeCurrent());
    for(; ordersCountNow < HistoryOrdersTotal(); ordersCountNow++)
    {  
       printf(HistoryOrderGetTicket(dealsCountNow));
    }
}

///
/// Текущее количество ордеров.
///
int ordersCountNow;
 
papaklass:

É disso que estou a falar.

Porque é que esta OnTradeTransaction não está separada em eventos separados:

- OnOrderCriar //emitir uma encomenda;

- OnOrderModify // modificação de uma ordem activa;

- OnOrderDelete //delete a encomenda;

- OnPositionOpen //open position;

- OnPositionModify //set/modify stops, mudança de volume de posição;

- OnPositionClosed //fechar uma posição usando uma Stop Loss ou Ordem de Mercado;

e assim por diante.

Com esta abordagem, o comerciante irá subscrever e tratar dos eventos que lhe interessam.

Recebo todos os eventos em que estou interessado, há uma divisão lá!
 

C-4, será processado, claro, mas porque é que OnRefresh() é necessário?

Tudo é partilhado na OnTradeTransaction(). Não tenho falta de informação.