//====== Inputs RSILength = Optimize("RSILength", 11, 6, 20, 1 ); OverSold = Optimize( "OverSold", 20, 5, 40, 5); OverBought = Optimize( "OverBought", 70, 60, 90, 5 ); //====== Calc RSI ======== RSIValue = RSI(RSILength); //====== Calc Trading Signals Buy = Cross(RSIValue,OverSold); Short = Cross(OverBought,RSIValue); Sell = Short; Cover = Buy; //====== BTWFMGR_F2D83D3A_BBDB_447E_B0FE_209ED95E4E3F ============= //====== WALK-FORMWARD-OPTIMIZATION DATA COLLECTION SECTION ====== if( Status("action") == actionBacktest) { BT_strVarList = "RSILength/OverSold/OverBought"; BT_strCommMode = NumToStr(GetOption("CommissionMode"),1.0,False); BT_strCommAmt = NumToStr(GetOption("CommissionAmount"),1.2,False); BT_strInterval= Interval(1); BT_strBigPt = PointValue; BT_strTickSize = TickSize; BT_strSym = Name(); BT_strModuleName = "RSICross"; PSS_BTHdr(DateNum(),TimeNum(),O,H,L,C,V); } SetCustomBacktestProc(""); if (Status("action") == actionPortfolio ) { bo = GetBacktesterObject(); bo.Backtest(1); // run default backtest procedure BT_TrdInp001 = RSILength; BT_TrdInp002 = OverSold; BT_TrdInp003 = OverBought; NumTrades = 0; for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() ) { NumTrades++; BT_TrdCnt = NumTrades; BT_TrdLS = trade.IsLong; BT_TrdPrcE = trade.EntryPrice; BT_TrdSize = trade.Shares; BT_TrdDTE = DateTimeToStr(trade.EntryDateTime()); BT_TrdPrcX = trade.ExitPrice; BT_TrdDTX = DateTimeToStr(trade.ExitDateTime()); BT_TrdPL = trade.GetProfit(); PSS_BTTrd(NumTrades); } for (trade = bo.GetFirstOpenPos(); trade; trade = bo.GetNextOpenPos() ) { NumTrades++; BT_TrdCnt = NumTrades; BT_TrdLS = trade.IsLong; BT_TrdPrcE = trade.EntryPrice; BT_TrdSize = trade.Shares; BT_TrdDTE = DateTimeToStr(trade.EntryDateTime()); BT_TrdPrcX = trade.ExitPrice; BT_TrdDTX = DateTimeToStr(trade.ExitDateTime()); BT_TrdPL = trade.GetProfit(); PSS_BTTrd(NumTrades); } PSS_BTTrd(0); bo.ListTrades(); } // End of Data Collection Insert //====== BTWFMGR_F2D83D3A_BBDB_447E_B0FE_209ED95E4E3F =============