Discussão do artigo "Que testes deve passar o robô de negociação antes da publicação no Mercado" - página 6

 
Andrey F. Zelinsky:
O artigo não aborda a questão do que fazer se stoplevel =0. A questão foi levantada várias vezes no fórum. Não há recomendações no artigo sobre esse assunto.
Qual é a pergunta? Não há stoplevel - e bom....
 
Oleksii Chepurnyi:
Qual é a pergunta? Não há semáforo, e tudo bem...

Zero não significa ausência. Zero significa flutuante.

 
Andrey F. Zelinsky:

É isso mesmo. De acordo com a "metodologia" da Roche, o nivelamento de parada zero significa zero e não há necessidade de calcular isso de forma alguma. Mas o que fazer com as perguntas e dúvidas no fórum sobre isso? É necessário esclarecer e santificar na "metodologia" a situação em que o nivelador de parada é igual a zero.

É necessário.

Normalmente, usa-se o spread duplo. Mas isso é "normalmente". E às vezes não é "normalmente".

 
Andrey F. Zelinsky:

Artyom, o que ponderar sobre "normalmente" e "não normalmente". Estamos falando sobre os requisitos do mercado, que, pelo que entendi, são orientados para o funcionamento realmente correto do nível zero.

Ou seja, é necessário fazer um comentário sobre o nível zero na "metodologia" e eliminar todas as dúvidas sobre ele. Mas acontece que as perguntas surgem no fórum, o mesmo Vladon já esfregou os calos ao pressionar as teclas sobre essa questão - e o lado oficial está em silêncio.

É isso que estou dizendo - é necessário ;)
 
Oleksii Chepurnyi:

De alguma forma, não está claro o sinal.....

Eu o escrevi assim.

Deveria ser algo assim

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(!pst.SelectByIndex(i)) ShowError;
      if(pst.Symbol()==CheckSymb)
        {
         if(oper==1 && pst.PositionType()==POSITION_TYPE_BUY)  sum_volume += pst.Volume();
         if(oper==2 && pst.PositionType()==POSITION_TYPE_SELL) sum_volume -= pst.Volume();
        }
     }
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(!ord.SelectByIndex(i)) ShowError;
      if(ord.Symbol()==CheckSymb)
        {
         if(oper==1 && (ord.OrderType()==ORDER_TYPE_BUY  || ord.OrderType()==ORDER_TYPE_BUY_LIMIT  || ord.OrderType()==ORDER_TYPE_BUY_STOP  || ord.OrderType()==ORDER_TYPE_BUY_STOP_LIMIT))  sum_volume += ord.VolumeCurrent();
         if(oper==2 && (ord.OrderType()==ORDER_TYPE_SELL || ord.OrderType()==ORDER_TYPE_SELL_LIMIT || ord.OrderType()==ORDER_TYPE_SELL_STOP || ord.OrderType()==ORDER_TYPE_SELL_STOP_LIMIT)) sum_volume -= ord.VolumeCurrent();
        }
     }
e, em seguida, analisar não apenas o valor, mas também o sinal da soma. Veja você mesmo mais adiante.
 
Andrey F. Zelinsky:

É isso mesmo. De acordo com a "metodologia" da Roche, o nivelamento de parada zero significa zero e não há necessidade de calcular isso de forma alguma. Mas o que fazer com as perguntas e dúvidas no fórum sobre isso? É necessário esclarecer e santificar na "metodologia" a situação em que o nivelamento de parada é igual a zero.

Então escreva - qual é o problema? Para falar novamente

Já foi respondido - o nivelamento de parada zero nem sempre significa que não há tal restrição.

 
Rashid Umarov:
e, em seguida, analise não apenas o valor, mas também o sinal da soma. Pesquise mais você mesmo

Por quê? Porque o resultado será a soma de posições e ordens em uma única direção.

 
Oleksii Chepurnyi:

Por quê? Porque a saída será a soma das posições e ordens em uma única direção.

Deixe-me lembrá-lo de sua pergunta de

Pelo que entendi, o cálculo deve levar em conta o volume de todas as posições e ordens somente na direção em que vamos abrir uma negociação ou colocar uma ordem.

Mas aqui a limitação do número de lotes para um símbolo na direção não é levada em conta de forma alguma....

Ou eu entendi algo errado?


O que está errado?
 
Rashid Umarov:

O que há de errado?

Por que precisamos de uma placa? Meu exemplo resume os volumes de apenas uma direção.....

 

OK