老师们好,学习了一段时间,自己总结了一些问题,以双均线为例,把问题描述在程序里,错误的地方和不懂的地方麻烦老师指正,谢谢。
// 简称: DualMA
// 名称: 双均线交易系统
// 类别: 公式应用
// 类型: 内建应用
//------------------------------------------------------------------------
Params
Numeric FastLength(5);// 短期指数平均线参数
Numeric SlowLength(20);// 长期指数平均线参数
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
Series<Numeric> my_entryprice;
Events
OnBar(ArrayRef<Integer> indexs)
{
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
If(Time>0.0905 and Time<=0.1449 )//做日内,限制开仓时间为9:05-14:49,股指类的话另外设置
{
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1]) //没有持多仓开多仓 限制循环开仓 设置委托偏移,数字2代表两跳,是这么理解吗?滑点是什么呢?
{
Buy(0,Open);//这里0代表什么?按照可用资金最大开仓手数开仓吗?数字1代表1手,数字2代表2手,是这样理解吗?
my_entryprice=Open;
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1]) //没有持空仓开空仓 限制循环开仓 设置委托偏移,数字2代表两跳,是这么理解吗?滑点是什么呢?
{
SellShort(0,Open);
my_entryprice=Open;
}
//止盈 止损 和其他出场条件
//止损条件 加这个限制的话 And BarsSinceEntry > 0//开仓bar不止损止盈
If(MarketPosition>0 and 1ow< my_entryprice-10)//止损条件满足 EntryPrice-low>10 10就是10个点 任何一个品种10
{
Sell(0, min(O,my_entryprice-10));
}
else if(Marketposition>0 and high> EntryPrice+10)//止盈条件满足盈利10个点,EntryPrice,high-my_entryprice>10
{
Sell(0,max(O,my_entryprice+10));
}
else if(其他条件)//如kdj死叉就出场
{
Sell(0,Open);//这里用Open合适还是其他合适?如c 最新价?
}
//空头止损 止盈和其他出场条件同上
//把止损条件放在开仓条件前,就会形成开仓bar不止损 程序运行是由上往下 是这样吗?
//收盘前强制平仓
If (Date == CurrentDate AND CurrentTime >= 0.1455 AND Time == 0.1455 AND MarketPosition()!=0)
//本机时间14:55 强制平仓 Time == 0.1455为5分钟周期,15分钟周期改为0.1445 30分钟周期改为0.1430 这样理解正确吗?
{
If(MarketPosition() == 1) Sell(0,O);// 平全部多单
If(MarketPosition() == -1) BuyToCover(0,O);//平全部空单
}
}
其他问题:
Buy(0,Open);//这里0代表什么?按照可用资金最大开仓手数开仓吗?数字1代表1手,数字2代表2手,是这样理解吗?
进场Buy(1,Open) Buy(1,max(Open,H)和Buy(1,c)和Buy(1,last)//这几个进场表达有什么区别?c是不是代表最新价?last也是最新价吗?
出场Buy0,Open)和sell(0,min(Open,L))的区别是什么?
上一次kdj金叉到当前bar的距离怎么表达?
NthCon(CrossOver(J,K) , 1);这样表达可以吗?
关于止损:下面两个表达方式是一个意思吗?
1ow< my_entryprice-10 //开仓价亏损10个点出场
1ow< my_entryprice- Offset_ByJump(0,10)) // 这里不太明白Offset_ByJump 怎么使用
针对你的问题,现做部分解答,更多咨询欢迎加企业微信咨询。
Buy(0,Open);//这里0代表什么?按照可用资金最大开仓手数开仓吗?数字1代表1手,数字2代表2手,是这样理解吗?
0代表买入数量
进场Buy(1,Open) Buy(1,max(Open,H)和Buy(1,c)和Buy(1,last)//这几个进场表达有什么区别?c是不是代表最新价?last也是最新价吗?
Buy(1,Open)以开盘价买入1手;
Buy(1,max(Open,H)以开盘价和最高价的最大值买入1手;
Buy(1,c) c是Close的缩写,以收盘价买入1手,盘中以最新价买入;
Buy(1,last) 没有last函数,Q_Last 当前公式应用商品的最新价,不能使用于历史测试,仅适用于实时行情交易。
老师,您说的视频讲解是哪个?是腾讯课堂吗?
看置顶的投稿贴 等周四的时候直播讲 老师也方便 你听起来也容易
我觉得你这个投稿看视频讲解会更清楚
老师,有空了帮我指正一下,谢谢