本人根据TB软件自带公式《幽灵交易者》学习参考,用到了前一次平仓盈利计算,但是到了进一步就信号错了以及不能够根据平仓计算有空来决定下一次开仓数量,不知道应该如何写,麻烦老师指导
我也试过改为marketposition==0的写法但是只能多头参考上一次空头平仓亏损后手数增加是对的,空头开仓不行而且一旦用到前一次利润myProfit值时数据冲突,没有信号。
感谢老师指导,我们也想学习好的,建议TB出多几本编写教材,把常用的案例在书中例子以及编程经常出现问题等等,找到的教材我目前只能靠TB陈总蓝色那本作为入门教程也是唯一一部(原版的都没得卖靠淘宝商家印刷),但是老是说我之前参考书中案例学习写,到了现在可能有些问题的。没有教材跟着软件开发同步培育用户市场,单靠老师回复和视频课程忙不过来的。
帮助中心里不是有吗?学习视频里不是有很多案例课吗?这怎么叫没有同步材料呢?
TB量化学院-期货期权程序化与量化系统自动交易软件金融领航者门户网站 - 开拓者金融网 (tbquant.net)
每次直播的时候都在介绍各种学习资源,看你发了这么多次帖子,有看过一次直播吗?
直播的录像也都上传在视频区了,有看过最近几期吗?
你这个手数不显示的问题,初步判断时因为lots参数为0,即使乘以2,依然为0,这是简单的小学数学问题而已。
你如果要修改,就直接把lots换成1,2*lots换成2就行了。
如果修改完依然还是有问题,那就是其他部分也出了问题,至于到底是哪里出问题,从你贴的代码里看不出来。
下面是一个能正常显示的案例代码
Params
Numeric FastLength(9); // 短期指数平均线参数
Numeric SlowLength(19); // 长期指数平均线参数
Numeric Length(9); // RSI参数
Numeric OverSold(30); // 超卖
Numeric OverBought(70); // 超买
Numeric Lots(1); // 交易手数
Vars
Series<Numeric> AvgValue1; // 短期指数平均线
Series<Numeric> AvgValue2; // 长期指数平均线
Series<Numeric> NetChgAvg(0);
Series<Numeric> TotChgAvg(0);
Numeric SF(0);
Numeric Change(0);
Numeric ChgRatio(0);
Series<Numeric> RSIValue; // RSI
Series<Numeric> ExitHiBand(0); // 唐奇安通道上轨
Series<Numeric> ExitLoBand(0); // 唐奇安通道下轨
Series<Numeric> myEntryPrice(0); // 进场价格
Series<Numeric> myExitPrice(0); // 出场价格
Series<Numeric> myProfit(0); // 利润
Series<Numeric> myPosition(0); // 多空标志
Events
OnBar(ArrayRef<Integer> indexs)
{
// 短期指数平均线
AvgValue1 = Xaverage(Close,FastLength);
// 长期指数平均线参数
AvgValue2 = Xaverage(Close,SlowLength);
// 计算RSI
If(CurrentBar <= Length - 1)
{
NetChgAvg = (Close - Close[Length])/Length;
TotChgAvg = Average(Abs(Close - Close[1]),Length);
}Else
{
SF = 1/Length;
Change = Close - Close[1];
NetChgAvg = NetChgAvg[1] + SF*(Change - NetChgAvg[1]);
TotChgAvg = TotChgAvg[1] + SF*(Abs(Change) - TotChgAvg[1]);
}
If(TotChgAvg <> 0)
{
ChgRatio = NetChgAvg/TotChgAvg;
}Else
{
ChgRatio = 0;
}
RSIValue = 50*(ChgRatio + 1);
// 唐奇安通道上轨
ExitHiBand = Highest(High,20);
// 唐奇安通道下轨
ExitLoBand = Lowest(Low,20);
PlotNumeric("ExitLoBand",ExitLoBand[1]);
PlotNumeric("AvgValue1[1]",AvgValue1[1]);
PlotNumeric("AvgValue2[1]",AvgValue2[1]);
Commentary("RSIValue[1]:"+text(RSIValue[1]));
// 持有多单时下破唐奇安通道下轨,平多单
If(myPosition == 1 And myPosition[1] == 1 And Low <= ExitLoBand[1])
{
myExitPrice = Min(Open,ExitLoBand[1]);
Sell(0,myExitPrice);
myProfit = myExitPrice - MyEntryPrice;
myPosition = 0;
}
Commentary("myProfit:"+text(myProfit));
// 模拟交易产生一次亏损、短期均线在长期均线之上、RSI低于超买值、创新高,则开多单
If(myPosition == 0 And myPosition[1] == 0 And AvgValue1[1] > AvgValue2[1] And RSIValue[1] < OverBought And High >= High[1])
{
myEntryPrice = Max(Open,High[1]);
myPosition = 1;
If(myProfit > 0) Buy(Lots,myEntryPrice);
If(myProfit < 0) Buy(2*Lots,myEntryPrice);
}
If(myPosition == 1) PlotBool("mark",True);
}
这次开了特例给你单独先写好了,以后碰到具体的代码问题请自行学习完成。
还是那句话,哪有让老师给你写作业的道理。
如果人人都像你这样想靠白嫖老师帮你写模型,确实是无法全部解决。
老师只能告诉怎么学习,作业还是要自己做的,哪有让老师给你写作业的道理。
客服建议我论坛发帖,论坛每次就建议我都叫我去投稿。。。。
我只想知道为什么之多系统用前一次平仓记录盈亏的赋值就可以正常,但是系统同时开多开空系统后,没不能同时引用平仓记录的盈亏赋值,老师可以先给写指导可以吗,投稿也是不容易排到的呀。我们发帖肯定遇到问题才请教的 。
涉及到代码开发工作的都是要投稿,否则人手有限,帖子根本回不过来。见谅
这种内容看投稿贴吧
不过有一说一,这种程度的问题都没办法自行研究完成的,建议慎重考虑走程序化开发的道路,或者专门聘请一个开发人员进行模型开发
老师要实现根据前一次盈亏,来决定当前开仓手数相对变化。
//上一次交易为盈利,出现开多信号,手数1倍。
//上一次交易为亏损,出现开多信号,手数2倍。
//上一次交易为盈利,出现开空信号,手数1倍。
//上一次交易为亏损,出现开空信号,手数2倍。
简单说代码如何写,因为我用参考软件公式写不能成功,
看不懂你这个在说什么...