系统交易

MetaTrader 5交易自动化:MQL5编程实用指南第六部分
MetaTrader5
MetaTrader 5交易自动化:MQL5编程实用指南第六部分

第六部分:交易自动化 在“交易自动化第六部分”中,我们将深入学习MQL5语言的一个关键组成部分。首先,我们会介绍一些基本的概念,比如金融工具的规格和交易账户的设置。这些都是创建正常运作的交易机器人(即EA)的必要前提。接着,我们将探讨内置函数和数据结构,以及机器人特定的事件,还有EA在策略测试器中操作的关键方面。MetaTrader 5的策略测试器是开发交易机器人时不可或缺的工具,因为它能够帮助你评估金融业绩和优化交易策略。 这个测试器提供了多种模式下调试的必备工具,包括使用K线或逐笔交易的可视化测试,支持模拟或真实的逐笔数据。它还能直观地重现报价流,并进行简单的无可视化窗口测试。我们之前已经看到如何在可视化模式下测试指标,但对于指标,允许的设置选项是有限的。而在开发EA时,我们将能够使用测试器的完整功能。 此外,我们还将探索市场数据的另一种表示方式:市场深度及其软件接口。 MetaTrader 5提供了分析和交易金融工具(符号)的能力,这些符号构成了终端所有子系统的基础。用户可以从经纪商提供的列表中选择符号,并在市场观察中监控它们。通过MQL5 API,你可以查看和分析所有符号的特性,也可以将它们添加或移除市场观察列表。 除了经纪商提供的标准符号之外,MetaTrader 5还支持创建自定义符号,从任意数据源加载它们的属性和报价历史,或使用公式和MQL5程序进行计算。

2023.12.16
MQL5编程指南:为交易者打造完美的交易系统(第5部分)
MetaTrader5
MQL5编程指南:为交易者打造完美的交易系统(第5部分)

第5部分:在MQL5中创建应用程序 在《MQL5编程指南:为交易者打造完美的交易系统》第5部分中,我们将深入探讨与算法交易相关的API,包括金融数据分析、处理、图表可视化、自动化及用户交互等内容。 我们将从创建MQL程序的一般原则开始,考虑终端中的事件类型、特性和模型。接着,我们将学习如何访问时间序列、操作图表和图形对象,以及逐个程序类型的创建和应用原则。 MetaTrader 5终端支持五种类型的程序:技术指标、用于自动或半自动交易的智能交易系统(EA)、执行一次性任务的脚本、后台操作的服务以及各个功能模块的库。 我们将深入学习如何与指标和图表进行交互,并掌握这些技术在智能交易系统中的应用。智能交易系统的开发将在本书的下一部分中详细探讨,我们将研究订单的自动执行、交易策略的规范化,以及如何使用历史数据进行测试和优化。 我们还将学习如何使用标准内置指标,以及如何从零开始创建自定义应用程序或基于其他指标进行开发。所有编译后的程序都将在MetaTrader 5的导航器中显示,除了EX5库,这些库被其他程序使用,但在导航器中没有单独的表示。 通过本节的学习,我们将更全面地理解MQL5语言的能力及其在算法交易中的应用。这将使我们能够有效地处理金融数据,创建交易指标和智能交易系统。

2023.12.16
MQL5 编程:掌握 MetaTrader 5 的常用 API
MetaTrader5
MQL5 编程:掌握 MetaTrader 5 的常用 API

