Need help seeing if system works and back testing it

 

Could someone help me to see if system yours and also back test it.

I wrote this and not sure it works need some help.

#property copyright ""
#property link ""

//#include <orderfunctions.mqh>
#include <eafunctions.mqh>
//#include <expiration.mqh>
//#include <moneymanagement.mqh>
//#include <strfunctions.mqh>

extern double lotsize = 0.1;
extern double lotsize2 = 0.1;


/*extern int money_management = 0; // 1=from stoploss, 2=only from account size
extern double mm1_riskpercent = 3;
extern double mm2_ref_balance = 10000;
extern double mm2_ref_lot = 3;*/

extern double _slippage_open = 3;
extern double _slippage_close = 5;
extern double stoploss = 20;
extern double takeprofit = 40;
extern double takeprofit2 = 60;


extern double breakevenat = 20;
extern double trailingstop_activate = 20;
extern double trailingstop = 20;
extern double trailingstop_step = 1;

/*
extern int starthour = 0;
extern int startminute = 0;
extern int endhour = 24;
extern int endminute = 0;
*/


extern int ma_period=35;
extern int ma_method=1;
extern int ma_shift=0;

extern int macd_fast_ema_period=6;
extern int macd_slow_ema_period=13;
extern int macd_signal_period=5;
extern int macd_applied_price=0;

extern int stoch_k_period=5;
extern int stoch_d_period=3;
extern int stoch_slowing=3;
extern int stoch_ma_method=0;
extern int stoch_price_field=0;
extern double stoch_oversold_level=20;
extern double stoch_overbought_level=80;



//extern bool signal_enabled;
extern int bar = 1;
extern int timeframe = 0;

extern bool signal_ma_enabled = true;
extern bool signal_macd_enabled = true;
extern bool signal_stoch_enabled = true;
extern bool signal_momentum_candle_enabled=true;
//extern bool closesignal_color_enabled = true;

extern string indicator_name = "";
extern int arrow_barsback = 0;

extern bool long_enabled = true;
extern bool short_enabled = true;
extern bool reverse_strategy = false;
extern bool oneperbar = true;
extern bool trade_only_signal_change = true;
extern bool trade_on_start = false;
extern bool enableclose = true;
extern bool openafterclose = true;
extern int maxorders = 1;

extern bool _orderbymarket = false;

extern int _stealth_sl = 0;
extern int _stealth_tp = 0;

extern int _magic = 1234;
extern int _sleepok = 500;
extern int _sleeperr = 1000;

#include <gow_inc_for_ea.mqh>

int init()
{
variables_init();
variables_priceinit();
if (isfractional())
{
fractd(breakevenat);
fractd(trailingstop_activate);
fractd(trailingstop);
fractd(trailingstop_step);
fractd(takeprofit2);
}

initalize_first();

/*if (money_management)
{
addaccountbalance = _addaccountbalance;
addfixbalance = _addfixbalance;
}*/

save_variables();

return(0);
}

int deinit()
{
return(0);
}

int signal_samplearrow()
{
int signal = SIGNAL_NO;

for (int i = 0; i <= arrow_barsback; i++) {
double up = iCustom(symbol,timeframe,indicator_name,0,bar);
double dn = iCustom(symbol,timeframe,indicator_name,1,bar);
signal = signal_arrow(up, dn);
if (signal != SIGNAL_NO) break;
}

addcomment("arrow signal: ",signaltext(signal),"\n");
return(signal);
}

