42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
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})
|
|
}
|