程序猿的量化交易之路(27)--Cointrader之PriceData价格数据(14)

Posted lxjshuju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序猿的量化交易之路(27)--Cointrader之PriceData价格数据(14)相关的知识,希望对你有一定的参考价值。

转载须注明出处:http://blog.csdn.net/minimicall?viewmode=contentshttp://cloudtrade.top/

PriceData:价格数据。价格数据是市场数据的子类。

详细代码例如以下:

package org.cryptocoinpartners.schema;

import java.math.BigDecimal;

import javax.annotation.Nullable;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;

import org.joda.time.Instant;

/**
 * Superclass for any MarketData which contains a price and volume, such as an Offer or a Trade ???靠,这个有问题。

只是整个平台的代码事实上非常垃圾。 * * @author Tim Olson */ @MappedSuperclass public abstract class PriceData extends MarketData { /** * @param time when the pricing event originally occured * @param remoteKey the exchange's unique ID for the pricing event (to prevent duplicates) * @param market which Market this pricing is for * @param priceCount relative to the Market's quoteBasis * @param volumeCount relative to the Market's volumeBasis */ public PriceData(Instant time, @Nullable String remoteKey, Market market, @Nullable Long priceCount, @Nullable Long volumeCount) { super(time, remoteKey, market); this.priceCount = priceCount; this.volumeCount = volumeCount; } public PriceData(Instant time, @Nullable String remoteKey, Market market, @Nullable BigDecimal price, @Nullable BigDecimal volume) { super(time, remoteKey, market); this.priceCount = DiscreteAmount.roundedCountForBasis(price, market.getPriceBasis()); this.volumeCount = DiscreteAmount.roundedCountForBasis(volume, market.getVolumeBasis()); } /** * @param time when the pricing event originally occured * @param remoteKey the exchange's unique ID for the pricing event (to prevent duplicates) * @param market which Market this pricing is for * @param priceCount relative to the Market's quoteBasis * @param volumeCount relative to the Market's volumeBasis */ public PriceData(Instant time, Instant timeReceived, @Nullable String remoteKey, Market market, @Nullable Long priceCount, @Nullable Long volumeCount) { super(time, timeReceived, remoteKey, market); this.priceCount = priceCount; this.volumeCount = volumeCount; } public PriceData(Instant time, Instant timeReceived, @Nullable String remoteKey, Market market, @Nullable BigDecimal price, @Nullable BigDecimal volume) { super(time, timeReceived, remoteKey, market); this.priceCount = DiscreteAmount.roundedCountForBasis(price, market.getPriceBasis()); this.volumeCount = DiscreteAmount.roundedCountForBasis(volume, market.getVolumeBasis()); } public @Nullable Long getPriceCount() { return priceCount; } public @Nullable Long getVolumeCount() { return volumeCount; } @Transient @Nullable public DiscreteAmount getPrice() { if (priceCount == null) return null; if (price == null) price = new DiscreteAmount(priceCount, getMarket().getPriceBasis()); return price; } @Transient @Nullable public Double getPriceAsDouble() { Amount price = getPrice(); return price == null ?

null : price.asDouble(); } @Transient @Nullable public Double getPriceCountAsDouble() { Long price = getPriceCount(); return price == null ? null : price.doubleValue(); } @Transient @Nullable public Double getVolumeCountAsDouble() { Long volume = getVolumeCount(); return volume == null ? null : volume.doubleValue(); } @Transient @Nullable public BigDecimal getPriceAsBigDecimal() { Amount price = getPrice(); return price == null ? null : price.asBigDecimal(); } @Transient @Nullable public DiscreteAmount getVolume() { if (volumeCount == null) return null; if (volume == null) volume = new DiscreteAmount(volumeCount, getMarket().getVolumeBasis()); return volume; } @Transient @Nullable public Double getVolumeAsDouble() { Amount volume = getVolume(); return volume == null ?

null : volume.asDouble(); } @Transient @Nullable public BigDecimal getVolumeAsBigDecimal() { Amount volume = getVolume(); return volume == null ? null : volume.asBigDecimal(); } // JPA protected PriceData() { super(); } protected void setPriceCount(Long priceCount) { this.priceCount = priceCount; } protected void setVolumeCount(Long volumeCount) { this.volumeCount = volumeCount; } private DiscreteAmount price;//价 private DiscreteAmount volume;//量 private Long priceCount; private Long volumeCount; }




以上是关于程序猿的量化交易之路(27)--Cointrader之PriceData价格数据(14)的主要内容,如果未能解决你的问题,请参考以下文章

程序猿的量化交易之路(17)--Cointrader之Temporal实体

程序猿的量化交易之路(28)--Cointrader之Offer报价实体(15)

个人量化交易者的自由之路

个人量化交易者的自由之路(转)

量化资料学习《Python与量化投资从基础到实战》+《量化交易之路用Python做股票量化分析》+《组织与管理研究的实证方法第2版》

视频教程-从编程小白到量化宗师之路---BackTrader从数据采集到实盘交易-Python