第四部分:常用的 MQL5 API 在本书的前几部分中,我们深入探讨了 MQL5 编程语言的基础知识,学习了它的语法、使用规则和关键概念。但是,如果你想编写实际的程序来进行数据处理和自动交易,就必须利用众多内置函数与 MetaTrader 5 终端进行交互。 在 "第四部分:常用 MQL5 API" 中,我们将重点掌握内置函数(MQL5 API),逐步深入到专门的子系统。任何 MQL5 程序都可以利用丰富的技术和功能。因此,我们将从最简单和最实用的函数开始,这些函数可以在大多数程序中使用。 我们将学习的主要主题包括数组操作、字符串处理、文件交互、数据转换以及用户交互函数。同时,我们还将探讨数学函数和程序环境管理。 与其他一些编程语言不同,使用 MQL5 API 的内置函数无需额外的预处理指令。所有 MQL5 API 函数的名称都可以在全局上下文(命名空间)中访问,始终可以无条件调用。 我们还将讨论在不同程序上下文中使用相似名称的可能性,例如类方法名或自定义命名空间。在这种情况下,你需要使用上下文解析运算符来调用全局函数,这在我们讨论嵌套类型、命名空间和上下文运算符 '::' 的部分中有所提及。 编程通常需要对各种数据类型进行操作。在之前的部分中,我们已经看到内置数据类型的显式和隐式转换机制。然而,由于各种原因,它们可能并不总是适用。为了提供更精细的数据类型转换,MQL5 API 包含了一组转换函数。特别注意的是,字符串与其他类型(如数字、日期和时间、颜色、结构和枚举)之间的转换函数。

2023.12.15
MQL5编程入门:交易者必备的开发环境指南
MetaTrader5
MQL5编程入门:交易者必备的开发环境指南

第一部分:MQL5简介与开发环境 本书的第一部分标题为“MQL5简介与开发环境”,主要讲述了MQL5语言和开发环境的基础知识。 与MQL4(MetaTrader 4语言)相比,MQL5语言的一大新特性是支持面向对象编程(OOP),这使得它与C++相似。虽然一些OOP功能已经从MQL5转移到了MQL4,但许多不熟悉编程的用户可能会觉得OOP比较复杂。 本书的目的是让这种编程方式变得易于理解和接触。书中内容作为MQL5参考资料的补充,涵盖了MQL5编程的各个方面,并详细解释了所有流程。开发者可以选择面向对象和过程式编程风格,也可以将两者结合起来使用。 如果你已经有编程经验,可以跳过基础知识。对于C++程序员来说,掌握MQL5会容易一些,但要注意语言之间的差异,以免出错。 使用MQL5,你可以创建不同类型的程序,比如用于数据图形显示的指标、用于交易自动化的交易顾问(EA)、一次性操作的脚本,以及用于后台任务的服务。 MetaTrader 5的一个显著特点是可以通过客户端终端管理整个交易系统,MQL5程序在其中运行并向交易服务器发送交易指令。MQL5应用程序并不会安装在服务器上。 第一部分将讲解如何编辑、编译和运行程序,同时涵盖各种数据类型、变量、表达式、数组、调试和输出等内容。

2023.12.15
使用ONNX模型识别手写数字的专家顾问
MetaTrader5
使用ONNX模型识别手写数字的专家顾问

一款能识别手写数字的专家顾问 大家好!今天我想跟大家分享一款基于MNIST数据库的专家顾问,它可以识别手写数字。这个数据库包含了60,000张用于训练的图像和10,000张用于测试的图像,这些图像是从美国人口普查局获得的20x20像素的黑白样本经过“重混合”而成,并且还添加了来自美国高中生的测试样本。这些样本经过标准化,调整为28x28像素的大小,并进行了抗锯齿处理,这样就引入了灰度级别。 我们下载的手写数字识别模型为mnist.onnx,来自Model Zoo(opset 8)。有兴趣的朋友们可以下载并尝试其他模型,但请注意避免使用opset 1的模型,因为新版本的ONNX运行时不再支持它。值得一提的是,输出向量并没有使用通常在分类模型中使用的Softmax激活函数,但这并不是问题,我们可以很容易地自己实现。 int PredictNumber(void)   {    static matrixf image(28,28);    static vectorf result(10);    PrepareMatrix(image);    if(!OnnxRun(ExtModel,ONNX_DEFAULT,image,result))      {       Print("OnnxRun error ",GetLastError());       return(-1);      }    result.Activation(result,AF_SOFTMAX);    int predict=int(result.ArgMax());    if(result[predict]<0.8)       Print(result);       Print("value ",predict," predicted with probability ",result[predict]);    return(predict);   }  使用鼠标在特定的网格中绘制数字,按住左键。要识别绘制的数字,请点击CLASSIFY按钮。 如果识别的数字的概率低于0.8,则打印出每个类别的概率向量。例如,尝试对一个空的未填充输入框进行分类。 [0.095331445,0.10048489,0.10673151,0.10274081,0.087865397,0.11471312,0.094342403,0.094900772,0.10847695,0.09441267] value 5 predicted with probability 0.11471312493085861出乎意料的是,数字九(9)的识别准确率明显较低,而左倾的数字识别得更准确。

