MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
Вы хотите быстро проверить торговую идею, не тратя времени на программирование? Выберите в "Мастере MQL5" нужный тип торговых сигналов, подключите модули сопровождения позиций и управления капиталом - на этом вся работа закончена. Создайте свои реализации модулей или закажите их через сервис "Работа" - и комбинируйте новые модули с уже существующими.
Знание языков программирования теперь не является обязательным условием для создания торговых роботов. Если раньше это действительно служило непроходимым препятствием для реализации своих торговых стратегий, то появление Мастера MQL5 в корне изменило ситуацию. Начинающие трейдеры могут перестать тревожиться из-за отсутствия опыта программирования - с новым визардом, позволяющим быстро генерировать код советника, он не понадобится.
例如,让我们看一下MACD信号。共描述了5个买入信号和5个卖出信号(反转,与信号线交叉,等等)。有什么办法可以得到这些信号在任何时候的价值吗?也就是说,为每个条形图形成一个由10个元素组成的向量,其中每个元素对应于信号,1表示存在,0-不存在?可以用 什么CSignalMACD 类方法来获得相应的值?
不幸的是,这一功能并没有作为标准功能提供。
你好,请帮我一下。我已经创造了一个机器人(我的第一个机器人)。启动后,它立即关闭,并显示专家初始化机器人(EURUSD,H1)失败。我找不到关于它的更多信息。
以下是他的代码。
--------------------------------------
//+------------------------------------------------------------------+
//| robot.mq5 |
//| Copyright 2012, MetaQuotes Software Corp.
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright"Copyright 2012, MetaQuotes Software Corp.
#属性链接 "http://www.mql5.com"
#财产版本 "1.00"
//+------------------------------------------------------------------+
//| 包括 |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>。
//--- 可用的信号
#include <Expert\robot\robot.mqh>。
//------可用的尾部
#include <Expert\Trailing\TrailingNone.mqh>。
//---- 可用的资金管理
#include <Expert\Money\MoneyFixedLot.mqh>。
//+------------------------------------------------------------------+
//| 输入 |
//+------------------------------------------------------------------+
//----对专家的输入
输入字符串 Expert_Title ="机器人"; // 文档名称
ulong Expert_MagicNumber =24553; //
bool Expert_EveryTick =false; //--- 主信号的输入。
//---主信号的输入
输入 int Signal_ThresholdOpen =10; // 打开的信号阈值 [0...100] 。
输入 int Signal_ThresholdClose =10; // 关闭 [0...100] 的信号阈值
输入 double Signal_PriceLevel =0.0; // 执行交易的价格水平
Input double Signal_StopLevel =50.0; // Stop Loss level (in points)
输入 double Signal_TakeLevel =50.0; // Take Profit level (in points)
输入 int Signal_Expiration =4; // 挂单的到期时间(以条为单位)。
输入 int Signal_MaCross_FastPeriod=13; // My_MA_Cross(13,MODE_SMA,21,..) 快速MA的周期
输入 ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 快速MA的方法。
输入 int Signal_MaCross_SlowPeriod=21; // My_MA_Cross(13,MODE_SMA,21,..) 慢速MA的周期
输入 ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 慢速MA的方法
输入 double Signal_MaCross_Weight =1.0; // My_MA_Cross(13,MODE_SMA,21,...) Weight [0...1.0] 。
//--------为钱而投入
输入 double Money_FixLot_Percent =10.0; // Percent
输入 double Money_FixLot_Lots =0.1; // 固定数量
//+------------------------------------------------------------------+
//| 全球专家对象 |
//+------------------------------------------------------------------+
CExpert ExtExpert。
//+------------------------------------------------------------------+
//|专家的初始化功能 ||
//+------------------------------------------------------------------+
int OnInit()
{
//----初始化专家
if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
{
//----失败
printf(__FUNCTION__+": 错误初始化专家")。
ExtExpert.Deinit()。
返回(-1)。
}
//---创建信号
CExpertSignal *signal=new CExpertSignal。
如果(signal==NULL)
{
//----失败
printf(__FUNCTION__+": 错误创建信号")。
ExtExpert.Deinit()。
返回(-2)。
}
//---
ExtExpert.InitSignal(signal)。
signal.ThresholdOpen(Signal_ThresholdOpen)。
signal.ThresholdClose(Signal_ThresholdClose)。
signal.PriceLevel(Signal_PriceLevel)。
signal.StopLevel(Signal_StopLevel)。
signal.TakeLevel(Signal_TakeLevel)。
signal.Expiration(Signal_Expiration)。
//--- 创建过滤器MA_Cross
MA_Cross *filter0=new MA_Cross;
如果(filter0==NULL)
{
//----失败
printf(__FUNCTION__+": 错误创建过滤器0")。
ExtExpert.Deinit()。
返回(-3)。
}
signal.AddFilter(filter0)。
//---- 设置过滤器参数
filter0.FastPeriod(Signal_MaCross_FastPeriod)。
filter0.FastMethod(Signal_MaCross_FastMethod)。
filter0.SlowPeriod(Signal_MaCross_SlowPeriod)。
filter0.SlowMethod(Signal_MaCross_SlowMethod)。
filter0.Weight(Signal_MaCross_Weight)。
//---- 创建尾随对象
CTrailingNone *trailing=new CTrailingNone。
如果(trailing==NULL)
{
//----失败
printf(__FUNCTION__+": 错误创建尾部")。
ExtExpert.Deinit()。
返回(-4)。
}
//------给专家添加尾音(将自动删除)
if(!ExtExpert.InitTrailing(trailing))
{
//----失败
printf(__FUNCTION__+": 初始化尾部的错误")。
ExtExpert.Deinit()。
返回(-5)。
}
//---- 设置尾部参数
//---- 创建货币对象
CMoneyFixedLot *money=new CMoneyFixedLot。
如果(money==NULL)
{
//----失败
printf(__FUNCTION__+": 错误创建货币")。
ExtExpert.Deinit()。
返回(-6)。
}
//---给专家加钱(会自动删除))
if(!ExtExpert.InitMoney(money))
{
//----失败
printf(__FUNCTION__+": 错误初始化货币")。
ExtExpert.Deinit()。
返回(-7)。
}
//--- 设置货币参数
money.Percent(Money_FixLot_Percent)。
money.Lots(Money_FixLot_Lots)。
//---- 检查所有交易对象的参数
if(!ExtExpert.ValidationSettings())
{
//----失败
ExtExpert.Deinit()。
返回(-8)。
}
//---调整所有必要的指标
if(!ExtExpert.InitIndicators())
{
//----失败
printf(__FUNCTION__+": 错误初始化指标")。
ExtExpert.Deinit()。
返回(-9)。
}
//-- 确定
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能。
//+------------------------------------------------------------------+
空白的OnDeinit(const int reason)。
{
ExtExpert.Deinit()。
}
//+------------------------------------------------------------------+
//| "Tick "事件处理函数|
//+------------------------------------------------------------------+
空白的OnTick()
{
ExtExpert.OnTick()。
}
//+------------------------------------------------------------------+
//| "交易 "事件处理函数|
//+------------------------------------------------------------------+
空白的OnTrade()
{
ExtExpert.OnTrade()。
}
//+------------------------------------------------------------------+
//| "定时器 "事件处理函数 | |
//+------------------------------------------------------------------+
空白的OnTimer()
{
ExtExpert.OnTimer()。
}
//+------------------------------------------------------------------+
可能是什么问题。我甚至不知道该先看哪里。
提前感谢。
你好,请帮我一下。我创造了一个机器人(我的第一个机器人)。启动后,它立即关闭,并显示专家初始化机器人(EURUSD,H1)失败。我找不到关于它的更多信息。
我没有足够的信息。
需要
#include <Expert\robot\robot.mqh>
我需要启动参数(测试器/终端、服务器、配对、时间框架等)。
PS 源代码最好作为一个文件附上
关于MQL5 Wizard的问题。
1) //------投入资金
输入 double Money_FixLot_Percent =10.0; // 百分比
输入 double Money_FixLot_Lots =0.1; // 固定音量
这些参数是什么意思?它们之间又有什么关系呢?
2) 我能否生成一个 可以下挂单的EA?如果是这样,怎么做?
3) Signal_Expiration变量是什么意思?我如何使用它?
关于MQL5 Wizard的问题。
1) //------投入资金
输入 double Money_FixLot_Percent =10.0; // 百分比
输入 double Money_FixLot_Lots =0.1; // 固定音量
这些参数是什么意思?它们之间又有什么关系呢?
2) 我能否生成一个 可以下挂单的EA?如果是这样,怎么做?
3) Signal_Expiration变量是什么意思?如何使用它?
1) Money_FixLot_Percent参数用于设置 "强制停止 "水平。请勿触摸它。
Money_FixLot_Lots参数设置了一个固定的数量(手数),您的专家顾问将以这个数量进入市场。
这些参数没有任何相互关联。
2)任何Wizard生成的专家顾问都可以交易挂单。为此目的,使用了..._PriceLevel参数。根据这个参数的值,专家顾问将有如下表现。
0--市场进入将以当前价格进行。
>0 - 市场进入将使用挂起的限价订单(通过该参数的值优于当前价格)。
<0 - 市场进入将使用待定的止损订单(比参数值的当前价格差)。
3) Signal_Expiration参数设置挂单的有效期(以当前时间段的条数计算)。
如果我在MQL5向导中 生成一个EA,这样的EA可以同时开多少个订单?这方面是如何监管的?
如果我在MQL5向导中 生成一个EA,这样的EA可以同时开多少个订单?这一点是如何控制的?
1个订单。它不受监管。
该向导是为策略测试而设计的。如果你想要更多,你需要 "存档"(用手写)。
2)由向导 生成的任何EA 都可以交易挂单。为此目的,使用了..._PriceLevel参数。根据这个参数的值,专家顾问将有如下表现。
0--市场进入将以当前价格进行。
>0 - 市场进入将使用挂起的限价单(通过该参数的值优于当前价格)。
<0 - 市场进入将使用挂起的止损单(比参数值的当前价格差)。
PriceLevel参数的测量单位是什么?在点?例如,如果我想设置一个比当前价格高20点的挂单止损。
我应该设置这个参数PriceLevel =-0.0020吗?