欢迎光临
我们一直在努力

11.3 封装下单函数

为了程序的安全性,优先选择const关键字修饰形参的权限范围

形参过多时,需要经常改动的形参靠左,其他靠右

封装方法:

  1. MQL5/Incude目录下创建一个结尾.mqh文件,比如 SymbolInfo.mqh
  2. 将封装好的函数放到文件中,调用方法: #include <SymbolInfo.mqh>如果有子目录: #include <tools/SymbolInfo.mqh>

封装方法

Guapit/Symbols.mqh

//+------------------------------------------------------------------+
//|       交易品种信息函数库                                           |
//+------------------------------------------------------------------+

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

// 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); 
    symbol_info.tp = (int)SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL);
    symbol_info.min_volume = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);

  }
  return is_exsit;
}
 收藏 (0) 打赏

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

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:瓜皮猫量化编程 » 11.3 封装下单函数
分享到: 生成海报

评论 抢沙发

瓜皮猫量化交易编程

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

登录

忘记密码 ?

切换登录

注册

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