I wonder how you checked that peak and valleys are exactly at the same place? Hopefully not by eyeballing few data points? Our eyes are imperfect tool for such precise measurement, that's why we have Zorro for such daunting tasks. grin

Here's quick and dirty script that trades peaks and walleys for your example. I took the liberty to add ALMA to the party (not yet available in Zorro, but soon...). EMA50 took 571 trades, and LP100 only 360. So, it looks like LP100 is much smoother than EMA50. ALMA got even less trades, only 292. And of all three, only ALMA actually came out profitable, but that is of course a pure coincidence. If it only was that easy, you trade MA or a simple crossover and your wallet gets fatter every day. grin

Code:
#define CYAN 0x00ffff
#define ORANGE 0xff8000

var ALMA(var *Data, int Period, int sigma, var offset)
{
	var m = floor(offset * (Period - 1));
	var s = Period / sigma;
	var alma, wSum;
	int i;

	for (i = 0; i < Period; i++) {
		var w = exp(-((i - m) * (i - m)) / (2 * s * s));
		alma += Data[Period - 1 - i] * w;
		wSum += w;
	}
	
	return alma / wSum;
}

var ALMA(var *Data, int Period) {
	return ALMA(Data, Period, 6, 0.85);
}

function run()
{
	set(PLOTNOW|PLOTPRICE);
	StartDate = 2012;
	LookBack = 400;
	BarPeriod = 60;
	PlotWidth = 8000;

	vars Close = series(priceClose());
	vars MA1 = series(EMA(Close, 50));
	vars MA2 = series(LowPass(Close, 100));
	vars MA3 = series(ALMA(Close, 100));

	if (peak(MA1)) {
		if (!NumOpenLong)
			enterLong();
	} else if (valley(MA1)) {
		if (!NumOpenShort)
			enterShort();
	}

	plot("EMA50", MA1[0], 0, BLUE);
	plot("LP100", MA2[0], 0, ORANGE);
	plot("ALMA100", MA3[0], 0, CYAN);
}