Is DLPAL a neural net program?
DLPAL is not a neural net program. It uses a deep learning algorithm for supervised and unsupervised learning developed by Michael Harris.
If everyone uses DLPAL will that affect the strategy performance?
There are so many different markets, so many different strategies and so many different ways traders can approach strategy development (in terms of profit targets, stop-loss, profitability, risk management, etc.) that makes this question a philosophical one rather than practical. Of course, trading very liquid markets reduces the risk of being part of a hypothetical “herd” using the same system.
Are the strategies discovered by DLPAL particular to a certain market?
Although with DLPAL you can discover strategies particular to a certain stock or futures contract, it turns out that many of those strategies work for a group of stocks or even future contracts. DLPAL can discover strategies that are common to a large universe of securities.
Are the strategies found by DLPAL pre-programmed in a database?
There are no hard coded strategies in DLPAL. Instead, DLPAL uses deep learning principles guided by major cluster types. DLPAL does not look for traditional chart strategies but for price action strategies. Some of the strategies the program finds may look similar to traditional chart formations. Strategies have up to 9 price bars lookback period. That does not include the delay bars. The program finds strategies dynamically as it goes through a data file of historical prices and they are specific to the data used although it may turn out that some of the strategies work for a group of securities.
Can DLPAL consider volume or other indicators in the search for strategies?
DLPAL discovers price strategies that fulfill user-defined risk/reward and performance criteria. The strategies do not consider volume information, only the open, high, low and close of price bars. There is a way of modifying the input data to identify volume strategies.
How do I go about developing advanced systems based on DLPAL strategies?
Many sophisticated users of DLPAL do not rely on signals from individual strategies but instead develop systems based on the concepts described in the “Tips for Advanced Users” section of the help file.
For example, some users require that two or more strategies generate signals at the same time. Some others consider as signals those that come one or two bars after another signal. There are all sorts of ways and methods to try to increase the probability of success of individual strategy formations.
Can I use DLPAL with intraday or tick data?
Finding statistically significant strategies in very fast timeframes, for example 1 – 10 minute bars may turn out to be hard or even impossible due to the presence of noise and the demand for large samples. There are also several parameters that can affect the performance of strategies in out-of-sample backtesting or actual trading, including the target/stop ratio and short-term volatility.
It is unlikely that tick data strategies can have only statistical significance at all.
What is out-of-sample/forward testing and how to do it in DLPAL?
Testing in out-of-sample or a forward test is a method used for validation machine learning results. It involves splitting the historical data file into two or more parts, usually two. The first part is called the in-sample, which is used to search for strategies. It is usually 2/3 of the original data file. The second part is called the out-of-sample, the remaining 1/3 of the data file. DLPAL offers a tool for generating in-sample and out-of-sample data files from individual files or from or groups of files. The Tool is found is called Sample File Creation under Tools. The in-sample is used with a search workspace to find strategies that satisfy the performance criteria specified on the search workspace. When the results are generated, the out-of-sample is used with the “Test Strategies” tool to analyze performance.
What is the best way of generating signals from the search results?
As soon as you have done a validation test and you have decided to use specific strategies from the search results, you have a few choices.
Choice A. If the strategies are from daily data, you can mark the strategies you want to use and add a system to System Tracking. Then, you need to update the data files EOD and run System Tracking.
Choice B. If the strategies are from intraday data and/or you want to you another platform anyway, in Tradestation for example, you can generate the code for the strategies you want. In this case, you may keep each strategy as a separate system, especially when the profit-target and stop-loss values are different. If the exits are the same, a simple way is by combining the conditions using OR, separately for long and short strategies. Make sure you set the target and stop values in the strategy code to proper values.
For example:
Strategy 1: if c[4] > h[2] AND c[3] > l[2] AND h[2] > c[3] AND c[0] > c[1] AND l[2] > c[0] then begin
Strategy 2: if h[0] > h[4] AND h[2] > l[3] AND l[3] AND h[4] > h[2] > l[1] AND l[1] > l[5] then begin
Combination using OR:
if (c[4] > h[2] AND c[3] > l[2] AND h[2] > c[3] AND c[0] > c[1] AND l[2] > c[0]) OR (h[0] > h[4] AND h[2] > l[3] AND l[3] AND h[4] > h[2] > l[1] AND l[1] > l[5]) then begin
The parentheses were used to enclose each condition. Note that the program also generates a text file with raw code you can use with strategy builder in TS to automate this process. The raw code generation applies only to the Search and Database results. Two files with identical content are saved automatically in sub-directory “…Results” after you generate EL code from search results:
(1) A file called GeneratedCode.txt which is overwritten each time new code is generated.
(2) A file saved as : RawCode_mm_dd_yyyy_hh_mm.txt
This last file is overwritten only if new code generation takes place during the same minute mm that the file was initially generated. You can edit this file using a regular editor like Notepad, add what you wish to it and use it in TS. You may also add other indicators and systems to filter out and/or confirm signals.
What is the recommended way of running multiple instances of DLPAL?
The recommended way of running multiple instances of the open/lifetime license is to create multiple installations of the program in different directories, such as in: C:Priceactionalb1, C:PriceActionLab2, C:PriceActionLab3, etc. One important restriction is that each instance of the program when it runs must NOT share data files from the same directory with any other instance.
Important note: The multiple instances were designed to run workspaces that are created and saved only after the instance is loaded. This is because in some Windows systems the relevant directory is only shown under “Create New Workspace. All other options use the last directory stored in the Registry. If you start a new instance and select “Open Existing Workspace”, the directory shown depending on your system configuration may be the one of the last saved workspace and its corresponding instance, not of the current instance. You can however get around this by selecting the MyWork sub-directory of the particular instance. If you do not know in which directory the instance is located, you can just select Create New Workspace and you will see the relevant directory. You can then exit and select open workspace, go to the relevant directory and select the workspace you want. In addition, when you save the workspace you must make sure it is saved in the relevant directory because in some system the directory of the last instance will apply.
Alternatively, there is a way to simplify the process as follows: You can create a common directory for all instances to save the workspaces, like “C:DLPALWRK” and another common directory to save all results, like “C:DLPALRES”
After installing a new instance you can create the workspace you like and save it in the common directory, by the name WRKn, for example, where n is the instance number. Then, after running each instance, you can open the workspace from the common directory.
The above takes some initial work but the time is negligible compared to the time saved running the multiple instances. It has also the advantage of aggregating workspaces in one place.
What is the difference between Test Strategies, Back-test, Back-Test Portfolio and Portfolio Backtest?
1. Test Strategies: This function calculates the performance of all strategies in the results on a data sample that has the same file name as the one shown in the results and it can be used for out-of-sample testing. Selection from results is ignored.
2. Back-test (right mouse click): back-tests single strategies from the search or system tracking results.
3. Back-test Portfolio (right mouse click): This function calculates the performance of single strategies on a portfolio of symbols.
4. Portfolio Backtest: This tool calculates the performance of each of the strategy in the search esults on a portfolio of symbols. It is equivalent to applying #3 for all strategies without the performance details.
Hint: Option #3 above will generate the same results as #1 if the portfolio contains only one symbol that is the same as that in the results
DLPAL cannot find the file when I try to use the Backtest or Test Strategies tools.
The name of the file used with the back-test or Test Strategies tools must be identical to that shown on the results workspace. Otherwise the program will generate an error message that the file was not found. The same error message is generated if the file name, excluding the path and the .txt extension, is greater than 26 characters. Important: Always double-click on a directory to select it. Only the directory structure is shown, not the files.
How to implement DLPAL strategies and systems in NinjaTrader?
As soon as you find a system you like in DLPAL using the historical data you export from NinjaTrader (NT), you can generate code for the strategies in NT script and then you can implement a system with the extra code you desire (with money management, position sizing, etc). Then this system generates the orders through the broker you use with NT when the signals are generated.
What are “common strategies” and what is their objective?
Common are defined in DLPAL as strategies in one instrument that satisfy the criteria set on the workspace for that instrument and also show positive performance in all other instruments using the risk/reward parameters of the original instrument. The objective of applying the original instrument risk/reward criteria to all other instruments is to determine whether a given strategy with given profit target and stop-loss is profitable (at least marginally) in another comparable security. If the original profit target and stop-loss were to be changed it could raise curve-fitting issues. In effect this is a method of validation but it does not guarantee positive forward performance but only reduces the chances of curve-fitting or random strategies. Specifically, in the case of a 2% profit target and stop-loss in SPY and a strategy with profit factor 1.8, one should not expect to get the same performance in QQQ but it would be nice to have a profit factor at least greater than 1. This does not directly imply the strategy will work in forward testing but the idea is that a random, or curve-fitted one, will not. Note that the common strategy test is a very conservative validation method.
Why DLPAL does not have an option for exits based on ATR?
According to the system development philosophy of DLPAL any exit that “adapts” to market conditions may produce fitted systems. Specifically, by adjusting exits to adapt to short-term volatility, which is what ATR accomplishes, the entry part of a system tends to become less significant. By selecting exits that fit any signals to the data random systems may be developed. Instead, the philosophy of DLPAL is that signals should perform well for small constant exit thresholds and if a security shows strictly increasing volatility as a function of time then it should not be used for creating automated systems not because it cannot be traded but because adapting to the volatility during the design phase will create fitted systems. Fortunately, most popular securities and markets exhibit volatility cycles. The profit-target and stop-loss can be calculated as the average of actual changes or percentage:
daily changes: abs(close – close of n bars ago) percentage changes: 100 x abs[(close/close of n bars ago )-1]
where abs stands for the absolute value and n is set to the expected average trade duration, which must be less or equal to maximum strategy length of 9 bars in DLPAL. It has been determined in the finance literature than memory in price series is slowly lost after 4 to 5 bars and as a result any type of exits that close positions after many bars may contribute to the creation of fitted systems.
Can DLPAL use multiple CPU cores in parallel?
DLPAL is not a multithreaded application because a substantial investment is required for rewriting the code to use multiple cores in an effective way and not in some pseudo manner done by other applications. With that price would have to increase beyond levels that the average trader can afford. However, we offer an alternative solution for those users that have already determined that DLPAL suits their needs in the form of an upgrade that allows multiple instances to run on the same machine.
Why I do not get any search results in intraday or daily data?
There are several reasons for not getting any results. Below are a few recommendations:
(1) The markets and timeframes tried may have become too efficient for the parameters specified, including the target and stop levels. Usually futures and forex markets, especially in intraday timeframes, provide very few tradable strategies.
(2) The stop-loss must be set outside the 1-bar volatility range. Stops are checked immediately before profit targets to produce conservative backtests and if the stop-loss is too low no significant strategies will be found.
(3) Test Sample size setting: For daily data the default of 500 bars should be good enough but for intraday data values greater than 1,000 are appropriate depending on timeframe.
(4) Properly back-adjusted continuous data for futures contracts must be used.
(5) Appropriate values for the profit-target and stop-loss must be used. In the case of futures point values should be used in the T/S file. More details can be found under “A short note on using targets and stops” in “Creating a T/S File” in the program manual.
(6) Workspaces must be created by first selecting the exit type and then creating a search line? It is always a good idea to check the search lines to see if the proper parameters are selected before running the workspace.