设为首页 收藏本站 切换语言
| 发表于 2023-2-12 17:51:26 | 显示全部楼层 |复制链接

MQL4关键函数学习

一 如何抓取价格数据
1 如何获得本货币对的买价、卖价
double ask = Ask; // Ask是关键字,表示本货币对买价;
double bid = Bid; // Bid是关键字,表示本货币对卖价;

2 如何获得任意货币对的买价、卖价
double MarketInfo(string symbol, int type);
MarketInfo("EURUSD", MODE_ASK); // 获得欧元的买价
MarketInfo("EURUSD", MODE_BID); // 获得欧元的卖价

3 如何获得本货币对,本时间周期,任意K线的开盘价、收盘价、最高价、最低价
double Open[]; // 开盘价
double Close[]; // 收盘价
double High[]; // 最高价
double Low[]; // 最低价
// 序号从最后一根K线开始按照0、1、2编号。

4 如何获取任意货币对,任意时间周期,任意K线的开盘价、收盘价、最高价、最低价
double iOpen(string symbol, int timeframe, int shift)
double iClose(string symbol, int timeframe, int shift)
double iHigh(string symbol, int timeframe, int shift)
double iLow(string symbol, int timeframe, int shift)
// symbol,货币对名称;
// timeframe,时间周期;
// shift,K线序号;

二 如何调用指标数据
1 调用MT4自带指标
直接调用函数字典“Technical indicators”里面系统自带的指标函数即可。
比如均线:double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift) 计算移动平均指标并返回它的值。
参数:
symbol   -   计算指标数据上的货币对名称。NULL表示当前货币对。
timeframe   -   时间周期。可以时间周期列举任意值。0表示当前图表的时间周期。
period   -   平均周期计算。
ma_shift   -   MA转移。指标线垂直与图表的时间周期。
ma_method   -   MA方法。它可以是其中任意 滑动平均值列举值。
applied_price   -   应用的价格。它可以是应用价格列举的任意值。
shift   -   K线索引序列(最后一根为0)。

KD指标:iStochastic;
布林指标:iBands;
MACD指标:iMacd;

2 调用自定义指标或者第三方指标
保证自定义指标*.ex4已经放入安装目录expertsindicators目录。
double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift) 计算指定的客户指标并且退回它的值。
参数:
symbol   -   计算指标数据上的货币对名称。NULL表示当前货币对。
timeframe   -   时间周期。 可以时间周期列举任意值. 0表示当前图表的时间周期。
name   -   客户指标完成程序名称。
...   -   参量设置(如果需要)。通过的参量和他们的顺序必须与desclaration命令和客户指标的外部可变物的种类对应。
mode   -   索引行。 从0到7并且必须对应以其中一个使用的索引的 SetIndexBuffer 函数。打开数据窗口可以看到画线的列表,从0开始。
shift   -   K线索引序列(最后一根为0)。

三 如何调用下单、操作订单函数
1 如何下市价单及挂单
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, void comment, void magic, void

expiration, void arrow_color)
参数:
symbol   -   交易货币对。
cmd   -   下单类型。
volume   -   下单手数。
price   -   开仓价格。
slippage   -   最大允许滑点数。
stoploss   -   止损价格。
takeprofit   -   止盈价格。
comment   -   订单注释。
magic   -   订单指定码。可以作为用户指定识别码使用。
expiration   -   订单有效时间(只限挂单)(不指定时间输入0)。
arrow_color   -   图表上箭头颜色。

下单类型:
OP_BUY 0 买仓
OP_SELL 1 卖仓
OP_BUYLIMIT 2 买挂单交易 (低价买入,常规的。)
OP_SELLLIMIT 3 卖挂单交易 (高价卖出,常规的。)
OP_BUYSTOP 4 买停挂单交易(高价买入)
OP_SELLSTOP 5 卖停挂单交易 (低价卖出)

示例:
// 市价买入
int ticket;
ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "my_buy", 1001, 0, Red);
if(ticket < 0) {
    Print("OrderSend 失败错误 #", GetLastError());
    return(0);
}
// 市价卖出
int ticket;
ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "my_sell", 1001, 0, Green);
if(ticket < 0) {
    Print("OrderSend 失败错误 #", GetLastError());
    return(0);
}

2 如何调用订单函数
bool OrderSelect(int index, int select, void pool) 函数选择定单。如果函数成功,返回的值为TRUE。如果函数失败,返回的值为FALSE。
参数:
index   -   定单索引(订单序列或订单编号)。
select   -   选定模式。可以为以下的任意值: SELECT_BY_POS(按照序列)、SELECT_BY_TICKET(按照订单编号)。
pool   -   可选择定单索引。当选择SELECT_BY_POS参量时使用。可以为以下的任意值: MODE_TRADES (default)- 来自交易的定单(开单和挂单),MODE_HISTORY - 来自历史的定

单(平仓和取消定单)。

3 如何修改市价单和挂单的止损、止盈,以及如何修改挂单的价格
bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, void arrow_color) 对于先前的开仓或挂单进行特性修改。如果

