MT5基础知识
获取账户相关信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
printf ( "ACCOUNT_BALANCE = %G" ,AccountInfoDouble(ACCOUNT_BALANCE));
printf ( "ACCOUNT_CREDIT = %G" ,AccountInfoDouble(ACCOUNT_CREDIT));
printf ( "ACCOUNT_PROFIT = %G" ,AccountInfoDouble(ACCOUNT_PROFIT));
printf ( "ACCOUNT_EQUITY = %G" ,AccountInfoDouble(ACCOUNT_EQUITY));
printf ( "ACCOUNT_MARGIN = %G" ,AccountInfoDouble(ACCOUNT_MARGIN));
printf ( "ACCOUNT_FREEMARGIN = %G" ,AccountInfoDouble(ACCOUNT_FREEMARGIN));
printf ( "ACCOUNT_MARGIN_LEVEL = %G" ,AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));
printf ( "ACCOUNT_MARGIN_SO_CALL = %G" ,AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL));
printf ( "ACCOUNT_MARGIN_SO_SO = %G" ,AccountInfoDouble(ACCOUNT_MARGIN_SO_SO));
printf ( "ACCOUNT_LOGIN = %d" ,AccountInfoInteger(ACCOUNT_LOGIN));
printf ( "ACCOUNT_LEVERAGE = %d" ,AccountInfoInteger(ACCOUNT_LEVERAGE));
bool thisAccountTradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_ALLOWED);
bool EATradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_EXPERT);
ENUM_ACCOUNT_TRADE_MODE tradeMode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
Print( "The name of the broker = " ,AccountInfoString(ACCOUNT_COMPANY));
Print( "Deposit currency = " ,AccountInfoString(ACCOUNT_CURRENCY));
Print( "Client name = " ,AccountInfoString(ACCOUNT_NAME));
Print( "The name of the trade server = " ,AccountInfoString(ACCOUNT_SERVER));
|
Bar 向前 的值 可以通过 Copytime 什么的 进行 操作
获取 iMA的 值
1
2
3
|
double aaa[];
int handle = iMA(Symbol(),PERIOD_H1,60,0,MODE_SMA,PRICE_CLOSE);
CopyBuffer(handle,0,0,2,aaa);
|
开仓
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
if (!PositionSelect(_Symbol))
{
MqlTradeRequest request={0};
request.action=TRADE_ACTION_DEAL; // 设置挂单
request.magic=1000; // ORDER_MAGIC
request.symbol=_Symbol; // 交易品种
request.volume=0.1; // 0.1为单位的交易量
request.sl=1.09; // 没有指定止损价位
request.tp=1.1; // 没有指定盈利价位
//--- 形成订单类型
request.type=ORDER_TYPE_BUY; // 订单类型
//--- 形成挂单价格
request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK); // 开盘价
Print(SYMBOL_ASK);
//--- 发送交易请求
MqlTradeResult result={0};
OrderSend(request,result);
Print(__FUNCTION__, ": " ,result.comment, " reply code " ,result.retcode);
}
|
修改止损止盈
1
2
3
4
5
6
7
8
9
10
11
12
|
if (PositionSelect(_Symbol))
{
MqlTradeRequest request={0};
request.action=TRADE_ACTION_SLTP; // 设置挂单
request.sl=1.08; // 没有指定止损价位
request.tp=1.11; // 没有指定盈利价位
request.symbol = _Symbol ;
MqlTradeResult result={0};
OrderSend(request,result);
Print(__FUNCTION__, ": " ,result.comment, " reply code " ,result.retcode);
}
|
平仓
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
if (PositionSelect(_Symbol))
{
MqlTradeRequest request={0};
request.action=TRADE_ACTION_DEAL; // 设置挂单
request.type =ORDER_TYPE_SELL;
request.volume =PositionGetDouble(POSITION_VOLUME);
request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
request.symbol = _Symbol ;
MqlTradeResult result={0};
OrderSend(request,result);
Print(__FUNCTION__, ": " ,result.comment, " reply code " ,result.retcode);
}
|
挂单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
if (!PositionSelect(_Symbol))
{
MqlTradeRequest request={0};
request.action=TRADE_ACTION_PENDING; // 设置挂单
request.type =ORDER_TYPE_BUY_LIMIT;
request.volume =0.1;
request.price=1.09;
request.sl = 1.08;
request.tp = 1.1;
request.symbol = _Symbol ;
MqlTradeResult result={0};
OrderSend(request,result);
Print(__FUNCTION__, ": " ,result.comment, " reply code " ,result.retcode);
}
|
修改挂单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
for ( int i=0;i<OrdersTotal();i++)
{
long tic = OrderGetTicket(i);
MqlTradeRequest request={0};
request.action=TRADE_ACTION_MODIFY; // 设置挂单
request.order = tic ;
request.price=1.091;
//止损 必须加 ,如果不加 则给你全部归零
request.sl = 1.081;
request.tp = 1.11;
MqlTradeResult result={0};
OrderSend(request,result);
Print(__FUNCTION__, ": " ,result.comment, " reply code " ,result.retcode);
}
|
移除挂单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
for ( int i=0;i<OrdersTotal();i++)
{
long tic = OrderGetTicket(i);
MqlTradeRequest request={0};
request.action=TRADE_ACTION_REMOVE; // 设置挂单
request.order = tic ;
request.price=1.091;
//止损 必须加 ,如果不加 则给你全部归零
request.sl = 1.081;
request.tp = 1.11;
MqlTradeResult result={0};
OrderSend(request,result);
Print(__FUNCTION__, ": " ,result.comment, " reply code " ,result.retcode);
}
|