博舍

同花顺股票软件官方下载 ai智能盯盘下载

同花顺股票软件官方下载

投资者关系|关于同花顺|股票软件|法律声明|运营许可|内容合作|联系我们|友情链接|网友意见箱|招聘英才

Copyright©HithinkRoyalFlushInformationNetworkCo.,Ltd.Allrightsreserved.

浙江核新同花顺网络信息股份有限公司版权所有

联系我们发送邮件到market@myhexin.com

「Flink」工具人之智能盯盘乞丐版

    一般篮球打得越菜,就越喜欢买篮球鞋,当然工具人也不例外,看到心仪的球鞋就毫不手软,犹如像饿虎扑食,凶残无比。可是,在股市中,工具人却怂得一笔,往往在犹豫中,错过了一次又一次一夜暴富的机会。

        相信像工具人这样的韭菜有很多,所以工具人决定做一个乞丐版的“智能盯盘”来赚点小钱,来补贴球鞋的巨额支出。

    假设我们看中一只芯片股,但由于大盘行情下调,股价也一跌再跌,我们想在股价企稳后抄底。工具人判断,如果该股票在跌到12元后,最多继续下探3%,然后会迅速反弹(如果超过了3%后,还在下跌,则工具人判断失误,放弃这次机会),如果在5分钟内反弹6%,那么该股票的走势在短期内已经逆转,可以做一波短线操作了,如果时间超过5分钟,或者涨幅不到6%,说明市场的逆转意愿不强烈,后续走势不明朗,工具人也将继续装怂。

        有了策略思路后,工具人就可以开始动手了。我们就以反弹买入为例,使用Flink来实现一个乞丐版的智能盯盘策略。

        考虑到在实际使用中,用户会不断地添加、修改、删除盯盘规则,所以需要把用户策略也作为一个输入流,实时变更Flink中的用户策略数据。大致流程如下图所示:

        

首先,我们定义用户策略模型:

