[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 326 1...319320321322323324325326327328329330331332333...432 新评论 Viktar Dzemikhau 2013.05.06 20:20 #3251 我不是一个指标爱好者,但我决定检查一件事。专家顾问应该分别在上层RSI 指标的价格买入和在下层指标的价格卖出。只有当价格已经高于RSI 指标的上边界 时,那么买入应该高于这个边界,低于这个边界的值+从边界往上缩进的某个值(在代码中我只指定了一个数字0.1),对于销售,则相反。我是这样做的。外部参数。extern string ___H1 = " __________ Параметры RSI _________ "; extern int i_RSITF = 5, i_RSIPeriod = 21, i_RSIApplied = PRICE_CLOSE;extern double i_RSIToUpLimit = 55, // Верхняя граница RSI i_RSIToDnLimit = 45; // Нижняя граница RSI接收信号的函数和RSI值本身的代码:( 这里的0.1 是买入或卖出范围的保证金公差)//+-------------------------------------------------------------------------------------+ //| Получаем RSI с заданными параметрами | //+-------------------------------------------------------------------------------------+ double GetRSI(int RSIIndex) { return (iRSI(NULL, i_RSITF, i_RSIPeriod, i_RSIApplied, RSIIndex)); } //+-------------------------------------------------------------------------------------+ //| Получаем общий торговый сигнал | //+-------------------------------------------------------------------------------------+ int GetGeneralSignal() { if (FindOrders() > 0) return (SIGNAL_NO); // if (GetRSI(PRICE_CLOSE, 0) > GetRSI(PRICE_CLOSE, 1)) if (GetRSI(0) > i_RSIToUpLimit) if (GetRSI(0) < (i_RSIToUpLimit + 0.1)) return (SIGNAL_BUY); // Запускаем функцию открытия покупки if (GetRSI(0) < i_RSIToDnLimit) if (GetRSI(0) > (i_RSIToDnLimit - 0.1)) return (SIGNAL_SELL); // Запускаем функцию открытия продаж return (SIGNAL_NO); }有时EA从非常高的水平开出订单,有时高得多(用于购买),有时低得多(用于出售)。为什么?该算法是初级的。 Youri Lazurenko 2013.05.07 04:40 #3252 大家好。我有一个问题。我给自己买了一台复印机/**/,在处理几个账户的时候是很好的,很方便的东西。但问题是,当你并行运行任何其他程序(视频、游戏,只是地图)时,扬声器中不断传出噼啪声。是否有可能消除该问题(异响)?提前感谢。 Merck 2013.05.07 04:46 #3253 我试图写一个基于RSI的简单指标(类似的是RandomIndicatorSignals mq4)。我试图写一个基于RSI的简单指标(对于这个指标的类似物RandomIndicatorSignals.mq4来自MQL4语言的傻瓜文章。自定义指标(第一部分)(https://www.mql5.com/ru/articles/1500)。这个想法很简单,如果RSI画出一个顶部或谷底,它就在图表上画出一个箭头。它似乎是好的,但在我看来,每根蜡烛的RSI值缓冲区没有被填满,因为这个原因,它不能工作。以下是代码。//+------------------------------------------------------------------+ //| RSI+Arrow.mq4 | //| _______ | //| | //+------------------------------------------------------------------+ #property copyright "_______" #property link "_________" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Crimson #property indicator_color2 RoyalBlue //---- input parameters extern int barsToProcess=500; //---- buffers double ExtMapBuffer1[], ExtMapBuffer2[], RSIBuffer3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(3); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,236); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,238); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(1,0.0); SetIndexBuffer (2,RSIBuffer3); // для информации о значениях буфера SetIndexLabel (2,"RSIBuffer3"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //расчет индикатора на последних барах int limit,i; int counted_bars=IndicatorCounted(); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; if(limit>barsToProcess) limit=barsToProcess; //заполняем буфер RSI значениями for(i=0; i<limit; i++) if(i>=1) { RSIBuffer3[i]=iRSI(0,0,8,PRICE_CLOSE,0); } //проводим сравнения for(i=0; i<limit; i++) if(i>=1) { if(RSIBuffer3[i+2]-RSIBuffer3[i+1]>0 && RSIBuffer3[i+1]-RSIBuffer3[i]>0) // условия выставления стрелки /* так тоже не работает if(RSIBuffer3[i+2]>=RSIBuffer3[i+1] && RSIBuffer3[i+1]<=RSIBuffer3[i]) */ ExtMapBuffer2[i]=Low[i]-5*Point; else ExtMapBuffer2[i]=0.0; if(RSIBuffer3[i+2]-RSIBuffer3[i+1]<0 && RSIBuffer3[i+1]-RSIBuffer3[i]<0) // условия выставления стрелки /* так тоже не работает if(RSIBuffer3[i+2]<=RSIBuffer3[i+1] && RSIBuffer3[i+1]>=RSIBuffer3[i]) */ ExtMapBuffer1[i]=High[i]+5*Point; else ExtMapBuffer1[i]=0.0; } return(0); } //+------------------------------------------------------------------+ PapaYozh 2013.05.07 04:58 #3254 Merincool: 我试图写一个基于RSI的简单指标(类似的是RandomIndicatorSignals mq4)。 我试图写一个基于RSI的简单指标(对于这个指标的类似物RandomIndicatorSignals.mq4来自MQL4语言的傻瓜文章。自定义指标(第一部分)(https://www.mql5.com/ru/articles/1500)。 这个想法很简单,如果RSI画出一个顶部或谷底,它就在图表上画出一个箭头。 它似乎是好的,但在我看来,每根蜡烛的RSI值缓冲区没有被填满,因为这个原因,它不能工作。以下是代码。 你在循环中访问未计算的指标值。 变化for(i=0; i<limit; i++) 至for(i=limit-1; i>=0; i--) [删除] 2013.05.07 05:11 #3255 PapaYozh:你正在循环返回到未计算的指标值。变化至 谢谢你,它给了我一个想法!然而,我想了解"物理意义":)正如我们的物理学家曾经说过的那样我自己有一个问题:2个 "稍微 "不同但本质上相同的行动代码。删除所有待处理订单1)不能正常工作 - 只有一个订单被删除void start() { bool result; int cmd,total,OT; total=OrdersTotal(); for(int i=0; i<total; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { cmd=OrderType(); OT=OrderTicket(); if(cmd>1) // !=OP_BUY && cmd!=OP_SELL) { result=OrderDelete(OT); } } } //end FOR }2) 工作正常--删除所有的人void start() { string msg="Удалить все отложенные ордера? "; // if (MessageBox(msg,title,MB_YESNO|MB_ICONQUESTION)!=IDYES) return; for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderType()>1) OrderDelete(OrderTicket()); } }请解释:"在这个循环中,你访问指标的未计算值 " 的含义。 Merck 2013.05.07 05:17 #3256 PapaYozh: 你正在循环返回到未计算的指标值。 变化 至 你能把它拼出来吗? 为什么? 这样我以后就不会再犯任何错误了。 Merck 2013.05.07 05:21 #3257 PapaYozh: 你正在循环返回到未计算的指标值。 变化 至 仍然不能工作,RSIBuffer3只在悬停在一个柱子上时显示最后一个柱子的RSI值。 [删除] 2013.05.07 05:33 #3258 Merincool: 但还是不行,RSIBuffer3只在悬停在柱子上时显示最后一个柱子的RSI值。你的第5个参数是0--也就是最后一小节! 让它变成这样。 RSIBuffer3[i]=iRSI(0,0,8,PRICE_CLOSE,i); 摘自文件。 DoubleiRSI( 字符串, int timeframe, int period, int applied_price, int shift) 计算相对强度指数并返回其值。 参数。 标志 - 符号,其数据应被用于计算指标。 NULL表示当前的符号。 时限 - 时间框架。它可以是Timeframe 的任何一个枚举值。0表示当前图表的时间框架。 时间 - 计算的时期数。 应用价格 - 应用价格。它可以是应用价格 枚举值中的任何一个。 移位 - 从指标缓冲区中提取的数值的索引(相对于当前条形图而言,在给定的时间段之前移动)。 如何编码? 如何将指标代码添加到 expertadvisor 代码中? 编码帮助 Merck 2013.05.07 05:34 #3259 PapaYozh: 你正在循环返回到未计算的指标值。 变化 至 我还想,根据你的逻辑,该工具应该从极限和0条计算RSI,但从最后还是从开始计算RSI有区别吗? 它应该在一个给定的范围内计算每个条形的RSI,并将该值放入一个缓冲区(我是指一个数组),然后将数组中的三个连续值相互比较。或者说不是吗? Merck 2013.05.07 05:35 #3260 amurik61: 你的第5个参数是0--也就是最后一小节! 让它变成这样。摘自文件。 DoubleiRSI( 字符串, int timeframe, int period, int applied_price, int shift) 计算相对强度指数并返回其值。 参数。 标志 - 符号,其数据应被用于计算指标。 NULL表示当前的符号。 时限 - 时间框架。它可以是Timeframe 的任何一个枚举值。0表示当前图表的时间框架。 时间 - 计算的时期数。 应用价格 - 应用价格。它可以是应用价格 枚举值中的任何一个。 移位 - 从指标缓冲区中提取的数值的索引(相对于当前条形图而言,在给定的时间之前进行移动)。 我会试一试的,谢谢 1...319320321322323324325326327328329330331332333...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我不是一个指标爱好者,但我决定检查一件事。专家顾问应该分别在上层RSI 指标的价格买入和在下层指标的价格卖出。只有当价格已经高于RSI 指标的上边界 时,那么买入应该高于这个边界,低于这个边界的值+从边界往上缩进的某个值(在代码中我只指定了一个数字0.1),对于销售,则相反。
我是这样做的。
外部参数。
接收信号的函数和RSI值本身的代码:( 这里的0.1 是买入或卖出范围的保证金公差)
有时EA从非常高的水平开出订单,有时高得多(用于购买),有时低得多(用于出售)。为什么?该算法是初级的。
我试图写一个基于RSI的简单指标(类似的是RandomIndicatorSignals mq4)。
我试图写一个基于RSI的简单指标(对于这个指标的类似物RandomIndicatorSignals.mq4来自MQL4语言的傻瓜文章。自定义指标(第一部分)(https://www.mql5.com/ru/articles/1500)。
这个想法很简单,如果RSI画出一个顶部或谷底,它就在图表上画出一个箭头。
它似乎是好的,但在我看来,每根蜡烛的RSI值缓冲区没有被填满,因为这个原因,它不能工作。以下是代码。
我试图写一个基于RSI的简单指标(类似的是RandomIndicatorSignals mq4)。
我试图写一个基于RSI的简单指标(对于这个指标的类似物RandomIndicatorSignals.mq4来自MQL4语言的傻瓜文章。自定义指标(第一部分)(https://www.mql5.com/ru/articles/1500)。
这个想法很简单,如果RSI画出一个顶部或谷底,它就在图表上画出一个箭头。
它似乎是好的,但在我看来,每根蜡烛的RSI值缓冲区没有被填满,因为这个原因,它不能工作。以下是代码。
你在循环中访问未计算的指标值。
变化
至
你正在循环返回到未计算的指标值。
变化
至
谢谢你,它给了我一个想法!然而,我想了解"物理意义":)正如我们的物理学家曾经说过的那样
我自己有一个问题:2个 "稍微 "不同但本质上相同的行动代码。删除所有待处理订单
1)不能正常工作 - 只有一个订单被删除
2) 工作正常--删除所有的人
请解释:"在这个循环中,你访问指标的未计算值 " 的含义。
你正在循环返回到未计算的指标值。
变化
至
你能把它拼出来吗? 为什么? 这样我以后就不会再犯任何错误了。
你正在循环返回到未计算的指标值。
变化
至
仍然不能工作,RSIBuffer3只在悬停在一个柱子上时显示最后一个柱子的RSI值。
但还是不行,RSIBuffer3只在悬停在柱子上时显示最后一个柱子的RSI值。
你的第5个参数是0--也就是最后一小节!
让它变成这样。
摘自文件。
你正在循环返回到未计算的指标值。
变化
至
我还想,根据你的逻辑,该工具应该从极限和0条计算RSI,但从最后还是从开始计算RSI有区别吗? 它应该在一个给定的范围内计算每个条形的RSI,并将该值放入一个缓冲区(我是指一个数组),然后将数组中的三个连续值相互比较。或者说不是吗?
你的第5个参数是0--也就是最后一小节!
让它变成这样。
摘自文件。
我会试一试的,谢谢