以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请将这段代码转化为金字塔  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=79956)

--  作者:uime
--  发布时间:2015/6/18 20:54:45
--  请将这段代码转化为金字塔
tradeblazer 
Params

        Numeric Lots(1);
        Numeric nOffset(3);
        Numeric HLength(5);
        Numeric LLength(5);
        Numeric AtrLength(0.05);
        Numeric myBarsSinceEntry(9);

Vars

        NumericSeries HHH;
        NumericSeries LLL;
        NumericSeries HHH1;
        NumericSeries LLL1;        
        NumericSeries Atr;
        Numeric myPrice;
        NumericSeries StopLine;
        NumericSeries LastPrice;
        Numeric MinPoint;


Begin

        MinPoint = MinMove*PriceScale;
        HHH = Highest(High,HLength);
        LLL = Lowest(Low,LLength);
        HHH1 = Highest(High,10);
        LLL1 = Lowest(Low,10);



        Atr = AvgTrueRange(20);


        If(MarketPosition==1)
        {
                //LLL1 = Max(LLL1,LastPrice);
                LLL1 = Max(LLL1,LLL1[1]);
                //PlotNumeric("LLL1",LLL1);

               If(BarsSinceEntry>myBarsSinceEntry || High>LastPrice+Atr[1])
                {
                        StopLine =Max(StopLine,LLL1[1] + (BarsSinceEntry)*Atr[1]*AtrLength);
                }

                PlotNumeric("多头止损:",StopLine);

                If(Low<StopLine)
                {
                        myPrice =Min(Open,StopLine) - MinPoint*nOffset;
                        Sell(Lots,myPrice);

                }               
        }
        If(MarketPosition==-1)
        {
                //HHH1 = Min(HHH1,LastPrice);
                HHH1 = Min(HHH1,HHH1[1]);
               //PlotNumeric("HHH1",HHH1);

               If(BarsSinceEntry>myBarsSinceEntry || Low<LastPrice-Atr[1])
                {
                        StopLine =Min(StopLine,HHH1[1] - (BarsSinceEntry)*Atr[1]*AtrLength);
                }
                PlotNumeric("空头止损:",StopLine);

                If(High>StopLine)
                {
                        myPrice =Max(Open,StopLine) + MinPoint*nOffset;
                       BuyToCover(Lots,myPrice);

                }
        }      


        If(MarketPosition<>1)
        {
                If(High>HHH[1])
                {
                        myPrice =Max(Open,HHH[1]);
                        Buy(Lots,myPrice +MinPoint*nOffset);
                        LastPrice = myPrice;
                        StopLine = myPrice -Atr[1]*1.5;
                        Return;
                }
        }
        If(MarketPosition<>-1)
        {
                If(Low<LLL[1])
                {
                        myPrice = Min(Open,LLL[1]);
                        SellShort(Lots,myPrice- MinPoint*nOffset);
                        LastPrice = myPrice;
                        StopLine = myPrice +Atr[1]*1.5;
                        Return;
                }
        }      


        If(time == 0.1510)
        {
                Sell(Lots,Open -MinPoint*nOffset);
                BuyToCover(Lots,Open +MinPoint*nOffset);
        }

End

请将其转化为金字塔代码,谢谢

--  作者:jinzhe
--  发布时间:2015/6/19 8:43:00
--  
请注释一下
--  作者:uime
--  发布时间:2015/6/21 18:05:11
--  

ATR棘轮法

     基本思想是非常简单的,我们先选定一个合理的起始价格,然后每天加某一倍数的ATR,得到一个跟踪止损点。由该方法生成的止损点不仅能随着时间的增加不断 上移而且同时也能适应市场波动性增减。与我们以前采用的由抛物转向指标得到的止损点相比,其优点在于:使用ATR Ratchet,我们能更自由的选择起始价格和增减速度。此外我们还发现基于ATR的止损点能更快更准确的反映波动性变化,从而使我们能比传统的跟踪止损 法锁定更多的利润。

  例如,当我们1ATR以上的盈利目标实现时,我们选择一个近期低点作为起始价格,然后根据我们持仓天数每天将最低价增加零点几倍的ATR。如果 我们已经持有仓位15天了,那么我们把0.05ATR乘以15天,然后将其乘积0.75ATR加到起始价位上。20 天后,我们将把1.0ATR加到最近十天的最低价上。


--  作者:jinzhe
--  发布时间:2015/6/23 8:58:36
--  
不是这个,给出上面代码的注释