• MC 跨周期 画线


    using System;
    using System.Drawing;
    using PowerLanguage.Function;
    using System.Collections;
     
    namespace PowerLanguage.Indicator
    {
        //[SameAsSymbol(true)]
        public class Mov_Avg_1_Line : IndicatorObject
        {
     
            //1小时 24    1小时 120 
     
     
     
     
            private IPlotObject h1_24;
            private IPlotObject h1_120;
            private IPlotObject h4_120;    
            private IPlotObject d1_10;
     
     
     
            ArrayList h1_list = null ;
            ArrayList h4_list = null ;
            ArrayList d1_list = null ;
     
     
     
            public Mov_Avg_1_Line(object ctx) :
                base(ctx){
     
            }
     
            protected override void Create(){
     
                h1_list = new ArrayList();
                h4_list = new ArrayList();
                d1_list = new ArrayList();
     
     
                h1_24 =
                    AddPlot(new PlotAttributes("Avg", 0, Color.Yellow,
                                               Color.Empty, 0, 0, true));
     
                            h1_120 =
                    AddPlot(new PlotAttributes("Avg", 0, Color.Cyan,
                                               Color.Empty, 0, 0, true));
     
     
                            h4_120 =
                    AddPlot(new PlotAttributes("Avg", 0, Color.Red,
                                               Color.Empty, 0, 0, true));
     
     
                                        d1_10 =
                    AddPlot(new PlotAttributes("Avg", 0, Color.Red,
                                               Color.Empty, 0, 0, true));
     
     
     
     
            }
     
            protected override void StartCalc(){
     
                h1_list.Clear();
                h4_list.Clear();
                d1_list.Clear();
     
            }
            int lasthavecal = 0 ;
            protected override void CalcBar(){
     
            DateTime dt = Bars.Time[0];
     
                int currentbars  = dt.Day*10000+ dt.Hour*100 + dt.Minute ;
     
     
                if(lasthavecal == currentbars) return ;
     
                lasthavecal = currentbars ;
     
            cal_h1();
            cal_h4();
            cal_d1();
     
     
     
            }
     
     
     
     
            private void cal_h1(){
     
     
     
     
                DateTime dt = Bars.Time[0];
                DateTime lastdt = Bars.Time[1];
     
     
     
                int currentx =  dt.Day*100+ dt.Hour;
                int lastx =  lastdt.Day*100+ lastdt.Hour;
     
                    if(currentx != lastx)
                    h1_list.Add(Bars.Close[1]);
     
     
                    Double value_h1 = MyAvg.Avg(h1_list,24);
                    if(value_h1 > 0 )
                    h1_24.Set(value_h1);
     
                    Double value_h1_120 = MyAvg.Avg(h1_list,120);
                    if(value_h1_120 > 0 ){
     
                        h1_120.Set(value_h1_120);
                    }
     
            }
     
                private void cal_h4(){
     
     
     
     
                DateTime dt = Bars.Time[0];
                DateTime lastdt = Bars.Time[1];
     
     
     
                int currentx =  dt.Day*100+ dt.Hour;
                int lastx =  lastdt.Day*100+ lastdt.Hour;
     
                    if(currentx != lastx  && (dt.Hour==0 || dt.Hour==4 || dt.Hour==8 || dt.Hour==12 || dt.Hour==16 || dt.Hour==20))
                    h4_list.Add(Bars.Close[1]);
     
     
     
                    Double value_h4_120 = MyAvg.Avg(h4_list,120);
                    if(value_h4_120 > 0 ){
     
                        h4_120.Set(value_h4_120);
                    }
     
            }
     
     
            int current_d1 = 0 ;
            private void cal_d1(){
     
     
     
     
                DateTime dt = Bars.Time[0];
                DateTime lastdt = Bars.Time[1];
     
     
     
                int currentx =  dt.Day;
                int lastx =  lastdt.Day;
     
     
     
                        if(current_d1 != dt.Day)
                        {
                            d1_list.Add(Bars.Close[0]);
     
                            current_d1 = dt.Day;
                        }else{
                            //干掉 最后一条
     
                                d1_list.RemoveAt(d1_list.Count-1); 
                                d1_list.Add(Bars.Close[0]);
     
                        List
     
     
     
     
     
    //Output.WriteLine("  currend1=   "+current_d1+"  day=>"+dt.Day);
     
                    Double value_d1_10 = MyAvg.Avg(d1_list,10);
                    if(value_d1_10 > 0 ){
     
                        d1_10.Set(value_d1_10);
                    }
     
            }
     
     
        }
    }
  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/aliblogs/p/5493813.html
Copyright © 2020-2023  润新知