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

 
usar variáveis globais como opção
 

Foi assim que obtive lucros em um dos meus EAs:

Duplo lucro externoAutoClose = 100,0; // Incremento para obtenção de lucro

Depo. duplo;

int init()
{
//

Depo=AccountEquity();
GlobalVariableSet("Depo",Depo);
// return(0);
}

int start()
{

Depo=GlobalVariableGet("Depo");

if(AccountEquity()-Depo>ProfitAutoClose)
{

FecharPosições("0",-1, Mn);// fechar todas as posições

Depo=ContaEquidade();

GlobalVariableSet("Depo",Depo);

}

...

 
Rita >> :

Esta é precisamente a dificuldade. Como você determina a equidade na(s) etapa(s) anterior(es)?

Você tem que confiar em algum valor patrimonial anterior. Onde o obtemos - o valor anterior?

OBTER UMA VARIÁVEL.

 

Obrigado a todos vocês. Sim, de fato.

Eu fechei com a obtenção de lucros (de khorosh) e esta opção funciona muito bem. E depois de otimizar o parâmetro ProfitAutoClose, o drawdown diminuiu consideravelmente!


No entanto, não é exatamente um corte justo.

Como adicionar aqui o patrimônio residual? Eu introduziria outra variável?

 
Dê uma olhada na equidade do novo conselheiro de Igor Kim.
 

Obrigado, granit77!

Mas essa foi a versão que eu experimentei originalmente. Não vai caber, porque ali a rede de arrasto é empurrada para fora do equilíbrio e interage com o equilíbrio . É o lucro que está sendo arrastado.

Em minha EA, a equidade está sempre abaixo do equilíbrio e esta construção não é adequada.

Mencionei isso antes (último post na 7ª página):

"Como posso arrastá-lo se minha EA sempre mostra lucro negativo?
Ou seja,não há lucro, mas há uma perda atual (é a operação específica da EA, cada posição individual fecha (principalmente) no plus, mas todas as posições em aberto neste caso estão sempre no loss).

 
Rita >> :

E com minha EA - a equidade está sempre permanentemente abaixo do equilíbrio e esta construção não se encaixa.

Fechar primeiro os negócios não rentáveis, depois os rentáveis. O saldo cairá abaixo do patrimônio líquido (que é equivalente ao patrimônio líquido acima do saldo).

// Não afetará de forma alguma a rentabilidade.

Caso contrário, percebo que você tende a ficar nervoso com o próprio fato de "equidade<balanceamento". Tão frustrado, de fato, que você está desacelerando um pouco. ;)

Basicamente, você pode me enviar o código fonte (se você não quiser torná-lo público) e eu o corrigirei para você.

 

Rita, aqui vai um olhar sobre o código (como exemplo), que eu mesmo, em tempos, NÃO usei, mas que funcionou como me lembro agora :)

sem vínculos com balanços, lucros do balanço e outras coisas desnecessárias

(verificar cuidadosamente antes de usar, modificar para suas próprias necessidades)

if (!GlobalVariableCheck("StopTrading")) {if (!GlobalVariableCheck("TrStopEquity")) { int sl=SL_Equity; int tp=TP_Equity; if (( sl!=0 && AccountEquity()<=sl) ||| (tp!=0 && AccountEquity()>=tp)){ GlobalVariableSet("StopTrading",1); Sleep(500); FecharPosições(); se ( ShowComment){com="Comércio concluído. Todos os negócios estão fechados.\n"; comm=comm+"Expert Advisors stop at": "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); Comentário( pref, comm);}}} }se (!GlobalVariableCheck("StopTrading")) {bool tr_stop=TrStop_Equity; int tr_step=TrStep_Equity; int tr_dist=TrDist_Equity; int tr_lvl =TrStartLvl_Equity;if (( tr_stop)||( tr_lvl!=0 && AccountEquity()>=tr_lvl)|||(GlobalVariableCheck("trStopEquity")) { if (!GlobalVariableCheck("TrStopEquity")){ GlobalVariableSet("TrStopEquity",1);} Sleep(500); se (!GlobalVariableCheck("SL_Equity")){ GlobalVariableSet("SL_Equity",(AccountEquity()-tr_dist));} Sleep(500); sl=GlobalVariableGet("SL_Equity"); se (AccountEquity()<=sl){ GlobalVariableSet("StopTrading",1); Sleep(500); GlobalVariableDel("TrStopEquity"); Sleep(500); GlobalVariableDel("SL_Equity"); Sleep(500); ClosePositions(); se ( ShowComment){com="Comércio concluído. Todos os negócios estão fechados.\n"; comm=comm+"Expert Advisors stop at": "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); Comentário( pref, comm);}} else{if (AccountEquity()>( sl+tr_dist+tr_step)GlobalVariableSet("SL_Equity",(AccountEquity()-tr_dist);Sleep(500);se ( ShowComment) { comm="Trailing Stop is running:\n"; comm=comm+"Level Stop Loss": "+DoubleToStr(NormalizeDouble( sl,2),2)+"\n"; comm=comm+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);Comentário( pref, comm); }} } 
As funções utilizadas são as de Kim, encontre-as no fórum se você ainda não as tem.
 

Se você tiver uma rede de arrasto para patrimônio líquido, por favor, envie-nos um simples, feche todas as posições e elimine todas as ordens se patrimônio líquido = ХХХХ, ou seja, se meu saldo era de 10000 antes de abrir posições, eu defino patrimônio líquido de 10500 na rede de arrasto e assim que patrimônio líquido = 10500, feche todas as ordens e abra posições).

Eu olhei para a Kim ... Acho que tudo parece um pouco complicado ...) acima neste tópico ...) Agradecemos antecipadamente:)

 

Ah, é isso, acho que o encontrei logo acima... stCloseOrders parece ser a correta:)

Mas se alguém tem algo semelhante, então jogue-o dentro... nunca é muito útil:)