Job finished
Specification
I am an individual investor. I have no ties to any trading organization. My intent is to use this Expert System for my own trading exclusively. The code for this project and the specification will be my property exclusively. I attempted to write the code myself but decided to hire an experienced programmer since the system will be automatically trading my money.
This system was developed on the Think-or-Swim platform. The goal of this project is to convert it to run as a fully automated trading bot on MetaTrader 5 using the MetaTrader VPS. The time frames used will range from 1 minute to 1 day. The delivered code must be ready to run back testing and be ready to load onto a remote server for actual trading. The code should be commented and documented to allow me to understand enough to make minor changes in the future. This system will be initially used on FOREX pairs.
The system will have a manual input to trade either Long, Short, or Both. I anticipate trading in the “Both” condition. Having the ability to choose Long and Short only will help me analyze and understand the system. In “Both” mode, the system will always be in the market. As soon as a long position is closed, a short one is opened and visa-versa.
The algorithm starts with the oldest data (left hand side of chart).
1. Define Trend –
a. if two consecutive bars have higher high and higher low – Up Trend
b. If two consecutive bars have lower lows and lower highs – Down Trend
2. A Trend remains in place until a signal to buy or sell is generated which reverses the trend,
3. Buy Signal
a. A Down Trend must be in effect
b. The “Long” or “Both” condition must be active.
c. The current high is >= the lowest low of the current down trend plus the sum of:
i. Average True Range x fixed multiplier
ii. Fixed number defined by user
iii. Percentage of current bar
4. Sell Signal
a. An Up Trend must be in effect
b. The current high is <= the highest high of the current down trend minus the sum of:
i. Average True Range x fixed multiplier
ii. Fixed number
iii. Percentage of current bar
5. Stop Loss
In theory, the Stop-Loss will never be hit. It is there in case of some sort of catastrophic failure; possibly a failure of a server or a data communication link. I want the stop-loss to reside on the market makers system or the markets ECN to minimize steps in the process which could fail.
· Long-Stop is placed at a user defined number of PIPs below the low which was used to trigger the current long position.
· Short-Stop is placed at a user defined number of PIPs above the high which was used to trigger the current short position.
Note: I am working on a more sophisticated Stop-Loss signal using volatility. When I am happy with my work, I intend to contact you to integrate it.
6. Order Execution
a. As soon as a bar is closed, it is analyzed using the rules described above. If an order is triggered, several steps must happen immediately:
i. Cancel the Stop-Loss
ii. Close the current order
iii. Initiate the new position
iv. Initiate the new stop-loss
User Interface
User selects trade types:
· Long Only
· Short Only
· Long and Short
User selects algorithm parameters:
· Number of contracts to be traded
· Fixed Percentage
· ATR Length
· ATR Multiplier
· Stop Loss Pips
Concerns:
1. By analyzing the data left to right and using small time frames such as 1 minute bar data, eventually the amount of data will become onerous. When I am back testing, I want to have as much data as possible. When I am doing automatic trading using real money, I want to use enough data to give me good results but not so much as to burden the CPU.
2. I do not understand the process MLQ5 uses to ensure no data is missed or if any checks should be included in the code to address this situation.