- 精华
- 0
- 在线时间
- 2 小时
- UID
- 222437
- 积分
- 23
- 帖子
- 18
- 阅读权限
- 10
- 注册时间
- 2015-11-3
- 最后登录
- 2016-1-5
- 精华
- 0
- UID
- 222437
- 积分
- 23
- 帖子
- 18
- 主题
- 5
- 阅读权限
- 10
- 注册时间
- 2015-11-3
- 最后登录
- 2016-1-5
|
本帖最后由 xiaokakaren 于 2015-12-15 11:21 编辑
1、我是新手,按2%的风险开仓个代码写不了,只能用一个资金的2%代替。思路是这样:第一单总资金的2%做为亏损金额,用它来考量开仓的手数。第二单在第一单没有平仓的时候再次开仓的手数就是资金-第一单止损的金额。举例:我总资金是100000的话,第一单的开仓手数=(100000*0.02)/(止损点数*一跳的价格),这个时候如果第一单没平,再开第二单的话手数=【(100000-第一单如果止损的金额)*0.02】/(止损点数*一跳的价格)。这个我在论坛上没找到相似的例子。所以也不知道应该怎么写。有老师能指点一下最好了。
2、1:2的盈亏比的代码如下,感觉很多问题,我也不知道是那个地方。
Params
Numeric FastLength(5);
Numeric SlowLength(20);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Numeric minpoint; //最小变动单位,也就是一跳
Numeric myentryprice; //我的开仓价格
Numeric StopLossSet; // 止损设置(多头)
Numeric StopLossSet1; // 止损设置(空头)
Numeric MyExitPrice; // 平仓价格
NumericSeries HighestAfterEntry; // 开仓后出现的最高价
NumericSeries LowestAfterEntry; // 开仓后出现的最低价
Numeric lots; //开仓手数
Numeric mycapital(1000000); //我的资金
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
//PlotNumeric("PL",Portfolio_TotalProfit);
// 集合竞价和小节休息过滤
If(!CallAuctionFilter()) Return;
minpoint=MinMove*PriceScale;//=当前公式应用商品的最小变动量*当前公式应用商品的计数单位
StopLossSet=open-Low[1]+300; //止损点数
StopLossSet1=High[1]-Open+300; //止损点数
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
lots=mycapital*0.02 / StopLossSet*minpoint;//开仓手数=总资金的2%/止损金额
Buy(lots,Open);
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
{
lots=mycapital*0.02 / StopLossSet1*minpoint;//开仓手数=总资金的2%/止损金额
SellShort(lots,Open);
}
If(BarsSinceEntry==0)//如果此K线是开仓的K线
{
HighestAfterEntry = Close;//开仓后的最高价=收盘价
LowestAfterEntry = Close;//开仓后的最低价=收盘价
If(MarketPosition<>0) //当前持仓状态不等于0
{
HighestAfterEntry = Max(HighestAfterEntry,EntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry,EntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
}
}Else
{
HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry,Low); // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
}
Commentary("HighestAfterEntry="+Text(HighestAfterEntry));//在超级图表当前K线添加一行注释信号
Commentary("LowestAfterEntry="+Text(LowestAfterEntry));
myentryprice=EntryPrice;//我的开仓价格是当前持仓的第一个建仓价格。AvgEntryPrice(当前持仓的平均建仓价格),LastEntryPrice(当前持仓的最后一个建仓价格)
If(MarketPosition==1)//有多仓的情况
{
If(HighestAfterEntry[1]>=myentryprice+StopLossSet*2*minpoint Or Open<=myentryprice-StopLossSet*minpoint)
{
Sell(0,Open);
}
}
If(MarketPosition==-1)//有空仓的情况
{
If(LowestAfterEntry[1]<=myentryprice-StopLossSet1*2*minpoint Or Open>=myentryprice+StopLossSet1*minpoint)
{
BuyToCover(0,Open);
}
}
End
3、请各位老师帮忙看看 |
|