Работа завершена
Техническое задание
UPDATE: I also want the EA to generate a csv file containing all trade data when the EA completes a backtest in strategy tester:
Instrument, Chart Timeframe, Trade day and time (timestamp), Day of week (mon,tues,etc), Hour of day(0-23), Trade direction (call or put/long or short), trade expiry in minutes, trade result (win or loss)
The overall goal is to develop a backtester for external binary options indicators that give output buffers (arrows) for signals that will reveal the most profitable expiration times and what hours are best to trade.
I want you to deliver the source code and I retain rights to the code.
I want to discover for example on a 5min chart whether 1 minute, 2 minute or 8 minute, etc expiration time is most profitable. I also want to see what hours of the day are best to trade and what days of the week are best to trade. And which trade direciton is best to trade. I have attached a picture of the statistics I want to be displayed on the chart as the backtest is running. I have also attached a sample indicator to use for testing called DRAGON VX.EX4
I attempted to write the code and I have attached my attempt. The file is called botester-22-trades.mq4 however in my code I didn't begin to track days and hour of day.
I also welcome any ideas you have to make it even better. Another option I'd like is the ability to switch between binary option mode which means you just track the midpoint between bid and ask for entry and exit and forex mode which means the EA actual enters long and short trades and closes them after the passing of the Close_Trade_Timer time so we can see how profitable it would be to run this as a forex trading strategy. In Forex mode you don't need to track all the statistics but please do include options to disable trade at certain day of week or certain hours so strategy tester can find best combination.
Here are the settings changeable by user (with default settings):
Trade Entry Mode: Intra Bar (as soon as signal appears) or Next New Bar After Signal Appears
Binary Option Mode or Forex: Binary
Output_Buffer_for_Buy_Entry: (integer) 1
Output_Buffer_for_Sell_Entry: (integer) 0
Indicator_Name: Default = "DRAGON VX"
The following settings are for the user specifying how many minutes after trade entry to close the trade. Each one is an integer?
Close_Trade_Timer_1: 4
Close_Trade_Timer_2: 6
Close_Trade_Timer_3: 8
Close_Trade_Timer_4: 10
Close_Trade_Timer_5: 12
Close_Trade_Timer_6: 14
Close_Trade_Timer_7: 15
Close_Trade_Timer_8: 17
Close_Trade_Timer_9: 19
Close_Trade_Timer_10: 20
Close_Trade_Timer_11: 25
Close_Trade_Timer_12: 30
Close_Trade_Timer_13: 35
Close_Trade_Timer_14: 40
Close_Trade_Timer_15: 45
Close_Trade_Timer_16: 50
Close_Trade_Timer_17: 55
Close_Trade_Timer_18: 60
Close_Trade_Timer_19: 70
Close_Trade_Timer_20: 80
Close_Trade_Timer_21: 90
Close_Trade_Timer_22: 120
Following settings are only for forex mode:
Disable trading on Monday: true or false
Disable trading on Tuesday: true or false
etc till Friday
Disable trading on hour 1: true or false
Disable trading on hour 2: true or false
continue until 24 hrs
------------
Now I will define a trade entry: use icustom function with ouput buffer defined Output_Buffer_for_Buy_Entry and indicator name defined by variable Indicator_Name and timeframe defined as current chart timeframe to indicate a buy entry but instead of executing an actual trade I just want to store the midpoint between bid and ask as the entry price. There must only be one buy or sell entry per candle! Only record the very first output buffer change that occurs during an entire candle's formation. Only when the candle has closed can another buy or sell entry be considered.
Here is example of icustom for buy entry:
double buffer1 = iCustom(_Symbol, _Period, "DRAGON VX", 0, Output_Buffer_for_Buy_Entry);
Here is example of icustom for sell entry:
double buffer0 = iCustom(_Symbol, _Period, "DRAGON VX", 0, Output_Buffer_for_Sell_Entry);
Now I define trade exit: the trade exits at multiple points but all 22 trades will have the exact same entry price in fact it exits as many times as there are Close_Trade_Timer variables (currently 22). The trade exits after the specified Close_Trade_Timer time in minutes has passed since the trade entry. I want statistics tracked completely separately for each 22 trade close times.
A trade is considered a win if it was a buy entry and the exit price (midpoint between bid and ask) is higher than the entry and vice versa for the sell entry trades.
Please track and print to the screen the following:
Close_Trade_Timer_1
Wins: (print winning trades)
Losses: (print how many trades lost)
Win Rate: (print as a percentage the total of wins/total trades taken)
Close_Trade_Timer_2
Wins: (print winning trades)
Losses: (print how many trades lost)
Win Rate: (print as a percentage the total of wins/total trades taken)
Close_Trade_Timer_3
Wins: (print winning trades)
Losses: (print how many trades lost)
Win Rate: (print as a percentage the total of wins/total trades taken)
Please repeat this for all 22 Close_Trade_Timer variables.