# NEOTICKER DATA BEGIN ScriptType=Indicator Description=Mov Avg (2 Lines) System +MM Name=sys_2ma_mm Language=Formula Links=1 MinBars=0 TimerInterval=100 MetaStyle=Normal ValueRange=Large Positive Placement=New Pane Multiplot_num_plots=1 Multiplot_color_0=33619712 Multiplot_style_0=Line Multiplot_width_0=1 Multiplot_enabled_0=1 Multiplot_name_0=Equity Multiplot_breakstyle_0=0 UpdateByTick=0 TradingSystemUI=1 PrimaryLinkOnly=0 NotifyOnRemoval=0 Param_count=7 Param_name_0=Fast Param_inuse_0=1 Param_type_0=integer.gt.0 Param_default_0=5 Param_name_1=Slow Param_inuse_1=1 Param_type_1=integer.gt.0 Param_default_1=50 Param_name_2=Daily Range Period Param_inuse_2=1 Param_type_2=integer.gt.0 Param_default_2=20 Param_name_3=Stop Param_inuse_3=1 Param_type_3=real Param_default_3=0.6 Param_name_4=Trail Start Param_inuse_4=1 Param_type_4=real Param_default_4=1.2 Param_name_5=Trail Param_inuse_5=1 Param_type_5=real Param_default_5=0.2 Param_name_6=Target Param_inuse_6=1 Param_type_6=real Param_default_6=3 Explanation_Lines=1 Explanation0=Moving Average (2 Lines) Crossover System with Money Management is an example trading system based on 2 moving averages crossover signals with volatility based money management rules. Require 1 data series (Link 1). # NEOTICKER DATA END ' Moving Average (2 Lines) System with Money Management ' Written by Lawrence Chan ' Copyright (c) 2005 by TickQuest Inc. ' All rights reserved plot1 := currentequity; ma1 := average (data1, param1); ma2 := average (data1, param2); ' to properly convert an existing system to include money management ' there are 4 steps to follow ' 1. we have to summarize the conditions into entry and exit signals $long_signal := xabove (ma1, ma2); $short_signal := xbelow (ma1, ma2); ' 2. we combine them into a direction series ' this series should match the position taken exactly like ' your original system ' for moving average crossover, it is not likely we will get ' multiple entry signals in the same direction, but for ' other types of entry signals, this series is our guide to ' not re-enter a position in the same direction once money ' management rules has taken us out of a position sys_dir := if ($long_signal, 1, if ($short_signal, -1, sys_dir (1))); ' 3. rewrite the orders to duplicate what we did originally ' the system should perform exactly like the original system ' you have created, you can do that by directly comparing the ' original system performance against the current one. longatmarket ( sys_dir (1) <= 0 and $long_signal > 0, defaultordersize); shortatmarket ( sys_dir (1) >= 0 and $short_signal > 0, defaultordersize); ' 4. add the new money management orders compressseries (mydaily, data1, ppDaily, 1); makeindicator (dailyavgrange, avgrange, mydaily, param3); $ref_range := dailyavgrange (1); ' long side $long_use_trailing_stop := openpositionlong > 0 and openpositionbestpricelevel - openpositionaverageentryprice > $ref_range * param5; ' stop loss longexitstop ( openpositionlong > 0 and $long_use_trailing_stop <= 0, openpositionaverageentryprice - $ref_range * param4, openpositionabssize); ' trailing stop longexitstop ( openpositionlong > 0 and $long_use_trailing_stop > 0, openpositionbestpricelevel - $ref_range * param6, openpositionabssize); ' target longexitlimit ( openpositionlong > 0, openpositionaverageentryprice + $ref_range * param7, openpositionabssize); ' short side $short_use_trailing_stop := openpositionshort > 0 and openpositionaverageentryprice - openpositionbestpricelevel > $ref_range * param5; ' stop loss shortexitstop ( openpositionshort > 0 and $short_use_trailing_stop <= 0, openpositionaverageentryprice + $ref_range * param4, openpositionabssize); ' trailing stop shortexitstop ( openpositionshort > 0 and $short_use_trailing_stop > 0, openpositionbestpricelevel + $ref_range * param6, openpositionabssize); ' target shortexitlimit ( openpositionshort > 0, openpositionaverageentryprice - $ref_range * param7, openpositionabssize);