Funzione Trailing funds (equity) - qualcuno ne ha trovata una già pronta? - pagina 9

 
usare le variabili globali come opzione
 

Questo è il modo in cui ho realizzato le prese di profitto in uno dei miei EA:

extern double ProfitAutoClose = 100.0; // Incremento per la presa di profitto

doppio Depo;

int init()
{
//----
Depo=AccountEquity();
GlobalVariableSet("Depo",Depo);
//----
return(0);
}

int start()
{

Depo=GlobalVariableGet("Depo");

if(AccountEquity()-Depo>ProfitAutoClose)
{

ClosePositions("0",-1, Mn);//chiude tutte le posizioni

Depo=AccountEquity();

GlobalVariableSet("Depo",Depo);

}

...

 
Rita >> :

È proprio questa la difficoltà. Come si determina l'equità nel/i passo/i precedente/i?

Dovete basarvi su qualche valore patrimoniale precedente. Dove lo prendiamo - il valore precedente?

OTTENERE UNA VARIABILE.

 

Grazie a tutti. Sì, infatti.

Ho chiuso sulle prese di profitto (da khorosh) e questa opzione funziona molto bene. E dopo aver ottimizzato il parametro ProfitAutoClose il drawdown è notevolmente diminuito!


Tuttavia, non è esattamente una spuntatura dell'equità.

Come aggiungere l'equity trailing qui? Introdurrei un'altra variabile?

 
Dai un'occhiata al trailing equity nel nuovo consulente di Igor Kim.
 

Grazie, granit77!

Ma questa era la versione che ho sperimentato originariamente. Non andrà bene, perché lì la rete è spinta fuori dal bilanciere e interagisce con il bilanciere. È il profitto che viene pescato a strascico.

Nel mio EA, l'equità è sempre al di sotto del saldo e questa build non è adatta.

Ne ho parlato prima (ultimo post della 7a pagina):

"Come posso tracciare il capitale se il mio EA mostra sempre un profitto negativo?
Cioè,non c'è profitto, ma c'è una perdita corrente (è il funzionamento specifico dell'EA, ogni singola posizione chiude (per lo più) in positivo, ma tutte le posizioni aperte in questo caso sono sempre in perdita).

 
Rita >> :

E con il mio EA - l'equità è sempre permanentemente sotto l'equilibrio e questa costruzione non si adatta.

Chiudi prima i trade non redditizi, poi quelli redditizi. Il saldo scenderà al di sotto del patrimonio netto (che equivale al patrimonio netto al di sopra del saldo).

// Non influenzerà in alcun modo la redditività.

Altrimenti, mi sembra di capire che tendi a innervosirti per il fatto stesso di "equità<equilibrio". Così frustrato, infatti, che rallenta un po'. ;)

In pratica, puoi mandarmi il codice sorgente (se non vuoi renderlo pubblico) e io lo correggerò per te.

 

Rita, ecco uno sguardo al codice (come esempio), una volta fatto da me, NON usando, ma ha funzionato come ricordo ora :)

nessun collegamento a bilanci, profitti di bilancio e altre cose inutili

(controllare accuratamente prima dell'uso, modificare per le proprie esigenze)

if (!GlobalVariableCheck("StopTrading")) {if (!GlobalVariableCheck("TrStopEquity")) { int sl=SL_Equity; int tp=TP_Equity; se (( sl!=0 && AccountEquity()<=sl) || (tp!=0 && AccountEquity()>=tp)){ GlobalVariableSet("StopTrading",1); Sleep(500); ChiudiPosizioni(); se ( MostraCommento){ comm="Scambio completato. Tutti gli scambi sono chiusi.\n"; comm=comm+"Expert Advisors fermato a: "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); Commento( 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 ( MostraCommento){ comm="Scambio completato. Tutti gli scambi sono chiusi.\n"; comm=comm+"Expert Advisors fermato a: "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); Comment( pref, comm);}} else{se (AccountEquity()>( sl+tr_dist+tr_step)GlobalVariableSet("SL_Equity",(AccountEquity()-tr_dist);Dormire(500);se ( ShowComment) { comm="Trailing Stop è in esecuzione:\n"; comm=comm+"Livello Stop Loss: "+DoubleToStr(NormalizeDouble( sl,2),2)+"\n"; comm=comm+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);Commento( pref, comm); } }} } 
Le funzioni utilizzate sono quelle di Kim, trovale sul forum se non le hai già.
 

Se avete un trawl per l'equity, per favore, mandateci un semplice - chiudi tutte le posizioni e cancella tutti gli ordini se equity = ХХХХХХ, cioè se il mio saldo era 10000 prima di aprire le posizioni, imposto equity di 10500 nel trawl e appena equity = 10500, chiudo tutti gli ordini e le posizioni aperte).

Ho guardato quello di Kim ... mi sembra tutto un po' complicato ...) sopra in questo thread ...) Grazie in anticipo:)

 

Ah, ecco, credo di averlo trovato poco sopra... stCloseOrders sembra essere quello giusto:)

Ma se qualcuno ha qualcosa di simile, allora buttatelo dentro... non è mai troppo utile:)

Motivazione: