第一个下单程序
1. 交易权限
按照下图勾选上
* 允许自动交易(第一个选项)
2. 交易函数
int OrderSend(
string symbol, // 货币对
int cmd, // 交易指令
double volume, // 交易手数
double price, // 交易价格
int slippage, // 滑点
double stoploss, // 止损价
double takeprofit, // 止盈价
string comment=NULL, // 交易备注
int magic=0, // 魔法数字
datetime expiration=0, // 挂单有效期
color arrow_color=clrNONE // 颜色
);
3. 一个交易程序的例子
void OnStart()
{
//---
// 获取市场中约定的最小的止损/止盈价格与买卖现价的点数
double minstoplevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
Print("Minimum Stop Level=", minstoplevel, " points");
// 获取当前卖价
double price = Ask;
// 设置止损价为当前买入价减去最小StopLevel
double stopLoss = NormalizeDouble(Bid - minstoplevel * Point, Digits);
// 设置止盈价为当前卖出价减去最小StopLevel
double takeProfit = NormalizeDouble(Bid + minstoplevel * Point, Digits);
// symbol 按当前货币对下单 - Symbol()
// cmd 交易指令为买入 - 市价买入 OP_BUY
// volume 交易手数 - 1个标准手
// price 交易金额 - 当前卖价 Ask
// slippage 交易滑点 - 允许滑点3个点
// stopLoss 止损价
// takeProfit 止盈价
// comment 备注
// magicNumber 魔法数字
// expiration 挂单有效期 - 0 市价买入忽略有效期
// color 颜色 - 在图表窗口中显示
int ticket = OrderSend(Symbol(), OP_BUY, 1, price, 3, stopLoss, takeProfit, "My order", 16384, 0, clrGreen);
// 下单失败,ticket = -1, 通过 GetLastError() 获取更多错误信息
if (ticket < 0)
{
Print("OrderSend failed with error #", GetLastError());
}
// 下单成功 ticket >= 0,等于0是什么情况 ?
else
{
Print("OrderSend placed successfully");
}
}
//+------------------------------------------------------------------+
4. 运行
将上面的逻辑放到MyFirstScript.mq4中,拖到EUR/USD窗口运行
第一笔交易:订单号 39729030
当前卖价 1.24246
当前买价 1.24263
Script 加载运行OnStart时下单
已当前卖价 1.2423 市价买入 1 手,止损价 1.24236,止盈价 1.24256
结果:
交易止盈平仓,平仓价 1.24259,实际利率亏损 4刀(为啥?)