Função de fundos de reboque (patrimônio líquido) - alguém já se deparou com algum já feito? - página 4

 

minha sugestão :

//+------------------------------------------------------------------+
//|Трал по эквити                                                    |
//+------------------------------------------------------------------+
bool EcvitiTral3(double EqvTralStep){
if(OrdersTotal()<1){ gEqviti=AccountBalance();return(false);}
if(!GlobalVariableCheck("step")){ EqvTralStep= EqvTralStep;}
  else{ EqvTralStep=GlobalVariableGet("step");}
EqvTralStep= EqvTralStep*(GlobalVariableGet("multi")-GlobalVariableGet("disable"));
  if( WithoutLoss){
    if(AccountEquity()>=AccountBalance()){
      if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*( EqvTralStep*2))){ EqvTralStep= EqvTralStep*2;}
      if(AccountEquity()>( gEqviti+( gEqviti/100* EqvTralStep))){
        gEqviti= gEqviti+( gEqviti/200* EqvTralStep);
        eqvtrade=true;
        if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
      }
      if(AccountEquity()<= gEqviti){ CloseAll();Print("CloseAll");GlobalVariableDel("stop");return(false);}
      else{Comment(AccountFreeMargin()+AccountMargin(),"\n",
                 "EQUITY TRALING MODE\n",
                 "EQUITY TRALING STEP   =", EqvTralStep," %",
                 "\n ACCOUNT BALANS         = ",AccountBalance(),
                 "\n CLOSE LEVEL                  = ", gEqviti,
                 "\n ACCOUNT EQUITY        = ",AccountEquity(),
                 "\n NEXT STEP                     = ", gEqviti+( gEqviti/100* EqvTralStep));
                 return(true);
      }
    }else{GlobalVariableDel("stop");} 
  }else{
    if(AccountEquity()>AccountBalance()){
      if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*( EqvTralStep*2))){ EqvTralStep= EqvTralStep*2;}      
      if(AccountEquity()>( gEqviti+( gEqviti/100* EqvTralStep))){
        gEqviti= gEqviti+( gEqviti/200* EqvTralStep);
        eqvtrade=true;
        if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
      }
      if(AccountEquity()<= gEqviti){ CloseAll();Print("CloseAll");GlobalVariableDel("stop");return(false);}
      else{Comment(AccountFreeMargin()+AccountMargin(),"\n",
                 "EQUITY TRALING MODE\n",
                 "EQUITY TRALING STEP   =", EqvTralStep," %",
                 "\n ACCOUNT BALANS         = ",AccountBalance(),
                 "\n CLOSE LEVEL                  = ", gEqviti,
                 "\n ACCOUNT EQUITY        = ",AccountEquity(),
                 "\n NEXT STEP                     = ", gEqviti+( gEqviti/100* EqvTralStep));
                 return(true);
      }
    }else{GlobalVariableDel("stop");}  
  }
return(false);
}
A chamada é colocada no início, e sobrepõe-se ao resto dos blocos EA para o tempo de arrasto, a etapa de arrasto é variável - quadrática, o que permite trabalhar bem com saltos de equidade capturando o lucro máximo. O modo CU permite cortar as ordens não lucrativas no orçamento.
 
xrust >>:

minha sugestão :

O passo móvel é variável, permite trabalhar com saltos de Equidade capturando o máximo de lucro. O modo CUE permite cortar ordens não rentáveis no orçamento.

Boa tarde,xrust ! Por favor, explique um pouco mais sobre o funcionamento desta unidade. Não consigo colocá-lo para trabalhar.

Não consigo colocá-lo para trabalhar.

1. Função CloseAll(), deve ser uma f-função que apaga todas as ordens e/ou fecha as posições.

Eu tenho um análogo desta função e não há problema aqui.

2. eu o defini nas propriedades.

bool externo semLoss = verdadeiro;

- qual é este parâmetro?

3.

gEqviti=200;// - é este o tamanho de alcançar a equidade, na qual a rede de arrasto começa a funcionar ?

4. Eu também estabeleci -

bool eqvtrade;

O que mais precisa ser definido? Como é o parâmetro EqvTralStep; definido?

E por favor (se não for difícil) descreva em 2-3 palavras como a função funciona em forma geral.

 
A função é chamada logo no início da EA, imediatamente após Int Start():
//удаляем запрет на торговлю после удаления всех ордеров 
  if(OrdersTotal()<1){
    if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}  
    gEqviti=AccountBalance(); 
  } 
//тралим эквити
  if( EcvitiTral3( EqwTralStep)){return(0);}
  if(GlobalVariableCheck("stop")){return(0);}

se a eqviti subiu acima do equilíbrio, bloqueia todas as funções de aço e redes de arrasto da EA.

Agora para as variáveis: em variáveis globais gEqviti estático duplo gEqviti;

EqwTralStep duplo externo=0,03; passo de fuga em porcentagem do bool externo sem perda=falso; permitindo a aplicação do método Breakeven

Como esta função funciona: quando a equidade excede o equilíbrio, registra o nível de equilíbrio como zero, o que significa que precisa fechar, se a equidade excede por EqwTralStep em porcentagem, move o nível de fechamento para cima, se a velocidade de ultrapassagem é alta, a função aumenta o passo quadraticamente.

 
Obrigado! Vou tentar.
 

Se você tiver alguma dificuldade, não hesite...

 

Feito. Está em pleno funcionamento. Até agora, está funcionando bem. Está online há uma segunda semana.

Mas. De tempos em tempos, são raras as falhas.

Normalmente tenho 3-10 posições no mercado ao mesmo tempo.

Mas - quando há uma posição no mercado, ela se fecha de repente com um lucro =1-2 pips, sem razão aparente!

Não entendo por que. O código básico do meu Conselheiro Especialista não prevê tal situação.

 

É bastante fácil de controlar, tais fechamentos podem ser causados por uma forte oscilação de preços e uma mudança para um novo nível de fechamento e, como consequência, fechar a posição.

Faça-o :

организуйте в функции стическую переменную static double prewlewel;

потом перед , или за комментами 

  if( prewlewel!= gEqviti){
    prewlewel= gEqviti;
    Print( prewlewel);
  } 

А здесь добавьте обнуление переменной 
if(OrdersTotal()<1){ gEqviti=AccountBalance(); prewlewel=0;return(false);}
 

xrust - Tenho uma sugestão para você - você pode trazer o código de sua versão da rede de arrasto de equidade como uma EA autônoma.

Seria uma ferramenta muito útil para os comerciantes manuais.

Há muito tempo venho procurando tal ferramenta, mas não encontrei nada adequado, e eu mesmo não sou bom em codificação (ou melhor, sou fraco).

 
ToKa_TuXa писал(а) >>

xrust - Tenho uma sugestão para você - você pode trazer o código de sua versão da rede de arrasto de equidade como uma EA autônoma.

Seria uma ferramenta muito útil para os comerciantes manuais.

Boa idéia! Eu o apoio...

De fato. Tal projeto não passará despercebido.

 
Experimente este Fácil de operar. Eu mesmo a utilizo. Tudo o que você tem que fazer é especificar o lucro desejado e a porcentagem de saque permissível após ser alcançado.
Razão: