Using Rules, I am buying at market when the StochK crosses above 20.
I am trying to exit a position using a Sell at Close with "Price crosses below Price from previous day". I want to sell the long position if the Close goes below the Low of the last 3 days.
Options:
Entered for Price 1: Close
Entered for Price 2: Low
Previous Days: 3
For this, the Stock is TAN. Shows a buy on 11/27/13. Should have stopped out few bars later, but did not.
Cannot get the sell to work where StochK is below 20. I have attached a screenshot highlighting one example.
Also,
Looking at the code, there is:
if (CrossUnder(bar,Close, ROC.GetSeriesValue(bar-3,Low))).
Why is Rate of Change used here?
Thanks
Size:
Color:
The screenshot is attached here.
Size:
Color:
What does StochK have to do with "Price crosses below Price from previous day"? Other conditions that are not indicated can affect the system logic. Please show us how exactly have you defined the exit rules. (A screenshot or code should help.)
Size:
Color:
This is the code generated from Rules:
CODE:
Please log in to see this code.
Size:
Color:
After generating the chart, where the StochK is below 20 seems to be where the stop fails. The area I highlighted is just one of the areas it seemed to fail. I am trying to find out why.
Size:
Color:
A few bars later where you're looking for an exit, the price crosses
above price from previous day - not below. Now here's my chart which shows that there was no crossover and consequently, no exit:
Add this snippet to your code to quickly evaluate the series to be crossed:
CODE:
Please log in to see this code.
Size:
Color:
Are we talking about the same thing?
The definition is "Price crosses below price from previous day". I selected previous days to be 3. I also selected Price 1 to be Close, and Price 2 to be Low (see screenshot).
Therefore, the stop should be initiated if the close of the current bar goes below the lowest low of the previous 3 days. Correct?
For this case, At the Buy signal,
Bar 1 (the buy signal bar) Low: 38.40
Bar 2: Low: 38.21
Bar 3: Low: 38.14
Lowest Low is 38.14
Bar 4: Close is 37.97
Bar 4 has crossed the lowest low of the last 3 days. A stop should have been initiated. Note that the close is also lower than any of the 3 days.
Size:
Color:
QUOTE:
Therefore, the stop should be initiated if the close of the current bar goes below the lowest low of the previous 3 days. Correct?
No. You're confusing "price going below" with "price crossing below" which is a different thing. For the definition of cross over/under, please refer to the QuickRef >
CrossOver, CrossUnder. This concept is important to understand as you will find crossovers/unders frequently in rules and code.
As you can see on my screenshot, the price did not
cross below a few days after the buy. A cross under happened later. The exit is absolutely correct.
Size:
Color:
Thank you for your patience. I am only a few weeks into using Wealthlab.
I did read the items in the Quick Reference.
The cross point I am referring to is the one in this new attachment. Why did a sell not occur here? This crossunder looks the same as the one you pointed out. To me, both follow the definition.
Size:
Color:
Thanks for the clarification. The reason there's no sell on the 4th bar is as follows.
Normally, when CrossUnder/Over is being evaluated against
two DataSeries (i.e.
public bool CrossUnder(int bar, DataSeries ds1, DataSeries ds2)), the method takes
four values: a CrossUnder happens when the current value should be below the target value at the specified bar + the previous value had been greater than or equal to the target value at the previous bar.
However, this Rule is programmed in a way that it is based on a different CrossUnder overload method which evaluates only
three data items: the current and the previous value and the single target value:
CODE:
Please log in to see this code.
This overloaded call is widely used to detect crossings with oscillator thresholds e.g. RSI 30/70. So, your condition is "Close crosses below Low 3 days ago". On 12/3/2013:
Current value i.e. Close[bar] = 37.97
Target value i.e. Low>>3[bar] =
38.40Is the current value below?
YESPrevious value i.e. Close[bar-1] = 38.28
Previous target value =
38.40Is the previous value (38.28) greater than or equal to the target value at the previous bar?
NOThe point is, in this case the function accepts only the single fixed value and therefore the Rule behaves unexpectedly. This is somewhat counterintuitive but this how it works. I don't know why the rule has been code like this, maybe the developers had a reason.
Anticipating your question re: how to make this strategy work as you designed, convert the system to code and make this little change for the exit to trigger on 12/03/2013:
CODE:
Please log in to see this code.
Size:
Color:
Thank you very much!
One more question, does Low>>3 refer to the low of the previous 3rd bar, or the lowest of the last 3 bars?
If it only refers to the low of the previous 3rd bar, what would be the code for the Lowest of the last 3 bars?
After 2 weeks I can pretty much put together codes in Wealthscript using the Help on your website - worst part is dealing with the brackets.
Also, since I am new to this, am I in line asking these questions?
Size:
Color:
Low>>3 is the low of the previous 3rd bar. The >> operator shifts the DataSeries (QuickRef >
DataSeries Object for more).
The Lowest of the last 3 bars is coded using the
Lowest indicator. There's a companion for
Highest.
Size:
Color:
Thanks, you have been extremely helpful.
Size:
Color:
After discussing it among us technicians, we decided to concider this a deficiency in the Rule and so will file a bug report to the development team.
Size:
Color:
This issue has been fixed in Wealth-Lab Developer 6.8. The Pro edition has a partial fix (one rule is still affected) and thus requires a manual edit of the output code.
Size:
Color: