同花顺神奇九转指标计算公式可以参考:https://www.stockapi.com.cn
@Slf4j@ServicepublicclassNineTurnServiceImplextendsStockServiceParentimplementsNineTurnServiceService{@OverridepublicResultnineTurn(Stringcode,Stringdate){Stringkey="nineTurn:"+code+date;ObjectstrOjb=redisTemplate.opsForValue().get(key);Map<String,Object>obj=null;if(ObjectUtil.isNull(strOjb)){LocalDateendDate=LocalDate.parse(date,ISO_DATE);LocalDatestartDate=endDate.minusDays(30);Resultday=day(code,startDate.toString(),endDate.toString());Map<String,Object>data=(Map)day.getData();Resultresult=nineTurnCalculateService.doCalculate(data,code,date);if(ObjectUtil.isNotNull(result)){obj=(Map<String,Object>)result.getData();setRedisValue(key,obj);}}else{obj=(Map)JSON.parse(strOjb.toString());}returnnewResult(obj);}}@Slf4j@ServicepublicclassNineTurnCalculateServiceImplextendsStockServiceParentimplementsNineTurnCalculateService{@OverridepublicResultdoCalculate(Map<String,Object>map,Stringcode,Stringdate){log.info("start doCalculate.................. code: {}");List<Object>close=(List<Object>)map.get("close");System.out.println("close size:"+close.size());if(close.size()<13){returnnull;}List<Object>high=(List<Object>)map.get("high");List<Object>low=(List<Object>)map.get("low");List<WwStockDetail>list=newArrayList<>();for(inti=close.size()-1;i>=0;i--){WwStockDetailwwStockDetail=newWwStockDetail();wwStockDetail.setClose_price(Double.parseDouble(close.get(i).toString()));wwStockDetail.setMin_price(Double.parseDouble(low.get(i).toString()));wwStockDetail.setMax_price(Double.parseDouble(high.get(i).toString()));list.add(wwStockDetail);}list=list.subList(0,13);log.info("start doCalculate..list: {}",JSON.toJSON(list));log.info("start doCalculate..daixiao: {}",list.size());booleanisLow=lowNineBuy(list);booleanisHigh=highNineSale(list);Map<String,Object>lastMap=newHashMap<>();lastMap.put("lowNine",isLow?1:0);lastMap.put("highNine",isHigh?1:0);lastMap.put("api_code",code);lastMap.put("date",date);returnnewResult<>(lastMap);}/** * 低九买入结构:满足两个条件: * 第一:即连续出现九根K线,并且这些K线的收盘价都比各自前面的第四根K线的收盘价低, * 就在其K线下方标记相应的数字,如果出现中断,则原计数作废,重新来过。 * 第二:8或9的最低价小于6或7的最低价 */privatebooleanlowNineBuy(List<WwStockDetail>list){booleanisTurn=true;for(inti=0;i<9;i++){WwStockDetailk0=list.get(i);WwStockDetailk4=list.get(i+4);if(k0.getClose_price()>k4.getClose_price()){isTurn=false;}}if(isTurn){WwStockDetailnine=list.get(0);WwStockDetaileight=list.get(1);WwStockDetailseven=list.get(2);WwStockDetailsix=list.get(3);if(nine.getMin_price()<seven.getMax_price()||eight.getMin_price()<six.getMax_price()){}else{isTurn=false;}}returnisTurn;}/** * 高九卖出结构:满足两个条件: * 第一.即连续出现九根K线,并且这些K线的收盘价都比各自前面的第四根K线的收盘价高,就在其K线上方标记相应的数字,如果出现中断,则原计数作废,重新来过. * 第二:8或9的最高价大于6或7的最高价,在9的上方显示 */privatebooleanhighNineSale(List<WwStockDetail>list){booleanisTurn=true;for(inti=0;i<9;i++){WwStockDetailk0=list.get(i);WwStockDetailk4=list.get(i+4);if(k0.getClose_price()<k4.getClose_price()){isTurn=false;}}if(isTurn){WwStockDetailnine=list.get(0);WwStockDetaileight=list.get(1);WwStockDetailseven=list.get(2);WwStockDetailsix=list.get(3);if(nine.getMax_price()>seven.getMax_price()||eight.getMax_price()>six.getMax_price()){}else{isTurn=false;}}returnisTurn;}}计算过程很麻烦,其他技术指标可以参考别人已经做好的,直接去这里拿数据就可以了:
神奇九转指标及其他指标计算
啥指标都有:https://www.stockapi.com.cn