我不明白如何通过 iCustom 访问它...请解释
应该有如下内容
double iCustom (
stringsymbol、 // 符号 名称
int timeframe、 // timeframe
stringname、 // 文件夹/用户 指标 名称
... // 指标 输入参数列表
int mode, // 数据源
int shift// shift
);
特别是在我们的情况下
//+------------------------------------------------------------------+ //| NRTRvolatile| //+------------------------------------------------------------------+ //iBufferNumber //0 //1 //2 - 信号升高 //3 - 信号下降 double indNRTRvolatile(string sSymbol=NULL, int tf=PERIOD_M5, int period=12, //动态周期 double K=1, //比例系数 int iBufferNumber=0, int iShift=0) { ENUM_TIMEFRAMES timeframe=TFMigrate(tf); double handle=iCustom(sSymbol,timeframe,"NRTRvolatile",period,K,iBufferNumber,iShift); if(handle<0) { Print("未创建 NRTRvolatile 对象:错误",GetLastError()); return(-1); } else return(CopyBufferMQL4(handle,0,iShift)); }
只给出一些无意义的信息,即如果您参考缓冲区 2 或 3,则给出当前价格
我不明白如何通过 iCustom 访问它...请解释
缓冲区 2、3 包含仅在趋势变化时更新的信号。
支撑位/阻力位在缓冲区 0,1 中 - 我们看到的就是这些线
CopyBuffer()- 有三个重载,但都没有三个参数。
获取缓冲区值的代码变体
void OnStart() { double arr[]; int handle =iCustom(Symbol(),0,"NRTRvolatile",12,1); CopyBuffer(handle,0,0,1,arr); Print("下运河,arr[0]); CopyBuffer(handle,1,0,1,arr); Print("上运河,arr[0]); CopyBuffer(handle,2,0,1,arr); Print("发出信号",arr[0]); CopyBuffer(handle,3,0,1,arr); Print("信号中断",arr[0]); }
脚本如下
缓冲区 2、3 包含仅在趋势变化时更新的信号。
支撑位/阻力位在缓冲区 0,1 中 - 这些是我们看到的线段
CopyBuffer() - 有三个重载,但都没有三个参数。
获取缓冲区值的代码变体
这是一个脚本
是的,现在更清楚了。
关于CopyBuffer- 它来自 mql4 兼容库,更确切地说,来自 initmql4__1.mqh。
double CopyBufferMQL4(int handle,int index,int shift) { double buf[]; switch(index) { case 0: if(CopyBuffer(handle,0,shift,1,buf)>0) return(buf[0]); break; case 1: if(CopyBuffer(handle,1,shift,1,buf)>0) return(buf[0]); break; case 2: if(CopyBuffer(handle,2,shift,1,buf)>0) return(buf[0]); break; case 3: if(CopyBuffer(handle,3,shift,1,buf)>0) return(buf[0]); break; case 4: if(CopyBuffer(handle,4,shift,1,buf)>0) return(buf[0]); break; default: break; } return(EMPTY_VALUE); }
也许吧
//+------------------------------------------------------------------+ //| NRTRvolatile| //+------------------------------------------------------------------+ //iBufferNumber //0 //1 //2 - 信号升高 //3 - 信号下降 double indNRTRvolatile(string sSymbol=NULL, int tf=PERIOD_M5, int period=12, //动态周期 double K=1, //比例系数 int iBufferNumber=0, int iShift=0) { ENUM_TIMEFRAMES timeframe=TFMigrate(tf); double handle=iCustom(sSymbol,timeframe,"NRTRvolatile",period,K); if(handle<0) { Print("未创建 NRTRvolatile 对象:错误",GetLastError()); return(-1); } else return(CopyBufferMQL4(handle,iBufferNumber,iShift));}
是否有可能升级 NRTRvolatile,以便在添加箭头时弹出消息框?
是否有可能升级 NRTRvolatile,以便在添加箭头时弹出消息框?
或许可以在 LongCondition 和 ShortCondition 函数中。
int SignalNRTR::LongCondition(void) { int idx =StartIndex(); if(UpSignal(idx)) { Alert"Text"; return 100; } else return 0; }
添加类似Alert"Text"(提示 文本)的内容。我不知道这是否可行。问题是我的电脑里已经没有这些代码了。去年的所有代码都被我扔到了一边。)所以我无法尝试。我脑子里还在回响着除夕夜的钟声:)
在指标本身中,就在这附近
// 趋势变化 if(trend>0) Buff_Up[i]=value; if(trend<0) Buff_Dn[i]=value; if(trend_prev<0 && trend>0) { Alert("Text"); Sign_Up[i]=value; Buff_Up[i]=0.0; } if(trend_prev>0 && trend<0) { Alert("Text"); Sign_Dn[i]=value; Buff_Dn[i]=0.0; }
includefiles 的路径应更正为
#include <Expert\\ExpertSignal.mqh>
两种变体都有可能。右侧变体
#include <Expert\ExpertSignal.mqh>你可以在 Include\Expert\Signal 文件夹中的另一个模块中看到。
新文章 用于 MQL5 向导的 NRTR 指标和交易模块已发布:
在本文中, 我们将分析 NRTR 指标, 并基于此指标创建一个交易系统。我们将会开发一个交易信号模块, 此模块可用来创建基于 NRTR 与附加趋势确认指标相结合的策略。
NRTR (Nick Rypock Trailing Reverse) 指标是由 Konstantin Kopyrkin 提出的。有趣的信息: 尼克·雷普克 (Nick Rypock) 这个名字源自姓氏 Kopyrkin。
让我们回到指标。这是一个动态价格通道。作者用下图描绘了它的主要思想:
作者:Dmitrii Troshin