Registered User Joined: 1/14/2006 Posts: 436
|
Bruce
How are you doing? Hope life is treating you well. It has been awhile since I logged on to this forum.
I have another coding request. Not sure whether it can be done as a backtest or a real code indicator, or a combination of both. I want to be able to use the Indicator in a watchlist scan, and I want to be able to backtest the entry/exit strategies. Open to your advice/suggestions. Perhaps 2 sets of code are needed. One for a backtest of all closed trades, and one to monitor open trades as part of a watchlist scan.
Thank you… Dan
+++++++++++++++++++++++++++++++++++++
RealCode Indicator Name: 5dsma vs. Close
A) User Input:
Output = 1 “plot return” or 2 “plot days since entry”
Track = 1 “Current Trade” or 2 “Last closed Trade” {note: Perhaps this is duplicating backtest function, and is thus unnecessary}
TradeDirection = 1 “calculate Longs” or 2 “calculate shorts”
EntryTrigger = 0.5 “% above or below 5d sma”
ExitTrigger = 1.0% “%above or below 5d sma”
B Enter Long Trade when (Trade Direction = 1):
5 day sma rate of change (today) > 5 day sma rate of change (yesterday) AND
Close > 5d sma AND
(Close - 5d sma ) / close < Pricev5dsma/100
Exit Long Trade when:
(Close - 5d sma ) / close < -Pricev5dsma/100 OR
5 day sma rate of change (today) < 5 day sma rate of change (yesterday)
C) Enter Short Trade when (Trade Direction = 2):
5 day sma rate of change (today) < 5 day sma rate of change (yesterday) AND
Close < 5d sma AND
(Close - 5d sma ) / close < -Pricev5dsma/100
Exit Short Trade when:
(Close - 5d sma ) / close > Pricev5dsma/100 OR
5 day sma rate of change (today) > 5 day sma rate of change (yesterday)
D) Plot:
IF Output = 1, plot % return since trade entry
If Output = 2, plot days since entry (make number positive if trade is open, negative if trade is closed)
|
Worden Trainer
Joined: 10/7/2004 Posts: 65,138
|
I tried to be as literal as possible in converting the description into RealCode. You will need to edit the indicator to actually set the Entry Trigger to 0.5 as the default value will ignore the decimal and fill in as 5.
'|******************************************************************
'|*** StockFinder RealCode Indicator - Version 5.0 www.worden.com
'|*** Copy and paste this header and code into StockFinder *********
'|*** Indicator:5dmav Strategy
'|******************************************************************
'# Output = UserInput.Integer = 1
'# Track = UserInput.Integer = 1
'# TradeDirection = UserInput.Integer = 1
'# EntryTrigger = UserInput.Single = .5
'# ExitTrigger = UserInput.Single = 1
Static EntryBar As Integer
Static EntryPrice As Single
Static Old As Single
If isFirstBar Then
EntryBar = -1
Old = Single.NaN
End If
If EntryBar = -1 Then
If TradeDirection = 1 Then
If Price.AVGC(5) - Price.AVGC(5, 1) > Price.AVGC(5, 1) - Price.AVGC(5, 2) AndAlso _
Price.Last > Price.AVGC(5) AndAlso _
(Price.Last - Price.AVGC(5)) / Price.Last < EntryTrigger / 100 Then
EntryBar = CurrentIndex
EntryPrice = Price.Last
End If
Else If TradeDirection = 2 Then
If Price.AVGC(5) - Price.AVGC(5, 1) < Price.AVGC(5, 1) - Price.AVGC(5, 2) AndAlso _
Price.Last < Price.AVGC(5) AndAlso _
(Price.Last - Price.AVGC(5)) / Price.Last < -EntryTrigger / 100 Then
EntryBar = CurrentIndex
EntryPrice = Price.Last
End If
End If
Else
End If
If Track = 1 Then
If EntryBar = -1 Then
Plot = Single.NaN
Else
If Output = 1 Then
If TradeDirection = 1 Then
Plot = 100 * (Price.Last / EntryPrice - 1)
Else If TradeDirection = 2 Then
Plot = -100 * (Price.Last / EntryPrice - 1)
End If
Else If Output = 2 Then
Plot = CurrentIndex - EntryBar
End If
End If
Else If Track = 2 Then
Plot = Old
End If
If EntryBar <> -1 Then
If TradeDirection = 1 Then
If Price.AVGC(5) - Price.AVGC(5, 1) < Price.AVGC(5, 1) - Price.AVGC(5, 2) OrElse _
(Price.Last - Price.AVGC(5)) / Price.Last < -ExitTrigger / 100 Then
If Output = 1 Then
Old = 100 * (Price.Last / EntryPrice - 1)
Else If Output = 2 Then
Old = CurrentIndex - EntryBar
End If
EntryBar = -1
End If
Else If TradeDirection = 2 Then
If Price.AVGC(5) - Price.AVGC(5, 1) > Price.AVGC(5, 1) - Price.AVGC(5, 2) OrElse _
(Price.Last - Price.AVGC(5)) / Price.Last > ExitTrigger / 100 Then
If Output = 1 Then
Old = -100 * (Price.Last / EntryPrice - 1)
Else If Output = 2 Then
Old = CurrentIndex - EntryBar
End If
EntryBar = -1
End If
End If
End If
-Bruce Personal Criteria Formulas TC2000 Support Articles
|
Registered User Joined: 1/14/2006 Posts: 436
|
Bruce
Thank you.
Dan
Happy Holidays.
|
Worden Trainer
Joined: 10/7/2004 Posts: 65,138
|
You're welcome. Happy Holidays!
-Bruce Personal Criteria Formulas TC2000 Support Articles
|