首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Amibroker代码添加条件

向Amibroker代码添加条件
EN

Stack Overflow用户
提问于 2017-05-17 10:46:27
回答 1查看 1.6K关注 0票数 0

这是我的Amibroker代码,用于2柱形摆动图,我需要添加一个条件,如果价格在一个柱形上跌破前一个摆动低点,则将其视为两个柱形移动。我的问题是,持有最后一个摆动的低价变量来检查今天的低点。我已经用大写字母注释了问题行。我认为我所拥有的将会工作,但条件没有显示在摆动图表上。谁能告诉我我在做什么wrong.Thanks。

代码语言:javascript
复制
_SECTION_BEGIN("2 day swing");
upBar = H>Ref(H,-1);
dnBar = L<Ref(L,-1);

HighBarPrice=LowBarPrice=Null;
inLong=inShort=upCount=dnCount=fupbar=fdnbar=0;

for( i=1; i<BarCount; i++ )
   {
    if(inLong==0 AND inShort==0)
      {
       if(upBar[i])
         {
          upCount=upCount+1;
          if(upCount==2)
            {
             fupbar[i] = 1;
             inLong=1;
             dnCount=0;
            }
         }

       if(dnBar[i])
         {
          dnCount=dnCount+1;
          if(dnCount==2)
            {
             fdnbar[i] = 1;
             inShort=1;
             upCount=0;
            }
         }
    if(inLong==1)
      {
       if(dnBar[i])
         {
          dnCount=dnCount+1;
          if(L[i]<LowBarPrice) {dnCount=2;} //THIS IS THE PROBLEM
          if(dnCount==2)
            {
             fdnbar[i]=1;
             inShort=1;
             if(upBar[i])
               {
                upCount=1;
               }
             else
               {
                upCount=0;
               }
          continue;
            }
         }
       if(upBar[i]) {HighBarPrice=H[i];}
       if(upBar[i] AND NOT dnBar[i]){ dnCount=0;}
      }
    if(inShort==1)
      {
       if(upBar[i])
         {
          upCount=upCount+1;
          if(H[i]>HighBarPrice) {upCount=2;}
          if(upCount==2)
            {
             fupbar[i]=1;
             inLong=1;
             if(dnBar[i])
               {
                dnCount=1;
               }
             else
               {
                dnCount=0;
               }
          continue;
            }
      }
       if(dnBar[i]) {LowBarPrice=L[i];}// DOWN BAR IN SHORT SWING SHOULD GIVE NEW LOW
       if(dnBar[i] AND NOT upBar[i]){ upCount=0;}
      }
   }


// Swing chart drawn here 
_SECTION_END();
EN

回答 1

Stack Overflow用户

发布于 2017-06-17 00:03:41

您的LowBarPrice上没有数组索引器。此外,您可以将它初始化为null,并且它会一直保持这种状态,因为在初始化之后,您不会为它赋值。所以从技术上讲,在你的情况下,你的意思是,如果Li < null。

在循环之外编写你的条件。这将创建一个数组来保存您的价格,直到您在循环中引用它为止。

因此,例如,像这样初始化LowBarPrice:

代码语言:javascript
复制
LowBarPrice = ValueWhen(DownBar, Ref(L,-1));

此后,当您在循环中引用它时,您将获得价格。

代码语言:javascript
复制
if(L[i] < LowBarPrice[i])

这篇文章对我理解AmiBroker中的循环有很大帮助。它可能会给你的问题提供一些背景信息。与您的问题特别相关的部分位于“数组索引”部分下

http://www.amibrokerforum.com/index.php?topic=50.0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44014660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档