command

package
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2023 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Application = "stock"
	MinVersion  = "0.0.1" // 版本号

)
View Source
var CmdBackTesting = &cmder.Command{
	Use:   "backtesting",
	Short: "回测",
	Run: func(cmd *cmder.Command, args []string) {
		securityCode = strings.TrimSpace(securityCode)
		securityCode = proto.CorrectSecurityCode(securityCode)
		if len(securityCode) > 0 {
			tracker.CheckStrategy(strategyCode, securityCode)
		} else {
			tracker.BackTesting(days, topN)
		}
	},
}

CmdBackTesting 回测

View Source
var CmdBestIP = &cmder.Command{
	Use:   "bestip",
	Short: "检测服务器网速",
	Run: func(cmd *cmder.Command, args []string) {
		quotes.BestIP()
	},
}

CmdBestIP 检测服务器地址

View Source
var CmdConfig = &cmder.Command{
	Use:   "config",
	Short: "显示配置信息",
	Run: func(cmd *cmder.Command, args []string) {
		data, err := yaml.Marshal(config.GlobalConfig)
		if err != nil {
			fmt.Println(err)
		} else {
			fmt.Println(api.Bytes2String(data))
		}
	},
}

CmdConfig 显示配置信息

View Source
var CmdPrint = &cmder.Command{
	Use:     "print",
	Example: Application + " print sh000001",
	Short:   "打印K线概要",

	Run: func(cmd *cmder.Command, args []string) {
		tradeDate := cache.DefaultCanReadDate()
		if len(flagDate.Value) > 0 {
			tradeDate = trading.FixTradeDate(flagDate.Value)
		}
		keywords := ""
		code := ""
		for _, m := range printModules {
			if len(m.Value) > 0 {
				keywords = m.Name
				code = m.Value
				break
			}
		}
		if len(keywords) > 0 {
			plugins := cache.PluginsWithName(cache.PluginMaskFeature, keywords)
			if len(plugins) == 0 {
				fmt.Printf("没有找到名字是[%s]的数据插件\n", keywords)
			} else {
				handlePrintData(code, tradeDate, plugins[0])
			}
		} else {
			if len(args) != 1 {
				fmt.Println(cmd.Help())
				return
			}

			securityCode := args[0]
			printKline(securityCode, tradeDate)
		}
	},
}

CmdPrint 打印命令

View Source
var CmdRepair = &cmder.Command{
	Use:     "repair",
	Example: Application + " repair --all",

	Args: func(cmd *cmder.Command, args []string) error {
		return nil
	},
	Short: "修复股市数据",
	Long:  `修复股市数据`,
	Run: func(cmd *cmder.Command, args []string) {
		beginDate := trading.FixTradeDate(flagStartDate.Value)
		endDate := cache.DefaultCanReadDate()
		if len(flagEndDate.Value) > 0 {
			endDate = trading.FixTradeDate(flagEndDate.Value)
		}
		dates := trading.TradeRange(beginDate, endDate)
		count := len(dates)
		fmt.Printf("修复数据: %s => %s"+strings.Repeat("\r\n", 2), dates[0], dates[count-1])
		base.UpdateTickStartDate(dates[0])
		if flagAll.Value {
			handleRepairAll(dates)
		} else if flagBaseData.Value {
			keywords := []string{}
			for _, m := range repairBases {
				if m.Value {
					keywords = append(keywords, m.Name)
					break
				}
			}
			if len(keywords) == 0 {
				handleRepairAllDataSets(dates)
			} else {
				plugins := cache.PluginsWithName(cache.PluginMaskBaseData, keywords...)
				if len(plugins) == 0 {
					fmt.Printf("没有找到名字是[%s]的数据插件\n", strings.Join(keywords, ","))
				} else {
					handleRepairDataSetsWithPlugins(dates, plugins)
				}
			}
		} else if flagFeatures.Value {
			keywords := []string{}
			for _, m := range repairFeatures {
				if m.Value {
					keywords = append(keywords, m.Name)
					break
				}
			}
			if len(keywords) == 0 {
				handleRepairAllFeatures(dates)
			} else {
				plugins := cache.PluginsWithName(cache.PluginMaskFeature, keywords...)
				if len(plugins) == 0 {
					fmt.Printf("没有找到名字是[%s]的数据插件\n", strings.Join(keywords, ","))
				} else {
					handleRepairFeaturesWithPlugins(dates, plugins)
				}
			}
		} else {
			fmt.Println("Error: 非全部修复, 必须携带--features或--base")
			_ = cmd.Usage()
		}

	},
}

CmdRepair 补登历史数据

