Contando StopLoss

 

HELP,

Em TradeTransaction Function tenho este trecho do código em que ocorre aumento de 1 mini-contrato (passo mínimo do WIN ou WDO na B3) toda vez que fecha por StopLoss (SL)

Em Input Parâmetros eu deixei o InpLots sem a opção de input, ou seja, seu valor fica inacessível e assim permite modificação (ainda não quis associá-lo a um ExtLots. Estou só testando)

O problema é que: Meu SL é bem curto, e rapidamente está chegando a um volume muito alto, e eu não quero aumentar o SL

O que eu poderia acrescentar para que o aumento de +1 no InpLots só aconteça a cada X StopLoss consecutivo ? ...por exemplo, com X=5 o lote 2 só passaria para 3 no quinto SL consecutivo.


if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)

         if(deal_entry==DEAL_ENTRY_OUT)

           {

            if(deal_reason==DEAL_REASON_TP)

               InpLots+=0.0;

            else if(deal_reason==DEAL_REASON_SL)

               InpLots+=1.0;

           }      


GRATO

 
sergiomt:


O que eu poderia acrescentar para que o aumento de +1 no InpLots só aconteça a cada X StopLoss consecutivo ? ...por exemplo, com X=5 o lote 2 só passaria para 3 no quinto SL consecutivo.

É só criar uma variável estática para contar a quantidade de stop-loss que já ocorreram e aumentar InpLots somente quando o valor do contador for um múltiplo exato de X.

Ou seja, em lugar de 

else if(deal_reason==DEAL_REASON_SL)
        InpLots+=1.0;

use

else if(deal_reason==DEAL_REASON_SL)
{
        static int stoploss_count = 0;
        if ( (stoploss_count++) % X == 0 ) InpLots+=1.0;
}      
 

Genial Patinhas, 

Grato D+