- Joined
- 28 December 2013
- Posts
- 6,390
- Reactions
- 24,317
@Skate, if you're just posting to track your own system - why not post the entries after the days close? Because regardless of whether you post a disclaimer, people will trade along with what you post. It's just human nature. By posting after the days close, there is no chance for it to be used as a signal service, and you can still track and post your own results. Just a thought.
View attachment 108120
@ducati916 I hear you loud & clear.
All posters contribute in their own particular way
The "Dump it here" thread is for the sharing of ideas in such a way to educate those starting out on their trading journey. @WilsonFisk posted some valuable information in his previous post that others should investigate as it's comments like his that give inspiration to us all. Some time ago the Duc dropped something similar about using the VIX that has been invaluable to me.
Posters are always looking for inspiration
It's good to see Peter is back posting, he's currently wondering "what trading idea to post about next" has got me thinking. I don't trade Daily strategies & to be truthful I consider it to be time-consuming. There is nothing better to spend less than 15 minutes a week trading, placing my orders over the weekend when it suits me. Imagine having to spend 15 minutes a day trading a daily strategy.
Being naturally lazy
I'm wondering if I have the stamina to trade day-in-day-out, but I'm willing to give it a go.
Skate's Daily VIX Strategy
This is the perfect strategy to kill two birds with one stone by putting a blow torch to the Duc's VIX idea & trading his idea on a daily basis. Peter made the comment "I post to keep myself engaged, focused and on track" so I intend to do the same. Another thing, posting & updating the daily progress of the "VIX Strategy" will keep the "Dump it here" thread active. Whereas some might like to check-in & watch the daily progress.
Skate.
View attachment 108042
Backtesting
I made a previous remark that I would resist posting backtest results. But for the evaluation of this Daily Strategy I'll make an exception. Maybe @willy1111 or @stafe may be kind enough to reproduce more accurate backtest results having Norgate's “Platinum subscription” when I upload the strategy (afl).
Backtest results from 1st January to 21st August 2020 (this calendar year)
View attachment 108043 View attachment 108044
Skate.
OnLastTwoBarsOfDelistedSecurity = BarIndex() >= (LastValue(BarIndex()) -1) AND !IsNull(GetFnData("DelistingDate"));
OnSecondLastBarOfDelistedSecurity = BarIndex() == (LastValue(BarIndex()) -1) AND !IsNull(GetFnData("DelistingDate"));
Buy = cond1
AND cond2
AND cond3
AND cond4
AND cond5
AND cond6
AND NorgateIndexConstituentTimeSeries("$XAO") // see if the symbol is part of the All ords at the time when a signal is generated
AND NOT OnSecondLastBarOfDelistedSecurity ; // don't enter if on second to last bar before delisting
//=================================================================================
//5. Add a sell condition
//=================================================================================
Sell = C < MA( C, 50 ) AND NoStrength AND NoUpTrend OR OnLastTwoBarsOfDelistedSecurity; // Exit if security has been delisted during open position
Curious as to why you don't combine strategies, and each one is independent?
@Roller_1 I can't dispute your findings as I don't have access to Norgate's Platimum Subscription Package. The results look pretty ordinary & I would appreciate if someone else could verify your results.Hi guys
Out of interest i ran this system over Norgates full database, since it hasn't been done yet. I used the code as is and i have not been through skate's code to check it, i just added the relevant code snippets to test using Norgates historical capabilities. Others can cross check if they have time.
@Trav. the "AND" statement is designed to keep you in the trade as long as possible an "OR" statement would be ineffective.@Skate is this line correct ? as the comment does not reflect the logic.
Sell = C < MA( C, 50 ) AND NoStrength AND NoUpTrend; // Sell when the close is less than the moving average of the last 50 Days with the closing price is less than the Simple Moving Average of the last 12 Days or Sell when there is NoUpTrend as the trend has ended. As when I tested your code over the same dates as you I found that I could not replicate your number of trades and that only 2 of my trades exited from the above logic, the rest (36) exited due to the trail stop.
Every time you do comparisons of Close with absolute numbers you should use the unadjusted Close. I rememeber I was bitten by this slight error back when I was backtesting using PremiumData and couldn't believe the good results I got. Although to be fair my ranking algorithm was also affected by this error as I was ranking by 1/C and I was backtesting Russell 3000 which I guess has many more splits and adjustments than AU stocks.cond3 = C >= 0.05; // Buy only if the closing price is greater $0.05 (5 cents)
cond4 = C <= 10; // Buy only if the closing price is less than $10.00
@Roller_1 I can't dispute your findings as I don't have access to Norgate's Platimum Subscription Package. The results look pretty ordinary & I would appreciate if someone else could verify your results.
Strategies Uploaded
All the strategies I've uploaded are from my original 2015 Amibroker template that tested code snippets in my early days of learning. The templates served me well & it's why I'm sharing them as they are perfect for new Amibrokers users to start out with. I've commented the lines of code so it's much easier to understand. FYI, I don't trade any of the strategies uploaded. They are for learning purposes only.
Skate.
Hi @soso can you explain this a little more for us noobs? Is "unadjusted close" a different field?Every time you do comparisons of Close with absolute numbers you should use the unadjusted Close.
Hi @soso can you explain this a little more for us noobs? Is "unadjusted close" a different field?
@stafe if you read back a few posts your concerns have already been addressed. I'll refrain from uploading backtest results as I don't have Norgate's “Platinum subscription” only the "Silver" & I didn't realise the huge difference between the results over a short period of time.
It worth repeating
Without Norgate's “Platinum subscription” backtesting is less than reliable.
Backtest 2 - Making use of Historical Index Constituents
Platinum users of Norgate data are able to make use of Historical Index Constituents https://norgatedata.com/amibroker-usage.php This means that before a trade is taken the software checks to see it is in the relevant index at the time the trade is entered. This backtest I ran on watchlist All Ords (502 matching symbols) but included code to ensure the stock was in the All Ords at the time the trade was entered. https://www.aussiestockforums.com/posts/1088553/
This is @willy1111 Backtest results (using Norgate's “Platinum subscription”)
View attachment 107956
The previous post is worth repeating
“@willy1111 thank you for doing this backtest for me. Looking at the comparison between the backtests with & without (Norgate's Index Constituent) the results are "chalk & cheese", being miles apart. The backtest results confirm it pays to have the Norgate's Platinum subscription when developing a new strategy”
“@CNHTractor your follow up post confirms @willy1111 sentiment about the inaccuracies of backtest results when you are not using Norgate's historical index constituents. Note to self, "refrain from posting backtests in the future”
So you have the adjusted version of the WTT Strategy
I have uploaded the most recent version of the "WTT Strategy" just for you.
FYI
The version that I'm paper trading "Skate's Version of the WTT Strategy" bears little resemblance to the strategy uploaded.
Skate.
Hi Skate, I have a few questions about your code
1. In your code at line 17 what is the purpose of the 2 lines?
SetForeign( "$XAO.au", True , True );
RestorePriceArrays( True );
Aren't these lines redundant as in line 23 is
Index = Foreign("XAO","C",True);
2. Line 36 is
MOMFilter = ( ROC( C, 10 ) >= ROCParameter );
shouldn't it be?
MOMFilter = ( ROC( C, 10 ) >= ROC( C, ROCParameter) );
3. Finally, what is the purpose of the variable TradingFunds which was set to default value of 5000?
Isn't the position size determined by the current equity divided by the maximum number of positions?
ie
PosQty = 20; // Position Quantity = Maximum 20 positions
PositionSize = -100 / posqty;
Please pardon me if my questions are basic.
Thanks for your feedback.
Stafe
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?