以下先确认下您的需求:
1.程序化交易:图表
2.运行周期:假设为30分钟
3.交易品类:期货-螺纹连续
4.策略思想:
1)在持有多单的情况下,价格跌破20日均线,平掉一半仓位;
2)如果在1)之后价格回升,则重新加仓到原先的仓位;
3)如果价格跌破30日均线,全平。
3楼的即可:
补充下
1.if c>ma(c,20) then buy(1,exitvol,marketr);//这里需要注意,如果之前的平仓语句不止一条语句的话,则会取最近一次平仓操作的平仓量。
2.你的需求里面没有开仓语句,只有一个补仓的语句。如果半手动,半自动化,图表下你这个需求可能是最终实现不了。因为没有开仓语句,会导致图表上没有初始仓位,后续的一系列操作可能都会失效。
Input:s(10,1,10,1);
Csc:=cross(close,ma20);
Sc:=cross(close,ma10);
Cxc:=cross(ma20,close);
Xc:=cross(ma10,close);
if holding=0 then begin
if csc then
buy(1,s,MARKETR);
end
if holding=0 then begin
if CXC then
buyshort(1,s,MARKETR);
end
if holding>0 then begin
if CLOSE>ma20 AND XC then
sell(1,5,marketr);
end
IF HOLDING>0 THEN BEGIN
IF CLOSE>ma20 AND SC THEN
buy(1,5,marketr);
if holding>0 then begin
if CXC then
SELL(1,holding,MARKETR);
END
if holding<0 then begin
if CLOSE<ma20 AND SC then
sellshort(1,5,marketr,);
end
IF HOLDING<0 THEN BEGIN
IF CLOSE<ma20 AND XC THEN
buyshort(1,5,marketr);
END
IF HOLDING<0 THEN BEGIN
IF CSC THEN
sellshort(1,holding,MARKETR);
END
编译通不过,哪里的问题。谢谢
通常编译不通过,编辑界面一般都能直接定位到错误所在。
这里多了个逗号。
此外:
if holding=0 then begin
if csc then
buy(1,s,MARKETR);
end
修改成如下:
if holding=0 and cxc then buyshort(1,s,MARKETR);
其他几个都这样优化下。