-
Notifications
You must be signed in to change notification settings - Fork 0
/
small_expert.mq5
56 lines (47 loc) · 2.04 KB
/
small_expert.mq5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2020, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
double myaccountBALANCE = AccountInfoDouble(ACCOUNT_BALANCE);
double myaccountPROFIT = AccountInfoDouble(ACCOUNT_PROFIT);
double myaccountEQUITY = AccountInfoDouble(ACCOUNT_EQUITY);
Comment("account balance=> ", myaccountBALANCE, "\n", "account profit=> ", myaccountPROFIT, "\n",
"account equity=> ", myaccountEQUITY, "\n", "Leverage=>", AccountInfoInteger(ACCOUNT_LEVERAGE));
// whole below lines are needed to handel a single BUY ORDER.
MqlTradeRequest myrequest;
MqlTradeResult myresult;
ZeroMemory(myrequest);
myrequest.action = TRADE_ACTION_DEAL;
myrequest.type = ORDER_TYPE_BUY;
myrequest.tp = 0;
myrequest.deviation = 50;
myrequest.symbol = _Symbol;
myrequest.volume = 0.1;
myrequest.type_filling = ORDER_FILLING_FOK;
myrequest.price = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
if (!PositionSelect(_Symbol)) { // check if no position is opened.
OrderSend(myrequest,myresult);
}
if ((myaccountEQUITY - myaccountBALANCE) > 2 ) {
CloseAllOrders ();
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAllOrders ()
{
CTrade trade;
int i = PositionsTotal()-1;
while (i>=0) {
if (trade.PositionClose(PositionGetSymbol(i))) i--;
}
}
//+------------------------------------------------------------------+