如何编码? - 页 270 1...263264265266267268269270271272273274275276277...347 新评论 lonerunner 2011.09.07 20:53 #2691 IndicatorCounted和保持指标缓冲区 的同步。 你好。 我的问题是关于在自定义指标中滑动缓冲区。我在另一个论坛上问过,但没有结果。 比如说 代码。 #define MAX_LOOK_BACK 5 #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_color1 DodgerBlue #property indicator_separate_window double rsiBuf[]; int start() { int limit; int counted_bars = IndicatorCounted(); //---- check for possible errors if(counted_bars < 0) return(-1); //---- the last counted bar will be recounted if(counted_bars > 0) counted_bars--; limit=Bars-counted_bars; //---- main loop Print("indicator limit: ", limit); if(MAX_LOOK_BACK < limit) limit = MAX_LOOK_BACK; //Calculate from right to left for(int i = 0; i < limit; i++) { rsiBuf = iRSI(Symbol(), NULL, 14, PRICE_CLOSE, i); } } 当指标运行时,将计算最近5条的最新RSI值。(为了方便测试,我设置了一个MAXLOOK_BACK的最大值),例如在limit==2的情况下(在我的测试中,当在EA中通过iCustom调用时,limit==2经常发生),那么它将计算bar 0和bar 1的值并分别写入RSI[0]和RSI[1],而不会触及缓冲区的其他部分。我见过的每个自定义指标都是这样写的。如果limit < MAX_LOOK_BACK,我们是不是应该滑动缓冲区? 因为它覆盖了RSI[0]和RSI[1],但这些元素的前值应该在RSI[2]和RSI[3]中,我说得对吗? 为了形象化: Tick=0 AND limit = 5 ==> RSI[0] = 33.33 RSI[1] =44,44 RSI[2] =55,55 RSI[3] =66,66 RSI[4] = 77.77 现在假设最新的2个RSI值是88,88和99,99,数组将看起来像下面。 Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2] =55,55 RSI[3] =66,66 RSI[4] = 77.77 但不应该是这样。 Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2] =33,33 RSI[3] =44,44 RSI[4] = 55.55 当2个新的柱状体出现时,我们不应该把以前的柱状体数值滑动2下吗? 以前为什么所有的指标都是这样写的,没有滑动的数值。为什么他们能正确地画出趋势线。 How to code? RSI mtf array 能不能用mt4编写出这样的曲线EMA(MA(C,N),M)? mezarashii 2011.09.09 07:18 #2692 我正在开发一个EA,它使用Keltner band来退出一个头寸(盈利和亏损),但是当我用2手平均下来时,EA忽略了第一个入口。除了用新的图表进场外,还有什么办法解决这个问题吗?谢谢 附加的文件: weekof72311eur.gif 39 kb Kale 2011.09.09 07:23 #2693 mezarashii: 我正在开发一个EA,它使用Keltner band来出仓(盈利和亏损),但无论何时我用2手平均下来,EA都会忽略第一个入口。除了用新的图表进场外,还有什么办法解决这个问题吗?谢谢 在这里发布EA。 mezarashii 2011.09.12 16:02 #2694 编码员还没有给我源代码,我希望这本身会很有用。如果有任何反馈,我们将非常感激。 附加的文件: keltnerexitv2.ex4 11 kb sakurai98 2011.09.12 18:30 #2695 有条件删除 待定 我正在寻找一个有条件删除的脚本或代码。 基本上我希望能够执行。 如果 Ask 是 200MA H1 保持任何挂单在200MA以下开放/存活。 有什么想法吗? Georgebaker 2011.09.13 13:38 #2696 zoom30 2011.09.14 14:49 #2697 [删除] 2011.09.16 01:50 #2698 同时获得10个货币对的每周开盘价 你好,我是MT4的新手。我试图通过编写一个脚本来自动化我的技术,同时获取10个货币对的周开盘价。我无法使用单一的EA或脚本来逐一访问周线图。谁能告诉我什么是最好的方法?非常感谢 ..... Kale 2011.09.16 10:39 #2699 novalight: 你好,我是MT4的新手。我试图通过编写一个脚本来自动化我的技术,同时访问10个货币对的每周开盘价。我不能使用单一的EA或脚本来逐一访问周线图。谁能告诉我什么是最好的方法?非常感谢 ..... 你好。 你需要结合iOpen功能。 例如,假设你想在评论中显示gbpusd、eurusd和usdjpy的公开价格 那么代码片段会是这样的。 double openPair1 = iOpen("EURUSD",PERIOD_W1,0); double openPair2 = iOpen("GBPUSD",PERIOD_W1,0); double openPair3 = iOpen("USDJPY",PERIOD_W1,0); Comment("EURUSD weekly open:"+openPair1+nGBPUSD每周开盘。"+openPair1+"nUSDJPY每周开盘。"+openPair1)。 MrPip 2011.09.17 20:36 #2700 我更喜欢把配对作为输入,同时还有两个额外的输入。 前缀和后缀的输入避免了经纪人在基本配对名称上添加东西时的麻烦。 extern string pair_preffix = ""; extern string pair_suffix = ""; //为IBFX迷你账户输入m extern string pair1 = "EURUSD; extern string pair2 = "GBPUSD"; extern string pair3 = "USDJPY"; 字符串 myPair1, myPair2, myPair3; int init() { myPair1 = pair_prefix + pair1 + pair_suffix; myPair2 = pair_prefix + pair2 + pair_suffix; myPair3 = pair_prefix + pair3 + pair_suffix; 返回(0)。 } int start() { double openPair1 = iOpen(myPair1, PERIOD_W1,0); double openPair2 = iOpen(myPair2, PERIOD_W1,0); double openPair3 = iOpen(myPair3, PERIOD_W1,0); 评论(pair1+"每周开盘。"+openPair1+"/n" + pair2 + " 每周开盘。"+openPair2+"\n" + pair3 " 每周开盘。"+openPair3)。 } 当然,当使用10个货币对时,我会使用数组来做这个。 Robert Hill aka MrPip How to code? 编码帮助 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. 1...263264265266267268269270271272273274275276277...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
IndicatorCounted和保持指标缓冲区 的同步。
你好。
我的问题是关于在自定义指标中滑动缓冲区。我在另一个论坛上问过,但没有结果。
比如说
代码。
#define MAX_LOOK_BACK 5
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_color1 DodgerBlue
#property indicator_separate_window
double rsiBuf[];
int start()
{
int limit;
int counted_bars = IndicatorCounted();
//---- check for possible errors
if(counted_bars < 0)
return(-1);
//---- the last counted bar will be recounted
if(counted_bars > 0)
counted_bars--;
limit=Bars-counted_bars;
//---- main loop
Print("indicator limit: ", limit);
if(MAX_LOOK_BACK < limit)
limit = MAX_LOOK_BACK;
//Calculate from right to left
for(int i = 0; i < limit; i++)
{
rsiBuf = iRSI(Symbol(), NULL, 14, PRICE_CLOSE, i);
}
}当指标运行时,将计算最近5条的最新RSI值。(为了方便测试,我设置了一个MAXLOOK_BACK的最大值),例如在limit==2的情况下(在我的测试中,当在EA中通过iCustom调用时,limit==2经常发生),那么它将计算bar 0和bar 1的值并分别写入RSI[0]和RSI[1],而不会触及缓冲区的其他部分。我见过的每个自定义指标都是这样写的。如果limit < MAX_LOOK_BACK,我们是不是应该滑动缓冲区? 因为它覆盖了RSI[0]和RSI[1],但这些元素的前值应该在RSI[2]和RSI[3]中,我说得对吗?
为了形象化:
Tick=0 AND limit = 5 ==> RSI[0] = 33.33 RSI[1] =44,44 RSI[2] =55,55 RSI[3] =66,66 RSI[4] = 77.77
现在假设最新的2个RSI值是88,88和99,99,数组将看起来像下面。
Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2] =55,55 RSI[3] =66,66 RSI[4] = 77.77
但不应该是这样。
Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2] =33,33 RSI[3] =44,44 RSI[4] = 55.55
当2个新的柱状体出现时,我们不应该把以前的柱状体数值滑动2下吗? 以前为什么所有的指标都是这样写的,没有滑动的数值。为什么他们能正确地画出趋势线。
我正在开发一个EA,它使用Keltner band来退出一个头寸(盈利和亏损),但是当我用2手平均下来时,EA忽略了第一个入口。除了用新的图表进场外,还有什么办法解决这个问题吗?谢谢![](https://c.mql5.com/forextsd/forum/90/weekof72311eur.gif)
我正在开发一个EA,它使用Keltner band来出仓(盈利和亏损),但无论何时我用2手平均下来,EA都会忽略第一个入口。除了用新的图表进场外,还有什么办法解决这个问题吗?谢谢
在这里发布EA。
编码员还没有给我源代码,我希望这本身会很有用。如果有任何反馈,我们将非常感激。
有条件删除 待定
我正在寻找一个有条件删除的脚本或代码。
基本上我希望能够执行。
如果 Ask 是 200MA H1
保持任何挂单在200MA以下开放/存活。
有什么想法吗?
同时获得10个货币对的每周开盘价
你好,我是MT4的新手。我试图通过编写一个脚本来自动化我的技术,同时获取10个货币对的周开盘价。我无法使用单一的EA或脚本来逐一访问周线图。谁能告诉我什么是最好的方法?非常感谢 .....
你好,我是MT4的新手。我试图通过编写一个脚本来自动化我的技术,同时访问10个货币对的每周开盘价。我不能使用单一的EA或脚本来逐一访问周线图。谁能告诉我什么是最好的方法?非常感谢 .....
你好。
你需要结合iOpen功能。
例如,假设你想在评论中显示gbpusd、eurusd和usdjpy的公开价格
那么代码片段会是这样的。
double openPair1 = iOpen("EURUSD",PERIOD_W1,0);
double openPair2 = iOpen("GBPUSD",PERIOD_W1,0);
double openPair3 = iOpen("USDJPY",PERIOD_W1,0);
Comment("EURUSD weekly open:"+openPair1+nGBPUSD每周开盘。"+openPair1+"nUSDJPY每周开盘。"+openPair1)。
我更喜欢把配对作为输入,同时还有两个额外的输入。
前缀和后缀的输入避免了经纪人在基本配对名称上添加东西时的麻烦。
extern string pair_preffix = "";
extern string pair_suffix = ""; //为IBFX迷你账户输入m
extern string pair1 = "EURUSD;
extern string pair2 = "GBPUSD";
extern string pair3 = "USDJPY";
字符串 myPair1, myPair2, myPair3;
int init()
{
myPair1 = pair_prefix + pair1 + pair_suffix;
myPair2 = pair_prefix + pair2 + pair_suffix;
myPair3 = pair_prefix + pair3 + pair_suffix;
返回(0)。
}
int start()
{
double openPair1 = iOpen(myPair1, PERIOD_W1,0);
double openPair2 = iOpen(myPair2, PERIOD_W1,0);
double openPair3 = iOpen(myPair3, PERIOD_W1,0);
评论(pair1+"每周开盘。"+openPair1+"/n" + pair2 + " 每周开盘。"+openPair2+"\n" + pair3 " 每周开盘。"+openPair3)。
}
当然,当使用10个货币对时,我会使用数组来做这个。
Robert Hill aka MrPip