以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]编写求助  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=159362)

--  作者:曦瓜
--  发布时间:2017/11/9 13:55:59
--  [求助]编写求助
持有多单当价格跌破20日线平仓位的一半,如果价格再次站上则买回卖出仓位,如果价格跌破30日线则平掉所有仓位,如何编写,谢谢
--  作者:FireScript
--  发布时间:2017/11/9 14:17:35
--  

以下先确认下您的需求:

1.程序化交易:图表

2.运行周期:假设为30分钟

3.交易品类:期货-螺纹连续

4.策略思想:

1)在持有多单的情况下,价格跌破20日均线,平掉一半仓位;

2)如果在1)之后价格回升,则重新加仓到原先的仓位;

3)如果价格跌破30日均线,全平。

 

 

[此贴子已经被作者于2017/11/9 14:18:13编辑过]

--  作者:yukizzc
--  发布时间:2017/11/9 14:19:09
--  
if c<ma(c,20) then sell(1,50%,marketr),PERTRADER;
if c>ma(c,20) then buy(1,exitvol,marketr);
if c<ma(c,30) then sell(1,0,marketr);

--  作者:曦瓜
--  发布时间:2017/11/9 14:20:23
--  
对 图表交易
--  作者:曦瓜
--  发布时间:2017/11/9 14:21:16
--  
谢谢
--  作者:FireScript
--  发布时间:2017/11/9 14:31:33
--  

3楼的即可:

补充下

1.if c>ma(c,20) then buy(1,exitvol,marketr);//这里需要注意,如果之前的平仓语句不止一条语句的话,则会取最近一次平仓操作的平仓量。

2.你的需求里面没有开仓语句,只有一个补仓的语句。如果半手动,半自动化,图表下你这个需求可能是最终实现不了。因为没有开仓语句,会导致图表上没有初始仓位,后续的一系列操作可能都会失效。

 


--  作者:曦瓜
--  发布时间:2017/11/10 8:56:48
--  
我是用自动交易,还有这个能控制一个固定手数吗?例如就用10手。测试看用的是全部资金,所设手数没用。谢谢
--  作者:qq代人发帖
--  发布时间:2017/11/10 9:03:55
--  
10手就把下单指令的第二个参数改成10
if c<ma(c,20) then sell(1,10,marketr);
if c>ma(c,20) then buy(1,10,marketr);
if c<ma(c,30) then sell(1,10,marketr);

--  作者:曦瓜
--  发布时间:2017/11/10 10:02:53
--  

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

编译通不过,哪里的问题。谢谢


--  作者:FireScript
--  发布时间:2017/11/10 10:27:46
--  

通常编译不通过,编辑界面一般都能直接定位到错误所在。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

这里多了个逗号。

 

此外:

if holding=0 then begin

     if csc   then

         buy(1,s,MARKETR);

end

修改成如下:

if holding=0 and cxc then buyshort(1,s,MARKETR);  

 

其他几个都这样优化下。