906 lines
29 KiB
JavaScript
906 lines
29 KiB
JavaScript
function getColModelGrid() {
|
|
var i = 0;
|
|
var colModelGrid = [
|
|
{ name: 'id', hidden: true, optionHide: true },
|
|
{ name: 'EncryptTradeId', hidden: true, optionHide: true },
|
|
{
|
|
name: 'TradeNumber',
|
|
label: '交易编号',
|
|
index: 'TradeNumber',
|
|
width: 150,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
sortable: true
|
|
}, {
|
|
name: 'GroupName',
|
|
label: '分组名',
|
|
index: 'GroupName',
|
|
sortIndex: i++,
|
|
width: 80,
|
|
sortable: false,
|
|
hidden: !page.isGuoyuan
|
|
}, {
|
|
name: 'ContractCode',
|
|
label: '确认书编号',
|
|
index: 'ContractCode',
|
|
width: 150,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
sortable: true
|
|
}, {
|
|
name: 'ExchangeOptionCode',
|
|
label: '期权代码',
|
|
index: 'ExchangeOptionCode',
|
|
width: 150,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
sortable: true
|
|
}, {
|
|
name: 'ChildLeg',
|
|
label: '多腿编号',
|
|
index: 'ChildLeg',
|
|
width: 80,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
sortable: false
|
|
}, {
|
|
name: page.isPvRounded ? 'RoundedPositionPnl' : 'PositionPnl',
|
|
label: '浮动盈亏',
|
|
index: page.isPvRounded ? 'RoundedPositionPnl' : 'PositionPnl',
|
|
sortIndex: i++,
|
|
width: 65,
|
|
align: 'center',
|
|
sortable: true,
|
|
formatter: PriceFormat
|
|
}, {
|
|
name: 'RealizedPnl',
|
|
label: '实现盈亏',
|
|
index: 'RealizedPnl',
|
|
sortIndex: i++,
|
|
width: 65,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter: RealizedPnlFormat
|
|
}, {
|
|
name: 'CurrentVolatility',
|
|
label: '当前波动率',
|
|
index: 'CurrentVolatility',
|
|
sortIndex: i++,
|
|
width: 65,
|
|
align: 'center',
|
|
formatter: otcformat.trading.premiumRateP,
|
|
sortable: true
|
|
}, {
|
|
name: 'Delta',
|
|
label: 'Delta',
|
|
index: 'Delta',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: otcformat.trading.greek,
|
|
sortable: false
|
|
}, {
|
|
name: 'DeltaLots',
|
|
label: 'Delta手数',
|
|
index: 'DeltaLots',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: otcformat.trading.notional,
|
|
sortable: false
|
|
}, {
|
|
name: 'Gamma',
|
|
label: 'Gamma',
|
|
index: 'Gamma',
|
|
width: 100,
|
|
sortIndex: i++,
|
|
align: 'center',
|
|
formatter: otcformat.trading.greek,
|
|
sortable: false
|
|
}, {
|
|
name: 'GammaLots',
|
|
label: 'Gamma手数',
|
|
index: 'GammaLots',
|
|
width: 100,
|
|
sortIndex: i++,
|
|
align: 'center',
|
|
formatter: otcformat.trading.notional,
|
|
sortable: false
|
|
}, {
|
|
name: 'Theta',
|
|
label: 'Theta',
|
|
index: 'Theta',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: otcformat.trading.greek,
|
|
sortable: true
|
|
}, {
|
|
name: 'Rho',
|
|
label: 'Rho',
|
|
index: 'Rho',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: otcformat.trading.greek,
|
|
sortable: true
|
|
}, {
|
|
name: 'Vega',
|
|
label: 'Vega',
|
|
index: 'Vega',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: otcformat.trading.greek,
|
|
sortable: true
|
|
}, {
|
|
name: 'ExerciseDate',
|
|
label: '到期日期',
|
|
index: 'ExerciseDate',
|
|
width: 80,
|
|
sortIndex: i++,
|
|
align: 'center',
|
|
formatter: 'date',
|
|
sortable: true
|
|
}, {
|
|
name: 'ExerciseModeCn',
|
|
label: '行权方式',
|
|
index: 'ExerciseModeCn',
|
|
width: 80,
|
|
sortIndex: i++,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter: ShowToolName
|
|
}, {
|
|
name: 'TradeType',
|
|
label: '结构类型',
|
|
index: 'TradeType',
|
|
sortIndex: i++,
|
|
width: 70,
|
|
align: 'center',
|
|
formatter: function (cellvalue, options, rowObject) {
|
|
return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType;
|
|
},
|
|
sortable: true
|
|
}, {
|
|
name: 'KnockInOutStatus',
|
|
label: '观察状态',
|
|
index: 'KnockInOutStatus',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false
|
|
}, {
|
|
name: 'ClientName',
|
|
label: '交易对手方',
|
|
index: 'ClientName',
|
|
width: 150,
|
|
sortIndex: i++,
|
|
align: 'center',
|
|
sortable: true
|
|
}, {
|
|
name: 'ClientNumber',
|
|
label: '交易对手编号',
|
|
index: 'ClientNumber',
|
|
width: 150,
|
|
sortIndex: i++,
|
|
align: 'center',
|
|
sortable: false
|
|
}, {
|
|
name: 'AssetBookName',
|
|
label: '簿记账户',
|
|
index: 'AssetBookName',
|
|
width: 150,
|
|
sortIndex: i++,
|
|
align: 'center',
|
|
sortable: true
|
|
}, {
|
|
name: 'TradeDate',
|
|
label: '成交日期',
|
|
sortIndex: i++,
|
|
index: 'TradeDate',
|
|
width: 90,
|
|
align: 'center',
|
|
formatter: 'date',
|
|
sortable: true
|
|
}, {
|
|
name: 'OptionType',
|
|
sortIndex: i++,
|
|
label: '看涨看跌',
|
|
index: 'OptionType',
|
|
width: 80,
|
|
align: 'center',
|
|
sortable: false
|
|
}, {
|
|
name: 'BuySell',
|
|
sortIndex: i++,
|
|
label: '买卖方向',
|
|
index: 'BuySell',
|
|
width: 80,
|
|
align: 'center',
|
|
sortable: false
|
|
}, {
|
|
name: 'UnderlyingCode',
|
|
label: '标的代码',
|
|
index: 'UnderlyingCode',
|
|
width: 80,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
sortable: true
|
|
}, {
|
|
name: 'UnderlyingAssetName',
|
|
label: '标的名称',
|
|
index: 'UnderlyingAssetName',
|
|
width: 80,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
sortable: false
|
|
}, {
|
|
name: 'UnderlyingVariety',
|
|
label: '标的品种',
|
|
index: 'UnderlyingVariety',
|
|
sortIndex: i++,
|
|
width: 60,
|
|
align: 'center',
|
|
sortable: false,
|
|
hidden: !page.showUnderlyingVariety,
|
|
optionHide: !page.showUnderlyingVariety
|
|
}, {
|
|
name: 'InitialSpotPrice',
|
|
label: '期初标的价格',
|
|
index: 'InitialSpotPrice',
|
|
sortIndex: i++,
|
|
width: 85,
|
|
align: 'center',
|
|
formatter: SpotPriceFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'Strike',
|
|
label: '执行价格',
|
|
index: 'Strike',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: StrikeFormatter,
|
|
sortable: true
|
|
}, {
|
|
name: 'TradeSinglePrice',
|
|
label: '权利金(成交)',
|
|
index: 'TradeSinglePrice',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: function (cellValue, options, rowObject) {
|
|
if (rowObject.IsUsePremiumRate) {
|
|
return otcformat.trading.premiumRateP(rowObject.PremiumRate);
|
|
}
|
|
else {
|
|
return otcformat.trading.tradeSinglePrice(cellValue);
|
|
}
|
|
},
|
|
sortable: false
|
|
}, {
|
|
name: 'TradeOriginalAmountV',
|
|
label: '成交数量',
|
|
sortIndex: i++,
|
|
width: 70,
|
|
align: 'center',
|
|
formatter: function (cellvalue, options, rowObject) {
|
|
return otcformat.trading.notional(Math.abs(tradeHelper.getTradeAmountV(rowObject.trade, null, rowObject.CountRatio)));
|
|
},
|
|
sortable: false
|
|
}, {
|
|
name: 'TradeOriginalAmount',
|
|
label: '有效成交数量',
|
|
index: 'TradeOriginalAmount',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: TradeOriginalAmountFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'TradePrice',
|
|
label: '成交金额',
|
|
index: 'TradePrice',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: TradePriceFormat,
|
|
sortable: true
|
|
}, {
|
|
name: 'etcTradePrice',
|
|
label: '存续成本',
|
|
index: 'etcTradePrice',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: etcTradePriceFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'StockEqvNotionalToShow',
|
|
label: '名义本金',
|
|
index: 'StockEqvNotionalToShow',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: StockEqvNotionalFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'UnderlyingPrice',
|
|
label: '最新标的价格',
|
|
index: 'UnderlyingPrice',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: otcformat.trading.umprice,
|
|
sortable: false
|
|
}, {
|
|
name: 'RiskFreeRate',
|
|
label: '无风险利率',
|
|
index: 'RiskFreeRate',
|
|
width: 80,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: otcformat.trading.premiumRateP,
|
|
sortable: false
|
|
}, {
|
|
name: 'DividendRate',
|
|
label: '分红率',
|
|
index: 'DividendRate',
|
|
width: 80,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: otcformat.trading.premiumRateP,
|
|
sortable: false
|
|
}, {
|
|
name: 'SinglePV',
|
|
label: '权利金(存续)',
|
|
index: 'SinglePV',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter: function (cellValue, options, rowObject) {
|
|
if (rowObject.IsUsePremiumRate) {
|
|
var premiumRate = tradeHelper.GetPremiumRateByTradeSinglePrice(cellValue, rowObject.InitialSpotPrice);
|
|
return otcformat.trading.premiumRateP(premiumRate);
|
|
} else {
|
|
return otcformat.trading.tradePrice(cellValue);
|
|
}
|
|
}
|
|
}, {
|
|
name: 'TradeAmountV',
|
|
label: '存续数量',
|
|
sortIndex: i++,
|
|
width: 70,
|
|
align: 'center',
|
|
formatter: function (cellvalue, options, rowObject) {
|
|
if (rowObject.trade === null) {
|
|
return rowObject.TradeAmount;
|
|
} else {
|
|
return otcformat.trading.notional(tradeHelper.getTradeAmountV(rowObject.trade, rowObject.TradeAmount, 1));
|
|
}
|
|
},
|
|
sortable: false
|
|
}, {
|
|
name: 'TradeAmount',
|
|
label: '有效存续数量',
|
|
index: 'TradeAmount',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: TradeAmountFormat,
|
|
sortable: false
|
|
}, {
|
|
name: page.isPvRounded ? 'RoundedPV' : 'PV',
|
|
label: '存续市值',
|
|
index: page.isPvRounded ? 'RoundedPV' : 'PV',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter: otcformat.trading.tradePrice
|
|
}, {
|
|
name: 'Margin',
|
|
label: '维持预付金',
|
|
index: 'Margin',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter: otcformat.trading.tradePrice
|
|
}, {
|
|
name: 'TraderName',
|
|
label: '交易员',
|
|
index: 'TraderName',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false
|
|
}, {
|
|
name: 'SurvivingNominalPrincipal',
|
|
label: '存续名义本金',
|
|
index: 'SurvivingNominalPrincipal',
|
|
sortIndex: i++,
|
|
hidden: !page.showGuohai,
|
|
optionHide: !page.showGuohai,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter(cellValue, options, rowObject) {
|
|
return main.formatNumber(cellValue || '', 2);
|
|
}
|
|
}, {
|
|
name: 'Comments',
|
|
label: '备注',
|
|
index: 'Comments',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false
|
|
}
|
|
];
|
|
|
|
if (page.isGuoJun) {
|
|
colModelGrid.push({
|
|
name: 'PosiInitMargin',
|
|
label: '持仓初始预付金',
|
|
index: 'PosiInitMargin',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter: otcformat.trading.tradePrice
|
|
});
|
|
}
|
|
|
|
if (page.showCreditExposure) {
|
|
colModelGrid.push({
|
|
name: 'Exposure',
|
|
label: '信用风险敞口',
|
|
index: 'Exposure',
|
|
sortIndex: i++,
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter: otcformat.trading.tradePrice
|
|
});
|
|
}
|
|
|
|
if (page.calcPnlExplain) {
|
|
var pnlCols = [{
|
|
name: 'PnLDelta', label: 'dPnLDelta', width: 100, align: 'center', sortable: false, formatter: otcformat.trading.greek
|
|
}, {
|
|
name: 'PnLGamma', label: 'dPnLGamma', width: 100, align: 'center', sortable: false, formatter: otcformat.trading.greek
|
|
}, {
|
|
name: 'PnLVega', label: 'dPnLVega', width: 100, align: 'center', sortable: false, formatter: otcformat.trading.greek
|
|
}, {
|
|
name: 'PnLTheta', label: 'dPnLTheta', width: 100, align: 'center', sortable: false, formatter: otcformat.trading.greek
|
|
}, {
|
|
name: 'PnLPsi', label: 'dPnLPsi', width: 100, align: 'center', sortable: false, formatter: otcformat.trading.greek
|
|
}];
|
|
colModelGrid = colModelGrid.concat(pnlCols);
|
|
}
|
|
|
|
if (page.needShowSpv) {
|
|
//涨停市值,不变市值,跌停市值
|
|
var spvCols = [{
|
|
name: 'Spv1', label: '涨停市值', width: 100, align: 'center', sortable: false, formatter: otcformat.trading.greek
|
|
}, {
|
|
name: 'Spv2', label: '不变市值', width: 100, align: 'center', sortable: false, formatter: otcformat.trading.greek
|
|
}, {
|
|
name: 'Spv3', label: '跌停市值', width: 100, align: 'center', sortable: false, formatter: otcformat.trading.greek
|
|
}];
|
|
colModelGrid = colModelGrid.concat(spvCols);
|
|
}
|
|
|
|
|
|
if (page.isGLMS) {
|
|
colModelGrid.push({
|
|
name: 'Delta_r',
|
|
label: 'Delta_r',
|
|
index: 'Delta_r',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: greeksFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'Delta_r_1bp',
|
|
label: 'Delta_r(1bp)',
|
|
index: 'Delta_r_1bp',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: greeksFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'Dv01',
|
|
label: 'Dv01',
|
|
index: 'Dv01',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: greeksFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'Gamma_r',
|
|
label: 'Gamma_r',
|
|
index: 'Gamma_r',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: greeksFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'Gamma_r_1bp',
|
|
label: 'Gamma_r(1bp)',
|
|
index: 'Gamma_r_1bp',
|
|
width: 120,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: greeksFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'Vega_r',
|
|
label: 'Vega_r',
|
|
index: 'Vega_r',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: greeksFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'Vega_r_1bp',
|
|
label: 'Vega_r(1bp)',
|
|
index: 'Vega_r_1bp',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: greeksFormat,
|
|
sortable: false
|
|
}, {
|
|
name: 'Vega_1bp',
|
|
label: 'Vega(1bp)',
|
|
index: 'Vega_1bp',
|
|
width: 100,
|
|
align: 'center',
|
|
sortIndex: i++,
|
|
formatter: greeksFormat,
|
|
sortable: false
|
|
},);
|
|
|
|
}
|
|
|
|
return tradeHelper.getAmountToNotional(colModelGrid);
|
|
}
|
|
|
|
$(function () {
|
|
var PostData = {};
|
|
$("#DateValueDate").datepicker({
|
|
changeMonth: true,
|
|
changeYear: true,
|
|
showButtonPanel: true,
|
|
showOtherMonths: true,
|
|
selectOtherMonths: true,
|
|
maxDate: page.valueDate_eod
|
|
});
|
|
changePriceType();
|
|
PostData.ValueDate = $("#DateValueDate").val();
|
|
PostData.VolType = "持仓";
|
|
$("#VolType").val("持仓");
|
|
var grid = jQuery('#listGrid').jqGrid({
|
|
url: '/trade/EodPositionRisksQuery',
|
|
datatype: "local",
|
|
height: 'auto',
|
|
width: '96%',
|
|
multiselect: true,
|
|
autowidth: false,
|
|
shrinkToFit: false,
|
|
viewrecords: true,
|
|
jsonReader: { repeatitems: false },
|
|
mtype: 'POST',
|
|
postData: PostData,
|
|
afterInsertRow: AfterInsertRow,
|
|
onSelectRow: rowclick,
|
|
ondblClickRow: rowdblclick,
|
|
colModel: getColModelGrid(),
|
|
pager: jQuery('#pagerGrid'),
|
|
pagerpos: 'left',
|
|
rowNum: 10000,
|
|
rowList: [25, 50, 100, 200, 10000],
|
|
footerrow: false,
|
|
//userDataOnFooter: true,
|
|
loadComplete: gridComplete,
|
|
onPaging: onJqgridPaging,
|
|
grouping: true
|
|
});
|
|
document.onkeydown = function (event) {
|
|
var e = event ? event : (window.event ? window.event : null);
|
|
if (e.keyCode === 13) {
|
|
SearchClick(true);
|
|
}
|
|
};
|
|
|
|
let underlyingCtrl = new tradeHelper.UnderlyingSelectCtrl('#UnderlyingId')
|
|
.setFlag(tradeHelper.UnderlyingSelectFlag.OtcTrade);
|
|
|
|
$(window).resize(function () {
|
|
//如有频繁改变大小的需求,要增加延迟运行的逻辑;
|
|
$("#listGrid").setGridWidth($("#main-wrapper").width() - 30);
|
|
var newHeight = $(window).height() - 350;
|
|
$("#listGrid").setGridHeight(newHeight);
|
|
});
|
|
});
|
|
|
|
const GroupingFormat = main.numberFormat(2, { grouping: true });
|
|
const ThreeDecimalGroupingFormat = main.numberFormat(3, { grouping: false });
|
|
|
|
function gridComplete(data) {
|
|
var jgrid = $(this);
|
|
main.setcolumnChooser(jgrid, '日终持仓风险');
|
|
$(window).resize();
|
|
if (page.calcPnlExplain && data.Sum) {
|
|
$('#footSummaryDiv').text("dPnL: " + data.Sum.dpnl.toFixed(2));
|
|
}
|
|
}
|
|
|
|
function rowdblclick(rowid) {
|
|
var rowData = $(this).getRowData(rowid);
|
|
if (rowData.id > 0 && rowData.TradeType) {
|
|
starttradeView(rowData.EncryptTradeId, rowData.TradeType);
|
|
}
|
|
}
|
|
|
|
function starttradeView(id, tradeType) {
|
|
if (tradeType.indexOf("远期") >= 0) {
|
|
var srcurl = "/forwardtrade/tradeView/?enid=" + id + "&isFromPositionReport=false&isOnlyCloseButton=true";
|
|
main.open("查看远期交易", srcurl, { area: ['1260px', '800px'] });
|
|
}
|
|
else {
|
|
var srcurl = "/trade/tradeView/?enid=" + id + "&isFromPositionReport=false&isOnlyCloseButton=true";
|
|
main.open("查看交易", srcurl, { area: ['1260px', '800px'] });
|
|
}
|
|
}
|
|
|
|
//---------------------------Formatter---------------------------------
|
|
function TradeOriginalAmountFormat(cellValue, options, rowObject) {
|
|
return otcformat.trading.notional(Math.abs(cellValue));
|
|
}
|
|
|
|
function TradeAmountFormat(cellValue, options, rowObject) {
|
|
return otcformat.trading.notional(cellValue);
|
|
}
|
|
|
|
function greeksFormat(cellValue, options, rowObject) {
|
|
if (cellValue != null) {
|
|
return otcformat.trading.greek(cellValue);
|
|
}
|
|
return "";
|
|
}
|
|
|
|
function SpotPriceFormat(cellValue, options, rowObject) {
|
|
if (rowObject.TradeType !== "场内期权" && rowObject.TradeType !== "商品期货" && rowObject.TradeType !== "股票" && rowObject.TradeType !== "商品现货") {
|
|
return otcformat.trading.umprice(cellValue)
|
|
}
|
|
else {
|
|
return "";
|
|
}
|
|
}
|
|
|
|
function TradePriceFormat(cellValue, options, rowObject) {
|
|
return otcformat.trading.tradePrice(cellValue * (rowObject.BuySell === "买入" || rowObject.BuySell === "多头开仓" || rowObject.BuySell === "空头开仓" ? -1 : 1));
|
|
}
|
|
|
|
function etcTradePriceFormat(cellValue, options, rowObject) {
|
|
//黑箱主交易后台已经处理过了
|
|
if (rowObject.IsGroup == 1) {
|
|
return otcformat.trading.tradePrice(cellValue);
|
|
}
|
|
return otcformat.trading.tradePrice(cellValue * (rowObject.BuySell === "买入" || rowObject.BuySell === "多头开仓" || rowObject.BuySell === "空头开仓" ? -1 : 1));
|
|
}
|
|
|
|
|
|
function PriceFormat(cellValue, options, rowObject) {
|
|
return otcformat.trading.tradePrice(cellValue);
|
|
}
|
|
|
|
function RealizedPnlFormat(cellValue, options, rowObject) {
|
|
return otcformat.trading.tradePrice(cellValue);
|
|
}
|
|
|
|
function StockEqvNotionalFormat(cellValue, options, rowObject) {
|
|
if (rowObject.TradeType !== "场内期权" && rowObject.TradeType !== "商品期货" && rowObject.TradeType !== "股票" && rowObject.TradeType !== "商品现货") {
|
|
return otcformat.trading.StockEqvNotional(cellValue);
|
|
}
|
|
else {
|
|
return "";
|
|
}
|
|
}
|
|
|
|
function ComputePV(cellValue, options, rowObject) {
|
|
var pv = main.formatNumber(rowObject.SinglePV) * main.formatNumber(rowObject.TradeAmount);
|
|
return otcformat.trading.tradePrice(pv);
|
|
}
|
|
|
|
function PercentFormat(cellValue, options, rowObject) {
|
|
return otcformat.trading.premiumRateP(cellValue);
|
|
}
|
|
|
|
function DoubleFormat(cellValue, options, rowObject) {
|
|
return main.formatNumber(cellValue);
|
|
}
|
|
|
|
function StrikeFormatter(cellValue, options, rowObject) {
|
|
if (rowObject.TradeType == "自定义交易") {
|
|
return "";
|
|
}
|
|
if (rowObject.Strike) {
|
|
if (rowObject.IsMoneynessOption === "是") {
|
|
return otcformat.trading.premiumRateP(rowObject.Strike);
|
|
} else {
|
|
return otcformat.trading.umprice(rowObject.Strike);
|
|
}
|
|
} else {
|
|
if (rowObject.Strike === 0) {
|
|
return 0;
|
|
}
|
|
else {
|
|
return "";
|
|
}
|
|
}
|
|
}
|
|
|
|
function ShowToolName(cellValue, options, rowObject) {
|
|
if ("American" == rowObject.ExerciseMode) {
|
|
return "美式";
|
|
} else if ("European" == rowObject.ExerciseMode) {
|
|
return "欧式";
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------------
|
|
|
|
function rowclick(id) { }
|
|
|
|
function exportTrade() {
|
|
var jgrid = jQuery('#listGrid');
|
|
var postData = GetPostData();
|
|
var ids = jgrid.jqGrid('getGridParam', 'selarrrow');
|
|
if (ids.length > 0) {
|
|
postData.TradeIds = ids;
|
|
}
|
|
downLoadFile("/trade/DownloadEodPositionRisks?" + $.param(postData, true));
|
|
}
|
|
|
|
function downClientRiskMonitor() {
|
|
var htmlContent = $('#exportRiskReport').html();
|
|
main.open2("导出日终持仓风险",
|
|
htmlContent,
|
|
{
|
|
area: ["450px", "300px"],
|
|
success: function (layero, index) {
|
|
var valueDate = $("#DateValueDate").val();
|
|
main.setTradeDatePicker(valueDate, "");
|
|
$("#endDate").val($("#DateValueDate").val());
|
|
$("#startDate,#endDate").datepicker("option", "maxDate", valueDate);
|
|
$("#startDate").on("change", function () {
|
|
var startDate = $(this).val();
|
|
if (!main.isDate(startDate)) {
|
|
return;
|
|
}
|
|
$("#endDate").datepicker("option", "minDate", startDate);
|
|
});
|
|
$("#endDate").on("change", function () {
|
|
var endDate = $(this).val();
|
|
if (!main.isDate(endDate)) {
|
|
return;
|
|
}
|
|
$("#startDate").datepicker("option", "maxDate", endDate);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
//导出区间
|
|
function rangeClick() {
|
|
$("#startDate").prop("disabled", !$("#useRange").prop("checked"));
|
|
}
|
|
|
|
//导出提示
|
|
function execExport() {
|
|
if (main.isEmpty($("#startDate").val()) && $("#useRange").prop("checked")) {
|
|
return main.message("开始日期不能为空");
|
|
}
|
|
if (main.isEmpty($("#endDate").val())) {
|
|
return main.message("结束日期不能为空");
|
|
}
|
|
if ($("#startDate").val() > $("#endDate").val()) {
|
|
return main.message("开始日期不能在结束日期之后");
|
|
}
|
|
|
|
var jgrid = jQuery('#listGrid');
|
|
var postData = GetPostData();
|
|
if ($("#useRange").prop("checked")) {
|
|
postData.StartDate = $("#startDate").val();
|
|
postData.ValueDate = $('#endDate').val();
|
|
window.open("/trade/EodPositionRiskExport?" + $.param(postData, true) + "&processName=ExportEodPositionRisks");
|
|
//asyncDownload(postData);
|
|
//main.post("/trade/BatchDownloadEodPositionRisks", postData);
|
|
//main.waitMe(close);
|
|
//parent.layer.closeAll();
|
|
//main.open("", "/common/ProgressBar?processName=ExportEodPositionRisks&showStatus=true", { area: ['400px', '40px'], maxmin: false, closeBtn: 0, content: ["/common/ProgressBar?processName=ExportEodPositionRisks&showStatus=true", "no"] });
|
|
} else {
|
|
postData.ValueDate = $('#endDate').val();
|
|
var ids = jgrid.jqGrid('getGridParam', 'selarrrow');
|
|
if (ids.length > 0) {
|
|
postData.TradeIds = ids;
|
|
}
|
|
downLoadFile("/trade/DownloadEodPositionRisks?" + $.param(postData, true));
|
|
parent.layer.closeAll();
|
|
}
|
|
|
|
}
|
|
|
|
function downLoadFile(downloadUrlStr) {
|
|
window.open(downloadUrlStr);
|
|
}
|
|
|
|
function GetPostData() {
|
|
var postData = {};
|
|
|
|
postData.ValueDate = $("#DateValueDate").val();
|
|
postData.TradeNumber = $("#TradeNumber").val();
|
|
postData.BookIds = $("#BookId").val();
|
|
postData.AssetIdGroupList = $("#GroupId").val();
|
|
postData.TradeTypes = $("#TradeType").val();
|
|
postData.UnderlyingIds = $("#UnderlyingId").val();
|
|
postData.TraderIds = $("#TraderId").val();
|
|
postData.ClientIds = $("#ClientId").val();
|
|
postData.EodSettlePriceMode = $("#EodSettlePriceMode").val();
|
|
postData.VolType = $("#VolType").val();
|
|
postData.IsParentTrade = $("#IsParentTrade").val();
|
|
postData.GroupNames = $("#GroupNames").val();
|
|
postData.TagIds = $("#TagIds").val();
|
|
if ($("#DividendRateType")) {
|
|
postData.DividendRateType = $("#DividendRateType").val();
|
|
}
|
|
return postData;
|
|
}
|
|
|
|
function SearchClick(isSearchclick) {
|
|
var listGrid = $('#listGrid');
|
|
listGrid.appendPostData(GetPostData());
|
|
if (typeof (isSearchclick) != "undefined" && isSearchclick) {
|
|
//点击搜索时默认第一页
|
|
listGrid.jqGrid('setGridParam',
|
|
{
|
|
page: 1
|
|
});
|
|
}
|
|
listGrid.jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
|
|
}
|
|
|
|
function showcolumnChooser() {
|
|
var jgrid = jQuery('#listGrid');
|
|
main.showcolumnChooser(jgrid, '日终持仓风险');
|
|
}
|
|
function changePriceType() {
|
|
var lastDate = new Date().Format("yyyy-MM-dd");
|
|
if ($('#EodSettlePriceMode').val() == "结算价") {
|
|
lastDate = page.valueDate_settle;
|
|
$('#settleBtn').show();
|
|
}
|
|
else {
|
|
lastDate = page.valueDate_eod;
|
|
$('#settleBtn').hide();
|
|
}
|
|
$("#DateValueDate").datepicker("option", "maxDate", lastDate);
|
|
if (!$("#DateValueDate").val()) {
|
|
$("#DateValueDate").val(lastDate);
|
|
}
|
|
}
|
|
//function openSettlePage() {
|
|
// main.open("结算价收盘", "/eod_trade_value/eodBatchExec_Settle", { area: ["680px", "510px"] });
|
|
//}
|