int signal_ma()
{
int signal = SIGNAL_NO;

double close=iClose(symbol,timeframe,bar);
double open=iOpen(symbol,timeframe,bar);

double ema_h1=iMA(symbol,timeframe,ma_period,ma_shift,ma_method,PRICE_HIGH,bar);
double ema_l1=iMA(symbol,timeframe,ma_period,ma_shift,ma_method,PRICE_LOW,bar);
double ema_c1=iMA(symbol,timeframe,ma_period,ma_shift,ma_method,PRICE_CLOSE,bar);

double ema_h2=iMA(symbol,timeframe,ma_period,ma_shift,ma_method,PRICE_HIGH,bar+1);
double ema_l2=iMA(symbol,timeframe,ma_period,ma_shift,ma_method,PRICE_LOW,bar+1);
double ema_c2=iMA(symbol,timeframe,ma_period,ma_shift,ma_method,PRICE_CLOSE,bar+1);

addcomment("ma signal: ",signaltext(signal),"\n");
return(signal);
}

int signal_macd()
{
int signal = SIGNAL_NO;

double macd_main1=iMACD(symbol,timeframe,macd_fast_ema_period,macd_slow_ema_period,macd_signal_period,macd_applied_price,MODE_MAIN,bar);
double macd_main2=iMACD(symbol,timeframe,macd_fast_ema_period,macd_slow_ema_period,macd_signal_period,macd_applied_price,MODE_MAIN,bar+1);
double macd_sig1=iMACD(symbol,timeframe,macd_fast_ema_period,macd_slow_ema_period,macd_signal_period,macd_applied_price,MODE_SIGNAL,bar);
double macd_sig2=iMACD(symbol,timeframe,macd_fast_ema_period,macd_slow_ema_period,macd_signal_period,macd_applied_price,MODE_SIGNAL,bar+1);


if( (macd_sig2>=0 && macd_sig1<0) || (macd_sig2<=0 && macd_sig1>0)) signal=SIGNAL_BOTH;

addcomment("macd signal: ",signaltext(signal),"\n");
return(signal);
}

int signal_stoch()
{
int signal = SIGNAL_NO;

double stoch_main1=iStochastic(symbol,timeframe,stoch_k_period,stoch_d_period,stoch_slowing,stoch_ma_method,stoch_price_field,MODE_MAIN,bar);
double stoch_main2=iStochastic(symbol,timeframe,stoch_k_period,stoch_d_period,stoch_slowing,stoch_ma_method,stoch_price_field,MODE_MAIN,bar+1);
double stoch_sig1=iStochastic(symbol,timeframe,stoch_k_period,stoch_d_period,stoch_slowing,stoch_ma_method,stoch_price_field,MODE_SIGNAL,bar);
double stoch_sig2=iStochastic(symbol,timeframe,stoch_k_period,stoch_d_period,stoch_slowing,stoch_ma_method,stoch_price_field,MODE_SIGNAL,bar+1);

if(stoch_main1<=stoch_oversold_level) signal=SIGNAL_BUY;
if(stoch_main1>=stoch_overbought_level) signal=SIGNAL_SELL;

addcomment("stochastic signal: ",signaltext(signal),"\n");
return(signal);
}

int signal_momentum_candle()
{
int signal = SIGNAL_NO;

double close=iClose(symbol,timeframe,bar);
double open=iOpen(symbol,timeframe,bar);

double ema_h1=iMA(symbol,timeframe,ma_period,ma_shift,ma_method,PRICE_HIGH,bar);
double ema_l1=iMA(symbol,timeframe,ma_period,ma_shift,ma_method,PRICE_LOW,bar);

if(close>open && close > ema_h1) signal=SIGNAL_BUY;
if(close<open && close < ema_l1) signal=SIGNAL_SELL;

addcomment("momentum candle signal: ",signaltext(signal),"\n");
return(signal);
}

int signal()
{
int signal = -1;
if (signal_ma_enabled) signal = signaladd(signal,signal_ma());
if (signal_macd_enabled) signal = signaladd(signal,signal_macd());
if (signal_stoch_enabled) signal = signaladd(signal,signal_stoch());
if (signal_momentum_candle_enabled) signal = signaladd(signal,signal_momentum_candle());
return(signal);
}

