我编了一段代码,想用此计算交易量,但有错误,请帮忙解决。其思想是根据以前的盈利情况,如没有亏损,则以本金一定比例开仓。如果有亏损,则将亏损部分再加到其上。而如果亏损超过一定值时(30%),则从新计算亏损和本金。
就是亏损小时,以一定比例加仓;亏损大时,承认此次亏损,再从头开始。
但测试时显示错误4051,不知为什么
代码如下
- double LotsOptimized()
- {
- double j=0,k=0,l=0,kuisun,xianjin,lot;
- for(int i=OrdersHistoryTotal()-1;i>=0;i--)
- {
- OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
- if(OrderSymbol()==Symbol() )
- {
- j=j+OrderProfit();
- k=k+OrderProfit();
- if(j>=l) l=j; //l为盈利最大值
- kuisun=l-j;//计算亏损
- xianjin=k+10000+kuisun;//目前应该的本金额,其中10000为初始本金额
- if(kuisun>0.3*xianjin) j=0;l=0; //如果亏损大于本金额的30%,重新计算交易单盈利情况
- }
- lot=xianjin*1%/500+kuisun/500;
- }
- return(lot);}
复制代码 |