package trend import ( "github.com/banbox/banbot/config" "github.com/banbox/banbot/core" "github.com/banbox/banbot/strat" ta "github.com/banbox/banta" ) /* 视频号:六叔大师兄:散户用一个战法,当天100%不亏 2025/01/25 5日上穿10日买入;5日上穿20日加仓; 5日向下减仓,5日下穿10日平仓; 反之做空亦然; 去掉5日向下减仓,更好一点。 5,10,20适合8h;目前10,20,40适合4h 固定50品种在23年持平 滚动50品种在23年小亏 */ func MaMulti(p *config.RunPolicyConfig) *strat.TradeStrat { return &strat.TradeStrat{ WarmupNum: 100, OnBar: func(s *strat.StratJob) { e := s.Env ma5 := ta.SMA(e.Close, 10) ma10 := ta.SMA(e.Close, 20) ma20 := ta.SMA(e.Close, 40) ma5X10 := ma5.Cross(ma10) ma5x20 := ma5.Cross(ma20) if len(s.LongOrders) == 1 && ma5x20 == 1 { s.OpenOrder(&strat.EnterReq{Tag: "l2", CostRate: 0.5}) } if len(s.LongOrders) > 0 { if ma5X10 == -1 { s.CloseOrders(&strat.ExitReq{Tag: "exit", Dirt: core.OdDirtLong}) } } else if ma5X10 == 1 { s.OpenOrder(&strat.EnterReq{Tag: "l1", CostRate: 0.5}) } if len(s.ShortOrders) == 1 && ma5x20 == -1 { s.OpenOrder(&strat.EnterReq{Tag: "s2", Short: true, CostRate: 0.5}) } if len(s.ShortOrders) > 0 { if ma5X10 == 1 { s.CloseOrders(&strat.ExitReq{Tag: "exitS", Dirt: core.OdDirtShort}) } } else if ma5X10 == -1 { s.OpenOrder(&strat.EnterReq{Tag: "s1", Short: true, CostRate: 0.5}) } }, } }