如何将指标代码添加到 expertadvisor 代码中? - 页 3 12345678910 新评论 [删除] 2012.05.15 23:04 #21 我希望在我的EA上添加一些过滤器,我应该怎么做? [删除] 2012.05.16 07:50 #22 嗨,我有一些问题......。~~ 我希望用RVI指标做一个新的EA。 但似乎我有很大的错误。 甚至我还看了看这个页面https://www.mql5.com/en/articles/1456。 但还是有问题。 下面是我的代码。 有谁能帮我做这个简单的EA吗? //+------------------------------------------------------------------+ //| RVI EA.mq4 | //| Copyright 2012, Abu. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, Abu." #property link "http://www.metaquotes.net" //--- input parameters extern double TakeProfit=100.0; extern double StopLoss=100.0; extern int TotalOrder=10; extern double FixedLotSize=0.1; extern double FlexibleLotSize=0.1; extern double RVIPeriod=5; //---- indicator buffers double ExtRVIBuffer[]; double ExtRVISignalBuffer[]; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if(AccountFreeMargin()<200) //---- { Print("Margin is lesser than 200"); //---- return(0); for (int i=100; i<TotalOrder(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { return(True); } } } return(false); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { int i,j,nLimit,CountedBars; double dValueUp,dValueDown,dNum,dDeNum; //---- if(Bars<=RVIPeriod+8) return(0); //---- CountedBars=IndicatorCounted(); //---- check for possible errors if(CountedBars<0) return(-1); //---- last counted bar will be recounted Limit=Bars-RVIPeriod-4; if(CountedBars>RVIPeriod+4) Limit=Bars-CountedBars; //---- RVI counted in the 1-st buffer for(int i = limit); i >= 1; i-- { dNum=0.0; dDeNum=0.0; for(int j=i; j<i+RVIPeriod; j++) { dValueUp=((Close[j]-Open[j])+2*(Close[j+1]-Open[j+1])+2*(Close[j+2]-Open[j+2])+(Close[j+3]-Open[j+3]))/6; dValueDown=((High[j]-Low[j])+2*(High[j+1]-Low[j+1])+2*(High[j+2]-Low[j+2])+(High[j+3]-Low[j+3]))/6; dNum+=dValueUp; dDeNum+=dValueDown; } if(dDeNum!=0.0) ExtRVIBuffer[i]=dNum/dDeNum; else ExtRVIBuffer[i]=dNum; } //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if ((i<j)); { OpenSell(); return(0); } else if ((j<i)); { OpenBuy(); return(0); } else //---- //---- return(0); } //+------------------------------------------------------------------+ Simon Gniadkowski 2012.05.16 08:01 #23 您不能 在EA中使用指标缓冲区或其他指标函数,如IndicatorCounted()。 创建一个指标,使用iCustom从你的EA访问指标缓冲区。 你也可以简单地使用mql4提供的iRVI 函数 . . init()是你想在EA启动时运行一次的代码,deinit()是你想在EA关闭时运行一次的代码 . . . start()是你想在每个tick运行的代码 . . [删除] 2012.05.16 20:51 #24 如何知道任何时间的最高和最低的蜡烛......。 [删除] 2012.05.16 21:34 #25 如何定义最低栏或最高栏? [删除] 2012.05.16 21:49 #26 如何在EA上定义ExtDepth和shift? [删除] 2012.05.16 22:18 #27 int a, b; double zag, zig; b=0; while(a<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, b); if(zig>0) a+=1; b++; ZigZagHigh=iCustom(NULL,0,"ZigZag",MODE_HIGH,0); ZigZagLow=iCustom(NULL,0,"ZigZag",MODE_LOW,0); double LowestBar=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)]; double HighestBar=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)]; 如上所述,我希望定义a=蜡烛的最高价格 和b=蜡烛的最低价格 试图在我的EA中加入Zigzag指标。 但仍然没有定义变量。 如何解决这些错误? Simon Gniadkowski 2012.05.17 05:54 #28 阅读一下这个主题: https://www.mql5.com/en/forum/139051/page2#623895,原则是相同的。 Simon Gniadkowski 2012.05.17 06:00 #29 albert_lim83: 如上所述,我希望定义a=蜡烛的最高价格 和b=蜡烛的最低价格 试图在我的EA中加入Zigzag指标。 但仍然没有定义变量。 如何解决这些错误? 你是否声明了ZigZagHigh、ZigZagLow和ExtDepth? iHighest和iLowest返回的是最高/最低价的条形图的编号 ......他们看的是以shift开始的条形图,通过看ExDepth条形图 ...... [删除] 2012.05.17 07:26 #30 终于解决了变量问题。 现在只有 ( -函数 定义出乎意料 ) - 不平衡的右括号... 是不是在我的代码上放了(和)? 12345678910 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
嗨,我有一些问题......。~~
我希望用RVI指标做一个新的EA。
但似乎我有很大的错误。
甚至我还看了看这个页面https://www.mql5.com/en/articles/1456。
但还是有问题。
下面是我的代码。
有谁能帮我做这个简单的EA吗?
您不能 在EA中使用指标缓冲区或其他指标函数,如IndicatorCounted()。 创建一个指标,使用iCustom从你的EA访问指标缓冲区。 你也可以简单地使用mql4提供的iRVI 函数 . .
init()是你想在EA启动时运行一次的代码,deinit()是你想在EA关闭时运行一次的代码 . . . start()是你想在每个tick运行的代码 . .
如何知道任何时间的最高和最低的蜡烛......。
如上所述,我希望定义a=蜡烛的最高价格
和b=蜡烛的最低价格
试图在我的EA中加入Zigzag指标。
但仍然没有定义变量。
如何解决这些错误?
如上所述,我希望定义a=蜡烛的最高价格
和b=蜡烛的最低价格
试图在我的EA中加入Zigzag指标。
但仍然没有定义变量。
如何解决这些错误?
你是否声明了ZigZagHigh、ZigZagLow和ExtDepth?
iHighest和iLowest返回的是最高/最低价的条形图的编号 ......他们看的是以shift开始的条形图,通过看ExDepth条形图 ......
终于解决了变量问题。
现在只有
( -函数 定义出乎意料
) - 不平衡的右括号...
是不是在我的代码上放了(和)?