publicclassTrackRuleimplementsSerializable{StringruleID;StringsecurityCode;Stringexchange;publicTrackRule(finalStringruleID,finalStringsecurityCode,finalStringexchange){this.ruleID=ruleID;this.securityCode=securityCode;this.exchange=exchange;}    .....}publicclassTrackReboundRuleextendsTrackRule{privateListtrackReboundList=Lists.newArrayList();publicTrackReboundRule(finalStringruleID,finalStringsecurityCode,finalStringexchange){super(ruleID,securityCode,exchange);}    ......publicstaticclassTrackReboundimplementsSerializable{        BigDecimal basePrice;        //基础价格        BigDecimal fallChangeRate;   //下跌区间BigDecimaltenMinRiseRate;反弹涨幅publicTrackRebound(finalBigDecimalbasePrice,finalBigDecimaltenMinRiseRate,finalBigDecimalfallChangeRate){this.tenMinRiseRate=tenMinRiseRate;this.fallChangeRate=fallChangeRate;}......}}

       在这里需要缓存最新收到的用户策略数据在Flink的State中,并将实时行情流与用户策略流合并后,把股票行情与该股票对应的策略分发到同一个分区中。

//kafkasourceFlinkKafkaConsumer010 quoteConsumer = new FlinkKafkaConsumer010(rtQuoteTopic, new QuoteStreamL2Deserializer(), kafkaProperties);DataStreamquoteStream=env.addSource(quoteC);FlinkKafkaConsumer010 ruleConsumer = new FlinkKafkaConsumer010(userRuleTopic, new TrackReboundRuleDeserializer(), kafkaProperties);DataStream ruleStream = env.addSource(ruleConsumer);DataStreamquoteTrackerStream=quoteStream.filter(newFilterFunction(){@Overridepublicbooleanfilter(QuoteStreamquoteStream){//过滤非股票数据return"E".equals(quoteStream.getSecurityType());}}).connect(ruleStream).keyBy(newQuoteStreamKeySelector(),newRuleSelector()).flatMap(newQuoteTrackFunction()).assignTimestampsAndWatermarks(newBoundedOutOfOrdernessTimestampExtractor(Time.milliseconds(500L)){@OverridepubliclongextractTimestamp(QuoteTrackerquoteTracker){returnTimestampUtils.timestamp2Long(quoteTracker.getQuoteStream().getTimestamp());}).keyBy(newKeySelector(){@OverridepublicStringgetKey(finalQuoteTrackerquoteTracker)throwsException{returnStockKeyUtils.genStockKey(quoteTracker.getQuoteStream().getCode(),quoteTracker.getQuoteStream().getExchange());}});

        策略识别器,我们依然使用Flink-CEP来实现,首先第一步我们需要识别到下跌后的底部位置,然后根据底部位置计算反弹涨幅,当反弹涨幅达到预期阈值后,输出买入点位。

Patternpattern=Pattern.                begin("MarkPoint")   //下跌后的底部位置                .where(new SimpleCondition() {@Override                    public boolean filter(QuoteTracker quoteTracker) throws Exception {QuoteStreamquoteStream=quoteTracker.getQuoteStream();if(Strings.isNullOrEmpty(quoteStream.getTradePrice())||Strings.isNullOrEmpty(quoteStream.getOpenPrice())){returnfalse;}BigDecimaltradePrice=newBigDecimal(quoteStream.getTradePrice());try{if(quoteTracker.getRule()==null){returnfalse;}for(TrackReboundRule.TrackReboundrebound:quoteTracker.getRule().getTrackReboundList()){BigDecimalchangeRate=tradePrice.divide(rebound.getBasePrice(),4,RoundingMode.HALF_UP).subtract(BigDecimal.valueOf(1)).multiply(BigDecimal.valueOf(100));if(changeRate.compareTo(rebound.getTodayChangeRate().subtract(BigDecimal.valueOf(0.1)))>0&&changeRate.compareTo(rebound.getTodayChangeRate().add(BigDecimal.valueOf(0.1)))0){returntrue;}}}returnfalse;}}).within(Time.minutes(10));PatternStreampatternStream=CEP.pattern(quoteTrackerStream,pattern);SingleOutputStreamOperatorresult=patternStream.select(orderTimeoutOutput,newPatternTimeoutFunction(){@OverridepublicQuoteTrackertimeout(Mapmap,longl)throwsException{returnmap.get("MarkPoint").get(0);}},newPatternSelectFunction(){@OverridepublicAllInChanceselect(Mapmap)throwsException{AllInChanceallInChance=newAllInChance();allInChance.setBottom(map.get("MarkPoint").get(0).getQuoteStream());allInChance.setRebound(map.get("ReboundPoint").get(0).getQuoteStream());returnallInChance;}});

    反弹行情出现后,股票会持续上涨,此时识别器会不断地提醒用户,所以我们需要控制提醒次数,减少对用户不必要的干扰。

SingleOutputStreamOperator output = result.assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor(Time.milliseconds(500L)) {@OverridepubliclongextractTimestamp(finalAllInChanceallInChance){        return TimestampUtils.timestamp2Long(allInChance.getRebound().getTimestamp());}}).keyBy(new KeySelector() {@OverridepublicStringgetKey(finalAllInChancevalue)throwsException{returnStockKeyUtils.genStockKey(value.getRebound().getCode(),value.getRebound().getExchange());}}).timeWindow(Time.of(10, TimeUnit.MINUTES)).reduce(new ReduceFunction() {@OverridepublicAllInChancereduce(finalAllInChancevalue1,finalAllInChancevalue2)throwsException{returnvalue1;    }});output.print();

    智能盯盘乞丐版大致完成了,是国王还是乞丐,拉出来溜溜!

    工具人订阅了一只股票,股票名称:顺丰控股,股票代码:002352

结果如下

【002352】底部价格:[64.43],时间:[20210413101215000],买入价格:[65.06],时间:[20210413102112000]【002352】底部价格:[64.14],时间:[20210413132727000],买入价格:[64.76],时间:[20210413132909000]

对应当日分时走势:

        事实证明,智能盯盘确实能帮助我们散户在多变的市场中,寻找到不错的机会。大鱼围猎吃小鱼,小鱼埋伏吃虾米,如今虾米有了智能盯盘,也能喝点鲜鱼汤了。

工资低,房租高,咖啡喝不起!

炒股票,用盯盘,首付能凑齐!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