int closesignal()
{
int signal = SIGNAL_NO;
//if (closesignal_color_enabled) signal = signaladd_or(signal,signal_samplecolor());
return(signal);
}

int start()
{

addcomment("www.metatraderprogrammer.com\n");

/*if (realalert("Run this software on demo account only!\n"))
{
return(0);
}*/

realalert();

variables_priceinit();

isfirsttick(timeframe);

bool enableopen = true;

int signal = signal();
int closesignal = closesignal();

/*if (isexpired(1000,01,01))
{
signal = 0;
enableopen = false;
}*/

/*if (!istradinghours(starthour,endhour,startminute,endminute))
{
enableopen = false;
addcomment("out of trading hours\n");
}*/

signalhandler (
signal,
closesignal,
enableopen,
/*trade_only_at_firsttick*/ (bar == 1),
trade_only_signal_change,
oneperbar,
trade_on_start,
timeframe,
/*comments*/ true,
reverse_strategy,
1);

if (signal != 0)
{
if (enableopen)
{
/*if (money_management == 1)
{
moneymanagement_init();
lotsize = mmgetlot_stoploss(stoploss, mm1_riskpercent);
}*/
/*if (money_management == 2)
{
moneymanagement_init();
lotsize = mmgetlot_ref_balance(mm2_ref_lot, mm2_ref_balance);
}*/
addcomment("signal happened\n");
if (IsTesting())
Alert(commentstring);
}
int cnt;
if (signal == SIGNAL_BUY)
{
if (!openafterclose) cnt = cnt_orders(ORDERSELECT_ANY);
if (enableclose) close_all(ORDERSELECT_SHORT);
if (openafterclose) cnt = cnt_orders(ORDERSELECT_ANY);
if (enableopen && cnt < maxorders && long_enabled)
{
marketorder(OP_BUY,lotsize,stoploss,takeprofit);
marketorder(OP_BUY,lotsize2,stoploss,takeprofit2);
}
}
if (signal == SIGNAL_SELL)
{
if (!openafterclose) cnt = cnt_orders(ORDERSELECT_ANY);
if (enableclose) close_all(ORDERSELECT_LONG);
if (openafterclose) cnt = cnt_orders(ORDERSELECT_ANY);
if (enableopen && cnt < maxorders && short_enabled)
{
marketorder(OP_SELL,lotsize,stoploss,takeprofit);
marketorder(OP_SELL,lotsize2,stoploss,takeprofit2);
}
}
}

if (closesignal == SIGNAL_BUY)
{
close_all(ORDERSELECT_SHORT);
}
if (closesignal == SIGNAL_SELL)
{
close_all(ORDERSELECT_LONG);
}
if (closesignal == SIGNAL_BOTH)
{
close_all(ORDERSELECT_ANY);
}

if (!IsTesting()) {
save_variables();
variables_priceinit();
run();
}

//trailingstop(breakevenat,trailingstop,trailingstop_activate,trailingstop_step);
//if (!IsTesting()) move_line_to_sl();

stealth_run();

if (IsTesting() && isfirsttick)
Alert(commentstring[0]);

writecomment();
delcomment();

return(0);
}
 

Could someone help me to see if system yours and also back test it.

Fail.....

 

  1. For large posts - ATTACH the file(s). No include files posted, not complete code - no mind readers here.

  2. I wrote this and not sure it works need some help.
    No Question asked.
 
ubzen:

Could someone help me to see if system yours and also back test it.

Fail.....


Your question is a little vague, so this may not be what you are looking for, but:


1. Open a demo account with any Forex broker, and download and install an MT4 platform from them.

2. Compile your EA


3. Activate your EA by dragging its icon onto the graph for a currency pair of interes

4. Run the strategy tester, and look at the log output. To learn about using the strategy tester, use the Help menu button.

4. Look at the log output. If it is insufficient to tell you what you need to know, add Print statements at appropriate, and do

it again.

If this answer does not meet your needs, try to ask a more specific question.