2023.11.23
MT5爆破马丁盖尔交易系统:优化外汇交易的利器
MetaTrader5
MT5爆破马丁盖尔交易系统:优化外汇交易的利器

大家好,今天我们来聊聊一种非常实用的交易工具——"爆破马丁盖尔"策略。这款交易系统专为外汇市场设计,结合了突破交易和马丁盖尔资金管理的优势,旨在提升交易表现。 输入参数: 止盈点数 (TakeProfPoints): 这个参数让你为每笔交易设定止盈的点数。 可用余额百分比 (BalancePercentageAvailable): 指定你账户余额中用于交易的百分比。 止盈百分比 (TP_Percentage_of_Balance): 设定用于每笔交易的止盈金额占账户余额的百分比。 止损百分比 (SL_Percentage_of_Balance): 设定用于每笔交易的止损金额占账户余额的百分比。 启动恢复 (Start_The_Recovery): 这个参数在恢复过程中非常关键,控制何时以及如何启动恢复措施。 止盈点数倍数 (TP_Points_Multiplier): 用于止盈点数的倍数,允许灵活的获利策略。 魔术编号 (MagicNumber): 每个EA都有一个独特的标识符,确保它能够独立管理自己的交易。 策略亮点: 突破交易: 此EA专注于识别市场中的突破机会,当价格突破关键水平时进行交易。 动态手数调整: 手数根据你的账户余额和风险偏好动态调整,遵循马丁盖尔资金管理原则。 亏损恢复: EA内置强大的恢复机制,能够在必要时通过调整交易参数来弥补亏损。 在这个EA中,最主要的函数是 CalcLotWithTP(),它有三个输入参数:止盈点、起始价格和结束价格。这个函数计算所需的交易手数,以便在以起始价格进场、以结束价格出场时实现利润目标。 代码中的每一部分都有注释,便于理解。   

2023.09.26
AK-47 Scalper EA:MetaTrader 5的高效交易助手
MetaTrader5
AK-47 Scalper EA:MetaTrader 5的高效交易助手

大家好,今天来聊聊一款非常实用的交易助手——AK-47 Scalper EA,它专为MetaTrader 5平台设计,能够帮助我们有效捕捉市场机会。 1. 输入参数 #define ExtBotName "AK-47 EA" // 机器人名称 #define  Version "1.00" // 导入输入类 #include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh>   #include <Trade\AccountInfo.mqh> #include <Trade\OrderInfo.mqh> //--- 定义预设变量以便于代码可读性 #define Ask    SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define Bid    SymbolInfoDouble(_Symbol, SYMBOL_BID) //--- 输入参数 input string  EASettings         = "---------------------------------------------"; //-------- <EA设置> -------- input int      InpMagicNumber    = 124656;   //魔术数字 input string  MoneySettings      = "---------------------------------------------"; //-------- <资金设置> -------- input bool     isVolume_Percent  = true;     //允许按比例计算交易量 input double   InpRisk           = 3;        //风险百分比 input string  TradingSettings    = "---------------------------------------------"; //-------- <交易设置> -------- input double   Inpuser_lot       = 0.01;     //交易手数 input double   InpSL_Pips        = 3.5      //止损(点数) input double   InpTP_Pips        = 7        //止盈(点数)(0 = 无止盈) input int      InpMax_slippage   = 3        //最大允许滑点 input double   InpMax_spread     = 5        //最大允许点差(0 = 浮动点差) input string   TimeSettings      = "---------------------------------------------"; //-------- <交易时间设置> -------- input bool     InpTimeFilter     = true;     //时间过滤器 input int      InpStartHour      = 2;        //开始小时 input int      InpStartMinute    = 30       //开始分钟 input int      InpEndHour        = 21        //结束小时 input int      InpEndMinute      = 0        //结束分钟 2. 本地变量初始化 //--- 变量 int      Pips2Points;    // 滑点 3点 double   Pips2Double;    // 止损 15点 bool     isOrder = false; int      slippage; long     acSpread; string   strComment = ""; CPositionInfo  m_position;                   // 交易位置对象 CTrade         m_trade;                      // 交易对象 CSymbolInfo    m_symbol;                     // 货币对信息对象 CAccountInfo   m_account;                    // 账户信息包装类 COrderInfo     m_order;                      // 挂单对象 3. 主代码 a/ 专家初始化函数 //+------------------------------------------------------------------+ //| 专家初始化函数 | //+------------------------------------------------------------------+ int OnInit() {    // 检测3位或5位小数    // 点和点数    if(_Digits % 2 == 1) {       Pips2Double  = _Point*10;       Pips2Points  =

