指定
Buy Against The Trend With Boundary Lines:
General:
If broker and my VPS server lose connection, the ea sends SMS to 3 phone numbers and email notice to 3 email addresses.
If broker loses connection to the market then the ea also sends the messages.
SOS button on the chart, in emergency to close all orders (active and pending) and stop the work of the ea.
Backtest should run fast as possible. Please code the ea so it runs fast.
Must be able to open multiple charts for different currency pairs to run at the same time. And must be able to open multiple charts for the same pair. Each chart looks at current balance for start lot size. We need ability to change magic number our self please.
If the EA if closed and restarted in the middle of its work, it must remember its work and continue like normal when turned on again (in case of a problem).
Please use the input names provided in the Spec Doc.
Ea works with market orders. Option: CloseBY True/False – If set to True, orders are closed using “close by” function which is more accurate in a fast market.
Max DD close all positions from all sets MaxDDCloseAll.
________________________________________________________
Overview of the EA (without details):
There is a centerline (colored). Sell market orders open above the centerline with gaps between the positions. Buy market orders open below the centerline in the same way.
Above and below the centerline, eg, 200 pips above and 200 pips below, is Line #1 (colored). When the market is moving between Line #1 above the centerline and line #1 below the centerline this called “zone A” (eg 400 pips) the orders close with TP eg 20 pips and SL eg 0. If the market goes back to the price where the order was, the order opens again, and this repeats.
Further distance (than Line #1) away from the centerline above and below is Line #2 (colored). If the market moves between Line# 1 and Line #2, this is called the “Zone B”. Once the market goes into this zone the ea changes. It no longer opens and closes positions like in zone A. Even if the market goes back to the zone A, it will not open and close positions and the TP and SL no longer work. Instead it tries to close all positions together with specified profit (or loss) and restart with new centerline at the current market price.
Further distance (than Line #2) away from the centerline above and below is Line #3 (colored). If the market moves between Line# 2 and Line #3, this is called the “Zone C”. Once the market goes into this zone the ea will try to close all position together at a specific profit or loss and restart with new centerline at the current market price.
If the ea does not have a chance to close all positions and restart and the price moves past Line #3 then a hedge is applied to lock the loss from all positions. 2 types of hedge options are available. If the market price goes back to “zone C” the hedge is released and will try to close all. If the market ranges here, the hedge is applied and released, applied and released continuously. Option is also provided to hedge each position individually X pips away from each individual position.
_____________________________________________line 3
Zone C
_____________________________________________line 2
Zone B
_____________________________________________line 1
Zone A
______________________________________________Center line
Zone A
_____________________________________________line 1
Zone B
_____________________________________________line 2
Zone C
_____________________________________________line 3
Zones and Position Gaps:
Need Inputs for size of each zone. Zone A is centerline to boundary of zone A. AzonePipsFromCenter. (remember the zones appear above and below the center line)
Zone B is distance from boundary of zone A to boundary of zone B. BzonePipsFromAzone.
Zone C is distance from boundary of zone B to boundary of zone C. CzonePipsFromBzone.
Start lot is calculated as % of current balance as of the time the ea closes all positions and restarts its work. (need input StartLotPercentBal). Eg $100,000 balance if StartLotPercentBal = 1%, then start lot will be 1 lot. Start lot is for position 1.
For the gap between positions we need inputs. For example:
ZoneAPositionGaps eg = 20
ZoneBPositionGaps eg = 30
ZoneCPositionGaps eg = 40
Positions appear above and below the center line. The number of positions in each zone will depend how big we make the zone and the size of the gaps. There is no limit to the number of positions except by the broker.
Eg. Start lot = 1 lot. So position 1 is 1 lot.
Lot sizes:
Need 3 separate inputs to increase the lot sizes by percent bigger than the previous lot. I want to have different percent increases for the lots in each of the 3 zones:
PercentIncreaseLotZoneA. eg = 0%
PercentIncreaseLotZoneB. eg = 20%
PercentIncreaseLotZoneC. eg = 50%
So, in the above example, assume we only have 6 positions in use. Based on the gaps and size of each zone, there are 2 positions in each of the zones. The start lot is 1 lot.
PercentIncreaseLotZoneA: (0% lot increase)
1 lot
1 lot
______________
PercentIncreaseLotZoneB: (20% increase)
1.2 lot
1.44 lot
______________
PercentIncreaseLotZoneC: (50% increase)
2.16 lot
3.24 lot
Rules for closing positions in each zone:
1) Zone A (between centerline and Line #1):
The positions located inside the zone A have TP in pips and SL in pips (need inputs). Most likely I will set SL = 0. After a position is TP or SL, if the market will go back to the price where the position was originally located, the position opens again. This process repeats as many times without limit. The positions in this zone work independently, opening and closing.
Let the profit run: Provide inputs to lock and trail the profit. i.e. the TP must increase to infinity once the ea locks profit. ProfitPipsToStartSLtrail, DistancePipsToSL, TrailSLStepPips.
2) Zone B (between Line #1 and Line #2): Once the market goes into this zone the ea changes. It no longer opens and closes positions. Even if the market goes back to zone A, it does not matter. The TP and SL inputs no longer work. Instead, the ea tries to close all position together with profit or loss (need input ZoneBprofitPercentBal).
If set ZoneBprofitPercentBal = 1% (or can even set to -1% will work and accept loss) then when all the filled positions together sees $1,000 floating profit ($100,000 balance at the last restart), restart the set with new centerline at the current market price. Please provide option True/false. OptionIncludeClosedProfitsLosses. If set to true the ea also takes into account the closed positions profits and losses (since the last set restart) when looking for the $1,000 target ( e.g. 1% setting on $100,000 balance). If set to False it looks only at floating profit from currently filled positions.
3) Zone C (between Line #2 and Line #3): Once the market goes into this zone C the ea works same as in zone B, namely it looks to close all positions together and does not open and close positions (and TP and SL do not work no matter where the market will go after this).
The OptionIncludeClosedProfitsLosses input setting will be respected.
If the market price is in zone C and it sees the target (need input ZoneCprofitPercentBal) the ea will close all position together and restart with new centerline at the current market price.
ZoneCprofitPercentBal will allow a minus number for input. Eg. -2% in which case if the profit since last set restart sees -2%, all positions close and restart with new center line.
The Hedge:
[Please discuss with me the best way to use the hedge (type of hedge order) to keep trading losses minimal.]
Need options for hedge type: PlaceHedgeType. 0 = no hedge is used. 1 = hedge all positions together with one position. 2 = hedge each position individually.
Hedge setting = 0.
No hedge is used.
Hedge setting = 1.
If the EA does not have a chance to close all positions and restart and the market passes beyond zone C eg. 20 pips past the boundary of zone C, away from the centerline, (need input PassZoneCpipstoHedge then the EA places one position opposite hedge with lot size calculated big enough to lock the loss.
If the market will retrace e.g. 10 pips against the hedge position (need input PipsAgainstHedgeToRelease), the EA will release (close) the hedge position. If the market continues to retrace back to zone C it will be unhedged and will try to close all positions according to the rules. But if the market will go back PassZoneCpipstoHedge, then the hedge position will activate again. This will repeat continuously if the market ranges here. If OptionIncludeClosedProfitsLosses = true then the losses from the hedge releases will be taken into account for the target to be reached as well as any profits from closed positions. Note: If PipsAgainstHedgeToRelease = 0 then the hedge will release each time making the smallest loss possible according to the broker spread.
Hedge setting = 2.
Each position is hedged individually X pips away from each position. We need separate inputs for each zone. Need inputs ZoneAPipsIndividualHedge. ZoneBPipsIndividualHedge. ZoneCPipsIndividualHedge.
If for example ZoneAPipsIndividualHedge = 0 then there will be no hedge used on the positions in zone A. If for example ZoneBPipsIndividualHedge = 40, then there will be a hedge used on all the individual positions in zone B 40 pips away from each position (the hedge position(s) for zone B can be located outside zone B, in zone C depending on the settings).
When individual hedge setting is used (setting = 2) the input for PipsAgainstHedgeToRelease will work for each individual position hedge.
Provide True/False option: add lot to the existing positions if the market goes back to the position, to recoup losses incurred from releasing hedge on that position (input: AddLotToRecoupHedgeLoss.
Add True/False option to add lots after losses from the hedge release depending on whether we have overall closed profits. Need input: True/False AddLotsOnlyifProfits. If set to true only add lots if there are overall closed profits. Once closed profits are all used up (from hedge releases making losses) then the ea no longer adds to any lot. If profits are made, then it adds again. If set to false, adds lots regardless of closed profits. Remember, if we add to the position to recoup the losses and the hedge activates again, the hedge will need to be bigger in order to hedge the bigger position.
After e.g. 30 hedge releases on a position (we made some losses), we don’t want to recoup all of the losses from the hedge releases, because the lot can grow too big. So at this point (e.g 30 or more losses from releases) reduce what we add to the position if the market goes back to the position. Need inputs CountHedgeReleases and PercentDecreseAddLot. Eg if the original position = 1 lot, we made some losses from 30 (or more) hedge releases on that position. We need to add 0.5 lot to the 1 lot to recoup those losses but PercentDecreseAddLot = 50%, so instead of adding 0.5 lot we add only 0.25 lot. Each position’s hedge keeps track of its own losses separately. If this position gets to TP it will not recover all that it lost from the releases.
Provide True/False option to shift the hedge position. After X times releasing a hedge position (makes losses), shift the hedge Y pips further away from the position being hedged. Then after X more releases(losses) , shift the hedge position Y pips again further and keep repeating the shift after every X releases.. After releasing the hedge, as the market goes back toward the position, the hedge must be ready to reactivate at each price where it shifted to as long as HedgeShiftPips is the minimum distance from the market price to the place where the hedge will activate (we are trying to move the hedge back to its original price, obviously its a pending hedge position). If the hedge is not active, and if the market goes back to the position, the hedge must be ready to activate again on the hedge's original price, and the shift process repeats if X releases happens again. It's a continuous process. Need inputs: CountHedgeReleasesToShift e. g.= 5. And HedgeShiftPips e.g. = 20.
Provide option MaxHedgePipsClosePosition. If set e.g.= 100 and because the hedge was shifted one or more times so that the hedge is now 100 or more pips away from the hedged position, the ea closes both the hedge and the position, accepts the loss. If the market goes back to the position's price (where it was), open again the position at the original lot size that it was and be ready to hedge it at the original hedge price. The hedge release counts for that position are reset.
2nd and 3rd set (or more):
Assuming the EA is locked in a hedge (or not, depending on the settings) and the market has moved eg. 500 pips away from the center line (need input DistanceFromCenterStartSecondSet), then the EA will start a second set of orders which works exactly according to the same rules as the 1st set (a duplicate of the system). The position locations from the second set can overlap the position locations from the first set.
Need input True/False CloseFirstSetOnProfitSecondSet. When set to True, as the 2nd set starts to make profit from its closed positions, that profit will be used to close (or partial close if not enough to fully close) positions from the 1st set. It will close first those positions closest to the 1st set centerline and then close the next furthest position from the centerline and so on. If the market will go back to the zones of the 1st set, it will be easier to close all positions from the 1st set (hit the target according to the inputs) because the furthest losing positions of the 1st set are now closed. If the 1st set closes all its positions, the 2nd set continues and it becomes the 1st set. If DistanceFromCenterStartSecondSet again is met, a second set can again begin to operate.
Note: Each set keeps track of its own profits and losses from its own closed and/or floating positions.
Unlimited number of sets can operate at the same time. Once a set sees its target it closes all of its positions (but not the positions of other sets) and restarts with a new center line at the price where it closed its positions.
If CloseFirstSetOnProfitSecondSet is set to False, the 1st set must wait for the market to retrace to its zones in order to close all positions from the 1st set.
Info on the chart please show:
1. Active number of sets working. Floating and closed Profit/Loss for each set. Net lot working each set. DD each set. Max DD each set.
2. For the above numbers show totals for all sets combined.
3. Free margin. Minimum free margin.
4. Show current number of hedge releases.
5. Show total current sum of $ losses from hedge releases.
6. Show max number of hedge releases.
7. Show max sum of $ losses from hedge releases.
Show colored line with label “Zone B profit target”. (could be a loss target).
Show colored line with label “Zone C target” (could be a loss target).
Note: When 2nd set makes closed profits in zone A and those closed profits are used to close losing positions in the 1st set, the colored line with label for “zone c target” of the 1st set will move further away from the centerline of the 1st set as those positions are closed.
Thank you!