float MACD(float signif, int factor, int sp, int lp, int empp, float cu_price, vector <struct historicalprices> prev_price, vector <struct price_entry> prices){
    double dlp, dsp, ds;

    if (factor ==1){
        unsigned int num_consid = period_consider(lp,signif);
        float formatted_price[num_consid-1];
        set_to_zero(formatted_price);
        format_price_days(prev_price, formatted_price);
        dlp = EMA(lp, signif, cu_price, formatted_price);
        dsp = EMA(sp, signif, cu_price,formatted_price);
        dsp -=dlp;
    }
}
// brute force optimization
function run(){  
	set(PARAMETERS);
  int PeriodsEMA1[4] = { 5, 10, 15, 20 };
  int PeriodsEMA2[3] = { 100, 150, 200 };  LookBack = 250;
  int Index = optimize(1,1,4*3,1) - 1;  int PeriodEMA1 = PeriodsEMA1[Index%4];
  int PeriodEMA2 = PeriodsEMA2[Index/4];    vars Price = series(price(0));
  vars EMA1 = series(EMA(Price,PeriodEMA1));
  vars EMA2 = series(EMA(Price,PeriodEMA2));    
  if(crossOver(EMA1,EMA2))
    enterLong();  
  else if(crossUnder(EMA1,EMA2))    
   enterShort();
 }
Beispiel #3
0
inline void MACD(int short_window, int long_window, int smooth_window, dvector &input, dvector &macd, dvector &macd_signal, dvector &macd_hist)
{
	std::vector<double> short_emas;
	std::vector<double> long_emas;
	short_emas.reserve(input.size());
	long_emas.reserve(input.size());
	macd.reserve(input.size());
	macd_signal.reserve(input.size());
	macd_hist.reserve(input.size());
	EMA(short_window,input,short_emas);
	EMA(long_window,input,long_emas);
	SUBTRACT(short_emas,long_emas,macd);
	EMA(smooth_window,macd,macd_signal);
	SUBTRACT(macd,macd_signal,macd_hist);
}
Beispiel #4
0
var filter(var* Data,int Period)
{
	return EMA(Data,2.0/(1+Period));
}