2023.06.12
动态追踪止损与利润目标管理 - MetaTrader 5 的交易系统
MetaTrader5
动态追踪止损与利润目标管理 - MetaTrader 5 的交易系统

大家好!今天我们来聊聊一种在MetaTrader 5中使用的风险管理策略,这个策略主要是通过动态追踪止损和利润目标来管理现有的交易。 这个系统的核心思想是,在交易达到一定的盈利或亏损阈值时,及时平仓,并在行情朝着有利方向移动时,采用追踪止损来锁定利润。 代码简要说明 包含了必要的头文件,用于交易和品种信息的处理。 定义了输入参数,包括风险百分比、盈利百分比和追踪止损点。 声明了全局变量,用于存储交易和品种信息的对象。 OnInit函数用于初始化品种信息对象,并检查是否有错误。 OnDeinit函数在这种情况下不执行任何操作。 OnTick函数会在每次接收到新报价时被调用,并且会调用CheckTrades函数。 CheckTrades函数会遍历所有的持仓,检查该持仓是否属于当前品种。如果是,它会计算当前利润,并判断是否达到了盈利或亏损的阈值。如果达到了其中一个阈值,则平仓。 如果没有达到阈值,代码会检查持仓类型是买单还是卖单,并用追踪止损更新止损水平。如果新的止损水平比当前的更有利,则修改持仓的止损水平。 总的来说,这段代码提供了一种简单的风险管理策略,通过动态调整止损水平和及时平仓,来管理现有的交易。希望这对大家的交易有所帮助!

2023.04.28
使用CheckTrades优化MetaTrader 5的风险管理
MetaTrader5
使用CheckTrades优化MetaTrader 5的风险管理

大家好,今天我们来聊聊一个非常实用的工具——CheckTrades。这个工具是为MetaTrader 5平台设计的,主要是为了帮助我们更好地管理风险。 CheckTrades的核心代码是一个MQL5的专家顾问(EA),它的设计理念是:当我们的持仓达到用户设定的利润或亏损阈值时,就自动平仓。这个阈值是按照账户余额的百分比来计算的。 CheckTrades的工作原理 需要注意的是,这个EA并不提供入场信号或市场时机规则,它的主要目的是通过在达到特定利润或亏损阈值时关闭现有持仓,从而管理风险。 外部变量说明 风险百分比 (RiskPercentage): 这个变量代表每笔交易允许的最大亏损,单位为账户余额的百分比。当某个开放仓位的当前亏损达到这个百分比时,系统将自动平仓,以限制风险。 利润百分比 (ProfitPercentage): 这个变量表示每笔交易期望的利润,同样是以账户余额的百分比来计算。当某个开放仓位的当前利润达到这个百分比时,系统将平仓以锁定利润。 由于这个EA专注于风险管理,不依赖任何特定的市场指标,因此可以应用于任何品种或时间框架。不过,值得强调的是,这个EA应该与包括入场信号和其他交易管理规则的交易策略结合使用,才能形成一个完整的交易系统。 如果你把这个代码作为一个包含文件(放在MQL5\Include文件夹中),它的主要作用就是通过用户定义的利润和亏损阈值来进行风险管理,自动关闭持仓。 你可以将这个包含文件与其他特定功能的包含文件结合使用,比如根据账户风险计算持仓大小、移动止损等。实现方法很简单,只需在主EA文件中使用#include指令来包含这个文件,然后在需要管理开放仓位时调用CheckTrades()函数即可。

2023.04.25
首页 上一页 1 2 3 4 5 6 7 8 9 10 11 下一页 末页