【发布时间】:2020-11-11 18:50:00
【问题描述】:
我不是一个很高级的程序员,只是在学习。
如果最后一笔交易是输家,我已经成功地获得了一个将交易规模从 1 份合约增加到 2 份合约的脚本。
我通过声明以下变量来做到这一点
private int OrderQuantity = 1;
private int OrderQuantityMultiplier1 = 2;`
然后我写了下面的规则
int orderQuantity = OrderQuantity;
if( SystemPerformance.AllTrades.Count > 0 )
if( SystemPerformance.AllTrades[SystemPerformance.AllTrades.Count-1].ProfitTicks < 0 ) // last trade is a loss
orderQuantity = Math.Max(1, Convert.ToInt32(orderQuantity * OrderQuantityMultiplier1));
EnterLongLimit(orderQuantity, (Low[0] + (1 * TickSize)) ,"");;}
而且效果很好。但后来我想说,如果最后一笔交易是输家,则从 1 手变为 2 手。如果最后 2 笔交易是亏损的,则从 2 手增加到 4 手,依此类推。
我创建了这些变量
private int OrderQuantityMultiplier2 = 4;
private int OrderQuantityMultiplier3 = 8;
private int OrderQuantityMultiplier4 = 16;`
并写了这段代码
int orderQuantity = OrderQuantity;
if( SystemPerformance.AllTrades.Count > 0 )
if( SystemPerformance.AllTrades[SystemPerformance.AllTrades.Count-1].ProfitTicks < 0 ) // last trade is a loss
orderQuantity = Math.Max(1, Convert.ToInt32(orderQuantity * OrderQuantityMultiplier1));
EnterLongLimit(orderQuantity, (Low[0] + (1 * TickSize)) ,"");;}
if( SystemPerformance.AllTrades[SystemPerformance.AllTrades.Count-2].ProfitTicks < 0 ) // last trade is a loss
orderQuantity = Math.Max(1, Convert.ToInt32(orderQuantity * OrderQuantityMultiplier2));
EnterLongLimit(orderQuantity, (Low[0] + (1 * TickSize)) ,"");;}
但我收到以下错误
NinjaScript 文件错误代码行列 Intraday1.cs 当前上下文中不存在名称“orderQuantity” CS0103 105 7
我认为这样做可能比写出 If last 2 trades lossers 和 if last 3 trades losters 一遍又一遍地写出更快的方法。
【问题讨论】:
标签: c# trading algorithmic-trading