以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 通常编译不通过,编辑界面一般都能直接定位到错误所在。
这里多了个逗号。
此外: if holding=0 then begin if csc then buy(1,s,MARKETR); end 修改成如下: if holding=0 and cxc then buyshort(1,s,MARKETR);
其他几个都这样优化下。 |