欢迎光临
我们一直在努力

11.2交易请求和响应结构体

MqlTradeRequest

订单发送请求体,向交易服务器发送订单操作数据信息

属性说明数据类型
action请求操作订单的类型(新增,修改,更新,删除,平仓,反向平仓 操作模式)ENUM_TRADE_REQUEST_ACTIONS
magic订单识别号(相当于一个或者一组订单的识别号)ulong
order对已经存在的订单进行操作时需要填写ulong
symbol新增订单时,需要指定交易品种string
volume新增订单时是下单的手数,对存在订单时可以部分平仓或者删除double
price下单时的设置交易价格,挂单操作时可以修改交易价格double
stoplimit挂单操作时设置的止损价格double
sl下单时设置的止损价格, 也可以修改订单或修改挂单时修改double
tp下单时设置的止盈价格,也可以修改订单或修改挂单时修改double
deviation可承受订单成交价格和市场价存在的偏差值ulong
type下单和挂单方向模式,包含: 做多单, 做空单, 挂抄底单, 挂突破单模式ENUM_ORDER_TYPE
type_filling下单和挂单执行成交模式ENUM_ORDER_TYPE_FILLING
type_time挂单时日期时间模式,比如: 挂单永久存在,隔日删除,指定多少天删除ENUM_ORDER_TYPE_TIME
expiration挂单到期时间datetime
comment订单注释string
position操作已经存在的订单ID号ulong
position_by反向持仓的订单ID号ulong

MqlTradeResult

订单回执响应体,交易服务器响应操作后返回回执订单数据信息

属性说明数据类型
retcoderesponse code 交易服务器返回状态码uint
deal交易订单号(如果下单成功)ulong
order挂单订单号(如果挂单成功)ulong
volume订单手数double
price订单开仓价格double
bid交易服务器当前做空的价格double
ask交易服务器当前做多价格double
comment订单注释string
request_id通过程序端设置Request IDuint
retcode_external返回外部交易系统代码uint
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

// 1. 创建交易品种信息结构体
struct SymbolInfo
{
  double ask; // buy方向报价
  double bid; // sell方向报价
  double point; // 最小报价单位
  int digits; // 小数点的位数
  int spread; // 点差
  ENUM_ORDER_TYPE_FILLING filling_mode; // 订单模式
  int stops_level; // 止损价和报价之间最小的间距点数
};

void OnStart()
  {
     string sym = _Symbol;
     SymbolInfo sym_info;
     // 创建交易请求体和响应体
     MqlTradeRequest request;
     ZeroMemory(request);
     MqlTradeResult result;
     ZeroMemory(result);
     // 判断货币是否存在,存在即获取信息
     bool is_exits = getSymbolInfo(sym, sym_info);
     if(is_exits)
     {
        /*
        执行
        交易品种
        交易量
        价格
        止损水平
        盈利水平
        误差
        类型
        _filling类型

        */
        // 请求设置相关属性
        request.action = TRADE_ACTION_DEAL; // 交易模式
        request.type = ORDER_TYPE_BUY; // 下单方向
        request.type_filling = sym_info.filling_mode; //订单模式
        // 订单设置相关属性
        request.symbol = sym;
        request.comment = "这是Buy单";
        request.magic = 8199231;
        // 价格相关属性
        request.volume = 0.1; // 下单手数
        request.price = sym_info.ask; // 下单价格
        request.sl = 0.0; // 止损
        request.tp = 0.0; // 止盈
        request.deviation = 0; // 允许滑点范围
        
        
        if(OrderSend(request, result))
        {
          printf("状态码:%d, 订单号: %d, 开仓价: %.5f, 下单手数: %.2f, 交易返回注释: %s"
                 ,
                 result.retcode,
                 result.deal,
                 result.price,
                 result.volume,
                 result.comment
               );
        }
        else
        {
          printf("发送交易请求失败,错误代码: %d",GetLastError());  
        }

     }
     else
     {
      printf("交易品种: %s, 不存在!", sym);
     }
  }

// 2. 获取指定交易品种的信息
bool getSymbolInfo(const string symbol, SymbolInfo & symbol_info)
{
  bool is_exsit = SymbolSelect(symbol,true);
  if(is_exsit)
  {
    symbol_info.ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
    symbol_info.bid = SymbolInfoDouble(symbol, SYMBOL_BID);
    symbol_info.point = SymbolInfoDouble(symbol, SYMBOL_POINT);
    symbol_info.digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
    symbol_info.spread = (int)SymbolInfoInteger(symbol, SYMBOL_SPREAD);
    symbol_info.filling_mode = 
      (ENUM_ORDER_TYPE_FILLING)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);
    symbol_info.stops_level = (int)SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL);  
    
  }
  
  return is_exsit;
}
 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:瓜皮猫量化编程 » 11.2交易请求和响应结构体
分享到: 生成海报

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

瓜皮猫量化交易编程

QQ群: 492653640微信: guapitcom
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活