package com import "github.com/banbox/banta" /* IchimokuCloud sml: 9, mid: 26, big: 52, disp: 26 return [smlMa, midMa, spanA, spanB] */ func IchimokuCloud(e *banta.BarEnv, sml, mid, big, disp int) *banta.Series { res := e.Close.To("_ichimokuCld", big*100000+mid*1000+disp*10+sml) if res.Cached() { return res } // earlier h := e.High.Back(disp - 1) l := e.Low.Back(disp - 1) hhSml := banta.Highest(h, sml).Get(0) llSml := banta.Lowest(l, sml).Get(0) hhMid := banta.Highest(h, mid).Get(0) llMid := banta.Lowest(l, mid).Get(0) hhBig := banta.Highest(h, big).Get(0) llBig := banta.Lowest(l, big).Get(0) smlMa := (hhSml + llSml) / 2 midMa := (hhMid + llMid) / 2 bigMa := (hhBig + llBig) / 2 spanA := (smlMa + midMa) / 2 // Current h, l = e.High, e.Low hhSml = banta.Highest(h, sml).Get(0) llSml = banta.Lowest(l, sml).Get(0) hhMid = banta.Highest(h, mid).Get(0) llMid = banta.Lowest(l, mid).Get(0) smlMa2 := (hhSml + llSml) / 2 midMa2 := (hhMid + llMid) / 2 return res.Append([]float64{smlMa2, midMa2, spanA, bigMa}) }