View Source
var CmdRules = &cmder.Command{
	Use:   "rules",
	Short: "规则",
	Args: func(cmd *cmder.Command, args []string) error {
		return nil
	},

	PreRun: func(cmd *cmder.Command, args []string) {

	},
	Run: func(cmd *cmder.Command, args []string) {
		rules.PrintRuleList()
	},
}

CmdRules 规则

View Source
var CmdSafes = &cmder.Command{
	Use:     "safes",
	Example: Application + " safes --code=sh000001 --type=1",
	Short:   "黑白名单",
	Run: func(cmd *cmder.Command, args []string) {
		if len(safesSecurityCode) == 0 {
			fmt.Println("证券代码不能为空")
			return
		}
		trader.AddCodeToBlackList(safesSecurityCode, trader.SecureType(safesSecureType))
	},
}

CmdSafes 安全类-黑白名单

View Source
var CmdService = &cobra.Command{
	Use:     "service",
	Example: Application + " service install | uninstall | remove | start | stop | list | status",
	Short:   "守护进程/服务",

	Run: func(cmd *cobra.Command, args []string) {
		if len(args) > 0 {
			serviceCommand = args[0]
		}

		daemonKind := daemon.SystemDaemon
		serviceName := Application
		switch runtime.GOOS {
		case "darwin":
			daemonKind = daemon.UserAgent
		case "windows":
			serviceName = "Quant1X-Stock"
		}
		srv, err := daemon.New(serviceName, serviceDescription, daemonKind)
		if err != nil {
			logger.Errorf("Error: %+v", err)
			fmt.Println("Error: ", err)
			os.Exit(1)
		}
		service := &Service{srv}
		replacer := strings.NewReplacer("${ROOT_PATH}", cache.GetRootPath(), "${LOG_PATH}", cache.GetLoggerPath())
		properties := replacer.Replace(propertyList)
		_ = service.daemon.SetTemplate(properties)
		status, err := service.Manage()
		if err != nil {
			logger.Errorf("Error: %+v", err)
			fmt.Println(status, "\nError: ", err)
			os.Exit(1)
		}
		fmt.Println(status)
	},
}

CmdService 守护进程

View Source
var CmdTools = &cmder.Command{
	Use:     "tool",
	Example: Application + " tool --help",
	Short:   "工具",
	Run: func(cmd *cmder.Command, args []string) {

	},
}
View Source
var CmdUpdate = &cmder.Command{
	Use:     "update",
	Example: Application + " update --all",

	Args: func(cmd *cmder.Command, args []string) error {
		return nil
	},
	Short: "更新股市数据",
	Long:  `更新股市数据`,
	Run: func(cmd *cmder.Command, args []string) {
		fmt.Println()
		currentDate := cache.DefaultCanUpdateDate()
		cacheDate, featureDate := cache.CorrectDate(currentDate)
		if flagAll.Value {

			handleUpdateAll(cacheDate, featureDate)
		} else if flagBaseData.Value {

			keywords := []string{}
			for _, m := range updateBases {
				if m.Value {
					keywords = append(keywords, m.Name)
					break
				}
			}
			handleUpdateBaseDataWithKeywords(cacheDate, featureDate, keywords...)
		} else if flagFeatures.Value {
			keywords := []string{}
			for _, m := range updateFeatures {
				if m.Value {
					keywords = append(keywords, m.Name)
					break
				}
			}
			handleUpdateFeaturesWithKeywords(cacheDate, featureDate, keywords...)
		} else {
			fmt.Println("Error: 非全部更新, 必须携带--features或--base")
			_ = cmd.Usage()
		}
	},
}

CmdUpdate 更新数据

View Source
var CmdVersion = &cmder.Command{
	Use:   "version",
	Short: "显示版本号",
	Run: func(cmd *cmder.Command, args []string) {
		fmt.Println(MinVersion)
	},
}

CmdVersion 版本

Functions

func GlobalFlags added in v0.7.9

func GlobalFlags() *cmder.Command

GlobalFlags engine支持的全部命令

func InitCommands added in v1.0.2

func InitCommands()

InitCommands 公开初始化函数

func UpdateApplicationName added in v0.2.3

func UpdateApplicationName(name string)

UpdateApplicationName 更新应用(Application)名称

func UpdateApplicationVersion added in v0.1.5

func UpdateApplicationVersion(v string)

UpdateApplicationVersion 更新版本号

Types

type Command added in v0.1.3

type Command = cmder.Command

type Service added in v0.4.4

type Service struct {
	// contains filtered or unexported fields
}

Service is the daemon service struct

func (*Service) Manage added in v0.4.4

func (service *Service) Manage() (string, error)

Manage by daemon commands or run the daemon

func (*Service) Run added in v0.4.4

func (service *Service) Run()

func (*Service) Start added in v0.4.4

func (service *Service) Start()

func (*Service) Stop added in v0.4.4

func (service *Service) Stop()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL