void Strategy::updatePositions(const Quote *quote) {
    //同步持仓:持仓盈亏
    Instrument *instrument = getInstrument(quote->instrumentId);
    Position *longPosition = getPosition(quote->instrumentId,PositionSide::longSide);
    if(longPosition)
        longPosition->positionProfit = (quote->lastPrice - longPosition->positionCost) * instrument->volumeMultiple * longPosition->totalPosition;
    Position *shortPosition = getPosition(quote->instrumentId,PositionSide::shortSide);
    if(shortPosition)
        shortPosition->positionProfit = (shortPosition->positionCost - quote->lastPrice) * instrument->volumeMultiple * shortPosition->totalPosition;
}
void Strategy::updatePositions(const Trade *trade) {
    //同步持仓:合约、买卖、总仓、今仓、可平量、持仓均价、持仓盈亏、占用保证金
}
void Strategy::updateAccounts(const Quote *quote) {
    //同步账户:持仓盈亏、动态权益、可用资金
    account.positionProfit = 0;
for(Position *position : positions) {
        account.positionProfit = account.positionProfit + position->positionProfit;
    }
    account.equity = account.preEquity + account.closeProfit + account.positionProfit - account.commission;
    account.available = account.equity - account.currMargin - account.frozenMargin - account.frozenCommission + account.credit;
}
void Strategy::updateAccounts(const Order *order) {
    //同步账户:冻结保证金、冻结手续费
    account.frozenMargin = 0;
    account.frozenCommission = 0;
for(Order *order : getPendingOrders()) {
        account.frozenMargin = account.frozenMargin + order->frozenMargin;
        account.frozenCommission = account.frozenCommission + order->frozenCommission;
    }
}
void Strategy::updateAccounts(const Trade *trade) {
    //同步账户:平仓盈亏、持仓盈亏、手续费、动态权益、占用保证金、可用资金
}