Dear all,
I am new to trading and am developing my first strategies in MQL5. Up to now, I am only testing different strategies in Strategy Tester. Whenever I open a position, I am essentially buying, I only "go long", because "going short" is still a bit nebulous in my mind.
Imagine I start with 10'000. I open a position (buy it) and use these functions to check the account status in a log file:
After that purchase I see the following lines in the log file:
Equity is balance plus profit, 10000 - 11.1 = 9988.9, all is fine and logical. The profit (-11.1) is due to spread cost, which I double check with last two lines of the code snippet above and third and fourth line in the log file. So far all is still clear.
However, when I close the position (sell it in my case), which I sold for mere 2.7 more than I bough it, I get the following output in my log file:
Although I earned 2.7, I also had to pay for keeping the position over one night. I checked it with a call to:
I am trying to be cautions / conservative in the assessment of my strategies, but I can't see how did spread costs dissapear from the MQL5's
Could anyone please shed light on that?
Cheers
I am new to trading and am developing my first strategies in MQL5. Up to now, I am only testing different strategies in Strategy Tester. Whenever I open a position, I am essentially buying, I only "go long", because "going short" is still a bit nebulous in my mind.
Imagine I start with 10'000. I open a position (buy it) and use these functions to check the account status in a log file:
MQL5:
FileWrite(LogFile, " - balance: ", AccountInfoDouble(ACCOUNT_BALANCE)); FileWrite(LogFile, " - equity: ", AccountInfoDouble(ACCOUNT_EQUITY)); FileWrite(LogFile, " - profit: ", AccountInfoDouble(ACCOUNT_PROFIT)); double spreadCost = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD) * _Point * Lots * CONTRACT_SIZE; FileWrite(LogFile, " - spread cost: ", NormalizeDouble(spreadCost, _Digits));
After that purchase I see the following lines in the log file:
Code:
- balance: 10000.0 - equity: 9988.9 - profit: -11.1 - spread cost: 11.1
Equity is balance plus profit, 10000 - 11.1 = 9988.9, all is fine and logical. The profit (-11.1) is due to spread cost, which I double check with last two lines of the code snippet above and third and fourth line in the log file. So far all is still clear.
However, when I close the position (sell it in my case), which I sold for mere 2.7 more than I bough it, I get the following output in my log file:
Code:
- balance: 9996.02 - equity: 9996.02 - profit: 0.0 - spread cost: 11.4
Although I earned 2.7, I also had to pay for keeping the position over one night. I checked it with a call to:
HistoryDealGetDouble(closeTicket, DEAL_SWAP);
and it amounts to 6.68. So, I started with 10000, earned 2.7, but spent 6.68 for deal swap, so balance is 10000 - 6.68 + 2.7 = 9996.02, but I don't see the spread costs ever accounted for? Where did all the spread costs go? I am trying to be cautions / conservative in the assessment of my strategies, but I can't see how did spread costs dissapear from the MQL5's
AccountInfoDouble
functions?Could anyone please shed light on that?
Cheers