4.6 交易函数
第 25 节 / 共 36 节
课程:Mt4编程语言
交易函数是EA的核心。
OrderSend开仓
int ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,sl,tp,"MyEA",8888,0,clrGreen);完整示例
input double Lots=0.1;input int SL=50,TP=100,Magic=8888;int OpenBuy(){ double sl=NormalizeDouble(Bid-SL*Point,Digits); double tp=NormalizeDouble(Bid+TP*Point,Digits); ResetLastError(); int t=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,sl,tp,"EA",Magic,0,clrBlue); if(t > 0) Print("开多成功 #",t); else Print("开多失败",GetLastError()); return t;}OrderClose平仓
void CloseAll(){ for(int i=OrdersTotal()-1;i >= 0;i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)&& OrderSymbol()==Symbol()){ double p=(OrderType()==OP_BUY)? Bid:Ask; OrderClose(OrderTicket(),OrderLots(),p,3,clrWhite); } }}OrderModify修改订单
void TrailingStop(){ for(int i=OrdersTotal()-1;i >= 0;i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)&& OrderType()==OP_BUY){ if(Bid-OrderOpenPrice() > 30*Point){ double ns=NormalizeDouble(Bid-20*Point,Digits); if(ns > OrderStopLoss()) OrderModify(OrderTicket(),OrderOpenPrice(),ns,OrderTakeProfit(),0,clrYellow); } } }}订单查询
| 函数 | 说明 |
|---|---|
| OrdersTotal() | 持仓总数 |
| OrderTicket() | 订单号 |
| OrderSymbol() | 品种 |
| OrderType() | 类型 |
| OrderLots() | 手数 |
| OrderOpenPrice() | 开仓价 |
| OrderStopLoss() | 止损 |
| OrderTakeProfit() | 止盈 |
| OrderProfit() | 盈亏 |
| OrderMagicNumber() | 幻数 |
《Mt4编程语言》课程目录
介绍MetaTrader4编程语言MQL4的基本语法
- 第1章 基本语法
- 1.1 第一个EA
- 1.2 如何学习
- 1.3 变量
- 1.4 语句
- 1.5 运算符
- 1.6 常量与枚举
- 第2章 条件
- 2.1 if语句
- 2.2 关系运算符
- 2.3 逻辑运算符
- 2.4 复合条件
- 2.5 switch语句
- 第3章 循环
- 3.1 for循环
- 3.2 while循环
- 3.3 break和continue
- 3.4 嵌套循环
- 第4章 函数
- 4.1 函数的定义
- 4.2 参数和返回值
- 4.3 变量的作用域
- 4.4 常用内置函数
- 4.5 日期和时间函数
- 4.6 交易函数
- 4.7 账户和市场信息函数
- 4.8 图表和对象函数
- 4.9 文件操作函数
- 4.10 数组函数
- 4.11 技术指标函数
- 第5章 如何写EA
- 5.1 EA的基本结构
- 5.2 常用内置变量
- 5.3 下单函数
- 5.4 技术指标
- 5.5 实战:均线交叉EA