函数成功,返回的值为 TRUE。如果函数失败,返回的值为FALSE。
参数:
ticket   -   定单编号。
price   -   新的挂单价格,不想修改就输入原先的价格。
stoploss   -   新止损价格,不想修改就输入原先的价格。
takeprofit   -   新盈利价格,不想修改就输入原先的价格。
expiration   -   新挂单有效时间。
arrow_color   -   图表中标价挂单箭头的颜色。

4 如何市价平仓
bool OrderClose( int ticket, double lots, double price, int slippage, void Color) 对定单进行平仓操作。如果函数成功,返回的值是真实的。如果函数失败,返回的值

是假的。
参数:
ticket   -   订单编号。
lots   -   平仓的手数。
price   -   平仓的价格。
slippage   -   最大允许滑点数。
Color   -   图表中平仓箭头的标记颜色。

注意:OrdersTotal()函数获取的是所有的订单包括不同品种跟未成交的挂单统统包括在内;
// 全部平仓
int cnt, total;
total = OrdersTotal();
for(cnt=total-1; cnt>=0; cnt--) {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType()==OP_SELL) {
        OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
    }
    if(OrderType()==OP_BUY) {
        OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
    }
}

5 如何删除挂单
bool OrderDelete(int ticket, void Color) 删除先前打开挂单。成功返回true,失败返回false。

// 删除所有挂单
int total = OrdersTotal();
for(int i=total-1; i>=0; i--) {
    OrderSelect(i, SELECT_BY_POS);
    int type   = OrderType();
    bool result = false;
    switch(type) {
      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
   
    if(result == false) {
      Print("Order " + OrderTicket() + " failed to close. Error:" + GetLastError());
    }
}

如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论8

無爲编程破译
B
 楼主 | 发表于 2023-2-13 09:53:35 | 显示全部楼层
shao686868 发表于 2023-2-12 19:24
学习一下基础知识

MQL4是一种用于构建自动交易系统的编程语言,由MetaQuotes软件公司开发。它是一种用于编写自动交易系统的编程语言,可以在MetaTrader 4交易平台上使用。

MQL4基础知识包括:

1. MetaTrader 4平台:MetaTrader 4是一个用于在外汇市场进行交易的交易平台,它支持MQL4编程语言,可以用来编写自动交易系统。

2. MQL4语言:MQL4是一种用于编写自动交易系统的编程语言,它支持算法交易、客户端指令执行和网络交易等功能。

3. MQL4语法:MQL4语法是MQL4编程语言的语法规则,它提供了一系列指令,可以用来编写自动交易系统。

4. 函数库:MQL4函数库提供了一系列可以用于编写自动交易系统的函数,它们可以帮助开发者简化编程任务。

5. 技术指标:MQL4技术指标是一种用于分析市场行情的工具,它可以帮助开发者判断市场的走势。
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2023-2-15 14:56:10 | 显示全部楼层
橙子冰 发表于 2023-2-15 14:27
很想学习  但又无从下手

MQL4是一种用于构建自动交易系统的编程语言,可以用来创建自动交易程序,以及自动执行交易策略。

如果你想学习MQL4,首先需要了解MetaTrader 4平台,因为MQL4是专门为MetaTrader 4平台设计的。另外,你还需要学习一门编程语言,比如C++或JavaScript,以便更好地理解MQL4语言。

学习MQL4最好的方法是从官方文档开始,可以在MetaQuotes官网上找到MQL4开发文档。它提供了关于MQL4的语法,函数,类型和变量的详细说明,以及一些示例代码。

此外,也可以通过参加在线课程,阅读MQL4教程等方式学习MQL4。有许多网站提供MQL4学习资源,你可以根据自己的需要选择合适的学习材料。
举报

点赞 评论 使用道具

MT4MT5
DD
| 发表于 2023-2-12 18:03:58 | 显示全部楼层
没基础看不懂,谢谢分享
举报

点赞 评论 使用道具

shao686868
DDD
| 发表于 2023-2-12 19:24:46 | 显示全部楼层
学习一下基础知识
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2023-2-13 09:50:58 | 显示全部楼层
MT4MT5 发表于 2023-2-12 18:03
没基础看不懂,谢谢分享

如果你没有基础,建议你先去学习一些基础的知识,比如HTML、CSS、JavaScript等知识,学习这些知识可以帮助你更好的理解这些技术的原理,从而更好的学习这些技术。        
举报

点赞 评论 使用道具

橙子冰
D
| 发表于 2023-2-15 14:27:31 | 显示全部楼层
很想学习  但又无从下手
举报

点赞 评论 使用道具

fibo
D
| 发表于 2023-5-5 12:50:24 | 显示全部楼层
谢谢 刚好用到  支持一下
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2023-5-5 14:47:57 | 显示全部楼层
fibo 发表于 2023-5-5 12:50
谢谢 刚好用到  支持一下

谢谢惠顾
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

無爲编程破译

無爲编程破译 B

EA编程 破解 指标 破源 反编译 定制开发 资源分享 众筹_脚本_辅助_源码_易语言_黑科技_技术传授_VPS资管代

天眼云VPS
简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)