Gamestudio Links
Zorro Links
Newest Posts
MT5 bridge not working on MT5 v. 5 build 4160
by EternallyCurious. 04/25/24 20:49
Data from CSV not parsed correctly
by EternallyCurious. 04/25/24 10:20
Trading Journey
by howardR. 04/24/24 20:04
M1 Oversampling
by Petra. 04/24/24 10:34
Zorro FIX plugin - Experimental
by flink. 04/21/24 07:12
Scripts not found
by juergen_wue. 04/20/24 18:51
zorro 64bit command line support
by 7th_zorro. 04/20/24 10:06
StartWeek not working as it should
by jcl. 04/20/24 08:38
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
4 registered members (EternallyCurious, AndrewAMD, TipmyPip, Quad), 902 guests, and 8 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Mega_Rod, EternallyCurious, howardR, 11honza11, ccorrea
19048 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Optimizing equity curve trading #467685
08/21/17 17:14
08/21/17 17:14
Joined: Aug 2017
Posts: 102
Spain
B
Brax Offline OP
Member
Brax  Offline OP
Member
B

Joined: Aug 2017
Posts: 102
Spain
Hi,

I am trying to optimize the lowpass filter in equity curve trading for a basket of assets. It seems the optimization is not being performed, surely there is some kind of issue with Balance or ProfitClosed behaviour. This is my code:

Code:
static var opt_Filtered;
static var opt_Signal;
static var opt_Threshold;
static var opt_Stop_Cntr;
static int opt_EquityAvg;

var equityCurveSizing()
{
  if(Train) { return 1; } // no phantom trades in training mode
  vars EquityCurve = series(BalanceLong+BalanceShort);
//  vars EquityLP = series(LowPass(EquityCurve,10));
  vars EquityLP = EquityCurve;
  if(EquityLP[0] < LowPass(EquityLP,opt_EquityAvg))// && falling(EquityLP))
    return -1; // drawdown -> phantom trading
  else
    return 1; // profitable -> normal trading
}
	
function tradeCounterTrend()
{
	vars Price = series(priceClose());
	vars Filtered = series(BandPass(Price,opt_Filtered,0.5));
	vars Signal = series(Fisher(Filtered,opt_Signal));
	var Threshold = opt_Threshold;
	
	Stop = opt_Stop_Cntr * ATR(10);
	Trail = 4*ATR(10);
	
	if(crossUnder(Signal,-Threshold))
		enterLong(); 
	else if(crossOver(Signal,Threshold)) 
		enterShort();
}

function run()
{
	set(LOGFILE+PARAMETERS);
        NumCores = -2;
	BarPeriod = 24*60;
	LookBack = 500;
	StartDate = 2005;
	EndDate = 2015;
	Capital = 10000;
	
	if(ReTrain) {
		UpdateDays = -1;
		SelectWFO = -1;	
		reset(FACTORS);	
	}

	while(asset(loop("EUR/USD","USD/JPY","GBP/USD","USD/CHF"))){
        
        // Parameters	
	opt_Filtered = optimize(30,20,40,1);
	opt_Signal = optimize(10,5,20,1);
	opt_Threshold = optimize(1,0.5,1.5,0.1);
	opt_Stop_Cntr = optimize(4,2,10,1); 
        opt_EquityAvg = optimize(100,5,200,5);

        Lots = 5;
        Lots = equityCurveSizing() * Lots;
	tradeCounterTrend();	
	}
			
	PlotWidth = 1024;
	PlotHeight1 = 400;
}



ŋThe behaviour of equity curve trading is for the global equity produced from all the assets or itīs applied on every asset equity?

If globally, ŋCould i store the different asset equities and apply it separately with a function that receives that equity?.

Thanks.

Re: Optimizing equity curve trading [Re: Brax] #467939
09/08/17 20:00
09/08/17 20:00
Joined: Aug 2017
Posts: 102
Spain
B
Brax Offline OP
Member
Brax  Offline OP
Member
B

Joined: Aug 2017
Posts: 102
Spain
Well, after some research i can answer myself some questions:

First, equity curve trading as explained in the manual is only for global equity produced by all trades from all assets. If you want to individualize it, you must do some workarounds.

Second, i havenīt realized how to optimize the parameter for the average, but it doesnīt matter.

Finally, i have found a mechanism i think is better than doing it with averages. It consists of applying the kelly factor for every asset on every trade close, this way i donīt need any parameters at all and it serves the purpose of avoiding broken systems to be traded.

The only problem is that most times it hinders performance but seems to be a good contingency plan.

More about this can be found here:
http://www.financemagnates.com/forex/bloggers/equity-curve-trading-part-2-rolling-expectancy-ratio/

In my case, as i donīt want to add more parameters iīve used all data to implement it. Hope it is useful for everybody.

Last edited by brax; 09/08/17 20:01.
Re: Optimizing equity curve trading [Re: Brax] #467949
09/09/17 16:59
09/09/17 16:59
Joined: Feb 2015
Posts: 652
Milano, Italy
M
MatPed Offline
User
MatPed  Offline
User
M

Joined: Feb 2015
Posts: 652
Milano, Italy
Well, I do not think that what you stated is correct. I do check equity curve for each Algo/Asset Combination.
Just call the checkEquity() function in each Algo script before opening the trade and the job is done.
In order to size the trade I use the Margin not LOTS in order to evoid conflicts between sizing the trade and equity line check.

My 2 cents. Ciao

Re: Optimizing equity curve trading [Re: MatPed] #467956
09/10/17 20:24
09/10/17 20:24
Joined: Aug 2017
Posts: 102
Spain
B
Brax Offline OP
Member
Brax  Offline OP
Member
B

Joined: Aug 2017
Posts: 102
Spain
Hi MatPed.

Surely you are right, iīve always avoided to place optimize statements directly in algo scripts, as i tend to do it at a global level. Probably thatīs the reason why i couldnīt optimize the average...

Iīve used lots instead of Margin just for simplicity, but itīs good to know that could be another reason why i couldnīt optimize equity curve trading properly.

Anyway, i see a problem with doing it with averages, this is because we add more parameters to the equation, so we unintentionally increase curve fitting.

You can check the first part of the article and see what i mean, i think applying expectancy or kelly factor over the whole data is a good way of avoiding disasters without adding parameters nor bias. The rolling versions work in a similar way like doing it with averages.

There is people who even just stop trading when they reach MDD95 from Montecarlo.

Thanks.


Moderated by  Petra 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1