欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

JBrainTrend1Stop_Alert - MetaTrader 5脚本

author emer | 455 人阅读 | 0 人评论 |

JBrainTrend1Stop_Alert - indicator for MetaTrader 5

JBrainTrend1Stop_Alert - indicator for MetaTrader 5

JBrainTrend1Stop趋势指示器具有警报、电子邮件和推送通知功能。

为了实现警报、电子邮件消息和推送通知,对指标代码进行了以下更改:

输入 单位条数=1;//信号的柱数
输入 布尔值声音开启=真的;//启用警报
输入 单位警报数量=2;//警报数量
输入 布尔值电子邮件开启=错误的;//启用邮寄信号
输入 布尔值按下=错误的;//启用向移动设备发送信号
</li>
<li>在指标代码末尾添加了三个新函数:BuySignal()、SellSignal() 和 GetStringTimeframe()<div class="code"><span class="comment">//+------------------------------------------------------------------+</span><br />
    <span class="comment">//|购买信号功能                                              |</span><br />
    <span class="comment">//+------------------------------------------------------------------+</span><br />
    <span class="keyword">空白</span>买入信号(<span class="keyword">细绳</span>信号先生姓名,      <span class="comment">// 电子邮件和推送消息的指标名称文本</span><br />              <span class="keyword">双倍的</span>购买箭头(&B)[],        <span class="comment">// 带有上升趋势信号的指标缓冲区</span><br />              <span class="keyword">双倍的</span>销售箭头(&S)[],      <span class="comment">// 带有下降趋势信号的指标缓冲区</span><br />              <span class="keyword">常量</span> <span class="keyword">整数</span>费率_总计,    <span class="comment">// 当前柱数</span><br />              <span class="keyword">常量</span> <span class="keyword">整数</span>前_计算,<span class="comment">// 前一个价格变动的柱数</span><br />              <span class="keyword">常量</span> <span class="keyword">双倍的</span>&<span class="predefines">关闭</span>[],    <span class="comment">// 收盘价</span><br />              <span class="keyword">常量</span> <span class="keyword">整数</span>&传播[])      <span class="comment">// 传播</span><br />  {<br />
    <span class="comment">//---</span><br />  <span class="keyword">静止的</span> <span class="keyword">单位</span>计数器=<span class="number">0</span>;<br />  <span class="keyword">如果</span>(Rates_total!=Prev_calculated) 计数器=<span class="number">0</span>;<br />
    <br />  <span class="keyword">布尔值</span>买入信号=<span class="macro">错误的</span>;<br />  <span class="keyword">布尔值</span>系列测试=<span class="functions">数组获取系列</span>(购买箭头);<br />  <span class="keyword">整数</span>索引,索引1;<br />  <span class="keyword">如果</span>(系列测试)<br />     {<br />      索引=<span class="keyword">整数</span>(条数);<br />      索引1=索引+<span class="number">1</span>;<br />     }<br />  <span class="keyword">别的</span><br />     {<br />      索引=Rates_total-<span class="keyword">整数</span>(条数)-<span class="number">1</span>;<br />      索引1=索引-<span class="number">1</span>;<br />     }<br />  <span class="keyword">如果</span>(SellArrow[index1] && SellArrow[index1]!=<span class="macro">空_VALUE</span>&& BuyArrow[索引] && BuyArrow[索引]!=<span class="macro">空_VALUE</span>) 购买信号=<span class="macro">真的</span>;<br />  <span class="keyword">如果</span>(BuySignal && 计数器<=NumberofAlerts)<br />     {<br />      计数器++;<br />      <span class="predefines">Mql日期时间</span>TM;<br />      <span class="functions">构建时间</span>(<span class="functions">时间当前</span>(),tm);<br />      <span class="keyword">细绳</span>文字=<span class="functions">字符串时间</span>(<span class="functions">时间当前</span>(),<span class="macro">TIME_DATE</span>)+<span class="string">” “</span>+<span class="keyword">细绳</span>(tm.小时)+<span class="string">“:”</span>+<span class="keyword">细绳</span>(tm.分钟);<br />      系列测试=<span class="functions">数组获取系列</span>(<span class="predefines">关闭</span>);<br />      <span class="keyword">如果</span>(系列测试)索引=<span class="keyword">整数</span>(条数);<br />      <span class="keyword">别的</span>索引=Rates_total-<span class="keyword">整数</span>(条数)-<span class="number">1</span>;<br />      <span class="keyword">双倍的</span> <span class="predefines">问</span>=<span class="predefines">关闭</span>[指数];<br />      <span class="keyword">双倍的</span> <span class="predefines">出价</span>=<span class="predefines">关闭</span>[指数];<br />      系列测试=<span class="functions">数组获取系列</span>(传播);<br />      <span class="keyword">如果</span>(系列测试)索引=<span class="keyword">整数</span>(条数);<br />      <span class="keyword">别的</span>索引=Rates_total-<span class="keyword">整数</span>(条数)-<span class="number">1</span>;<br />      <span class="predefines">出价</span>+=<span class="predefines">_观点</span>*传播[索引];<br />      <span class="keyword">细绳</span>问=<span class="functions">双精度转字符串</span>(<span class="predefines">问</span>,<span class="predefines">_数字</span>);<br />      <span class="keyword">细绳</span>出价=<span class="functions">双精度转字符串</span>(<span class="predefines">出价</span>,<span class="predefines">_数字</span>);<br />      <span class="keyword">细绳</span>sPeriod=GetStringTimeframe(<span class="functions">图表周期</span>());<br />      <span class="keyword">如果</span>(声音打开)<span class="functions">警报</span>(<span class="string">"买入信号 \n 询问="</span>,<span class="predefines">问</span>,<span class="string">“\n 出价=”</span>,<span class="predefines">出价</span>,<span class="string">“\n 当前时间=”</span>,文本,<span class="string">“\n 符号=”</span>,<span class="functions">象征</span>(),<span class="string">“句号=”</span>,s 期间);<br />      <span class="keyword">如果</span>(电子邮件)<span class="functions">发送邮件</span>(信号先生姓名+<span class="string">“:买入信号提醒”</span>,<span class="string">“在询问处买入信号=”</span>+问+<span class="string">“,出价=”</span>+出价+<span class="string">“,日期=”</span>+文字+<span class="string">“符号=”</span>+<span class="functions">象征</span>()+<span class="string">“句号=”</span>+s句点);<br />      <span class="keyword">如果</span>(推开)<span class="functions">发送通知</span>(信号先生姓名+<span class="string">": 在 Ask=" 处买入信号</span>+问+<span class="string">“,出价=”</span>+出价+<span class="string">“,日期=”</span>+文字+<span class="string">“符号=”</span>+<span class="functions">象征</span>()+<span class="string">“句号=”</span>+s句点);<br />     }<br />
    <br />
    <span class="comment">//---</span><br />  }<br />
    <span class="comment">//+------------------------------------------------------------------+</span><br />
    <span class="comment">//|卖出信号函数                                             |</span><br />
    <span class="comment">//+------------------------------------------------------------------+</span><br />
    <span class="keyword">空白</span>卖出信号(<span class="keyword">细绳</span>信号先生姓名,      <span class="comment">// 电子邮件和推送消息的指标名称文本</span><br />                <span class="keyword">双倍的</span>销售箭头(&S)[],      <span class="comment">// 带有下降趋势信号的指标缓冲区</span><br />                <span class="keyword">双倍的</span>购买箭头(&B)[],        <span class="comment">// 带有上升趋势信号的指标缓冲区</span><br />                <span class="keyword">常量</span> <span class="keyword">整数</span>费率_总计,    <span class="comment">// 当前柱数</span><br />                <span class="keyword">常量</span> <span class="keyword">整数</span>前_计算,<span class="comment">// 前一个价格变动的柱数</span><br />                <span class="keyword">常量</span> <span class="keyword">双倍的</span>&<span class="predefines">关闭</span>[],    <span class="comment">// 收盘价</span><br />                <span class="keyword">常量</span> <span class="keyword">整数</span>&传播[])      <span class="comment">// 传播</span><br />  {<br />
    <span class="comment">//---</span><br />  <span class="keyword">静止的</span> <span class="keyword">单位</span>计数器=<span class="number">0</span>;<br />  <span class="keyword">如果</span>(Rates_total!=Prev_calculated) 计数器=<span class="number">0</span>;<br />
    <br />  <span class="keyword">布尔值</span>卖出信号=<span class="macro">错误的</span>;<br />  <span class="keyword">布尔值</span>系列测试=<span class="functions">数组获取系列</span>(卖出箭头);<br />  <span class="keyword">整数</span>索引,索引1;<br />  <span class="keyword">如果</span>(系列测试)<br />     {<br />      索引=<span class="keyword">整数</span>(条数);<br />      索引1=索引+<span class="number">1</span>;<br />     }<br />  <span class="keyword">别的</span><br />     {<br />      索引=Rates_total-<span class="keyword">整数</span>(条数)-<span class="number">1</span>;<br />      索引1=索引-<span class="number">1</span>;<br />     }<br />  <span class="keyword">如果</span>(BuyArrow[index1] && BuyArrow[index1]!=<span class="macro">空_VALUE</span>&& SellArrow[索引] && SellArrow[索引]!=<span class="macro">空_VALUE</span>) 卖出信号=<span class="macro">真的</span>;<br />  <span class="keyword">如果</span>(SellSignal && 计数器<=NumberofAlerts)<br />     {<br />      计数器++;<br />      <span class="predefines">Mql日期时间</span>TM;<br />      <span class="functions">构建时间</span>(<span class="functions">时间当前</span>(),tm);<br />      <span class="keyword">细绳</span>文字=<span class="functions">字符串时间</span>(<span class="functions">时间当前</span>(),<span class="macro">TIME_DATE</span>)+<span class="string">” “</span>+<span class="keyword">细绳</span>(tm.小时)+<span class="string">“:”</span>+<span class="keyword">细绳</span>(tm.分钟);<br />      系列测试=<span class="functions">数组获取系列</span>(<span class="predefines">关闭</span>);<br />      <span class="keyword">如果</span>(系列测试)索引=<span class="keyword">整数</span>(条数);<br />      <span class="keyword">别的</span>索引=Rates_total-<span class="keyword">整数</span>(条数)-<span class="number">1</span>;<br />      <span class="keyword">双倍的</span> <span class="predefines">问</span>=<span class="predefines">关闭</span>[指数];<br />      <span class="keyword">双倍的</span> <span class="predefines">出价</span>=<span class="predefines">关闭</span>[指数];<br />      系列测试=<span class="functions">数组获取系列</span>(传播);<br />      <span class="keyword">如果</span>(系列测试)索引=<span class="keyword">整数</span>(条数);<br />      <span class="keyword">别的</span>索引=Rates_total-<span class="keyword">整数</span>(条数)-<span class="number">1</span>;<br />      <span class="predefines">出价</span>+=<span class="predefines">_观点</span>*传播[索引];<br />      <span class="keyword">细绳</span>问=<span class="functions">双精度转字符串</span>(<span class="predefines">问</span>,<span class="predefines">_数字</span>);<br />      <span class="keyword">细绳</span>出价=<span class="functions">双精度转字符串</span>(<span class="predefines">出价</span>,<span class="predefines">_数字</span>);<br />      <span class="keyword">细绳</span>sPeriod=GetStringTimeframe(<span class="functions">图表周期</span>());<br />      <span class="keyword">如果</span>(声音打开)<span class="functions">警报</span>(<span class="string">"卖出信号 \n 询问="</span>,<span class="predefines">问</span>,<span class="string">“\n 出价=”</span>,<span class="predefines">出价</span>,<span class="string">“\n 当前时间=”</span>,文本,<span class="string">“\n 符号=”</span>,<span class="functions">象征</span>(),<span class="string">“句号=”</span>,s 期间);<br />      <span class="keyword">如果</span>(电子邮件)<span class="functions">发送邮件</span>(信号先生姓名+<span class="string">“:卖出信号警报”</span>,<span class="string">“卖出信号在询问=”</span>+问+<span class="string">“,出价=”</span>+出价+<span class="string">“,日期=”</span>+文字+<span class="string">“符号=”</span>+<span class="functions">象征</span>()+<span class="string">“句号=”</span>+s句点);<br />      <span class="keyword">如果</span>(推开)<span class="functions">发送通知</span>(信号先生姓名+<span class="string">": 在 Ask=" 时卖出信号</span>+问+<span class="string">“,出价=”</span>+出价+<span class="string">“,日期=”</span>+文字+<span class="string">“符号=”</span>+<span class="functions">象征</span>()+<span class="string">“句号=”</span>+s句点);<br />     }<br />
    <span class="comment">//---</span><br />  }<br />
    <span class="comment">//+------------------------------------------------------------------+</span><br />
    <span class="comment">//|  获取字符串形式的时间范围                               |</span><br />
    <span class="comment">//+------------------------------------------------------------------+</span><br />
    <span class="keyword">细绳</span>获取字符串时间范围(<span class="macro">ENUM_TIMEFRAMES</span>大体时间)<br />  {<br />
    <span class="comment">//----</span><br />  <span class="keyword">返回</span>(<span class="functions">字符串子串</span>(<span class="functions">枚举转字符串</span>(大体时间),<span class="number">7</span>,-<span class="number">1</span>));<br />
    <span class="comment">//----</span><br />  }</div>
</li>
<li>在 OnCalculate() 块中的指标计算周期之后添加了对 BuySignal() 和 SellSignal() 函数的几次调用<div class="code"><span class="comment">//---    </span><br />   买入信号(<span class="string">“JBrainTrend1Stop_Alert”</span>,BuyStopBuffer,SellStopBuffer,rates_total,prev_calculated,close,spread);<br />   卖出信号(<span class="string">“JBrainTrend1Stop_Alert”</span>,SellStopBuffer,BuyStopBuffer,rates_total,prev_calculated,close,spread);<br />
    <span class="comment">//---  </span></div>

其中 BuyStopBuffer 和 SellStopBuffer 是用于存储上升和下降趋势信号(多头和空头的止损线)的指标缓冲区的名称。如果没有适当的趋势,则指标缓冲区中应存在零值或 EMPTY_VALUE。

假定对 BuySignal() 和 SellSignal() 函数的唯一一次调用将在指标代码的 OnCalculate() 块中使用。

将 JMA.mq5 指标编译文件放置到 MQL5\Indicators。

JBrainTrend1Stop_Alert - indicator for MetaTrader 5

图1.图表上的 JBrainTrend1Stop_Alert 指标

JBrainTrend1Stop_Alert - indicator for MetaTrader 5

图2. JBrainTrend1Stop_Alert 指标。生成警报


附件下载

📎 jma.mq5 (47.27 KB)

📎 jbraintrend1stop_alert.mq5 (36.04 KB)

Source: MQL5 #16895

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录