以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=175508)

--  作者:金色阳光2020
--  发布时间:2020/4/14 8:01:42
--  [求助]股票分步平仓
股票日线,大于开仓价10%,平仓30%;之后回撤到成本附近(如1.01*enterprice)保本全平;
              大于开仓价20%,再次平仓30%;
              大于开仓价30%,再次平仓20%;
              大于开仓价40%,平余下仓位。
谢谢

--  作者:FireScript
--  发布时间:2020/4/14 8:13:57
--  
1. 你这个每次平仓的百分比是相对初始仓位的吧。
2.你这个是策略没有开仓语句。图表模型是要求开平都有才能出信号。
3.回撤到成本附近全平是全局生效,还是只是在“大于开仓价10%,平仓30%”后触发。
[此贴子已经被作者于2020/4/14 8:16:13编辑过]

--  作者:金色阳光2020
--  发布时间:2020/4/14 8:41:14
--  
谢谢

1.每次平仓的百分比是相对于初始仓位的。
2.图表程式化的平仓跟开仓一定要关联吗?
3.在“大于开仓价10%,平仓30%”后触发“是要的,如果能全局生效,自然最好。


--  作者:金色阳光2020
--  发布时间:2020/4/14 8:55:44
--  
另外想问一下,股票图表程式化交易,是不是只能在信达证券,财通证券,东方证券,安信证券和华鑫证券这5家开户才可以?
--  作者:金色阳光2020
--  发布时间:2020/4/14 9:16:12
--  
开仓语句
if holding=0 then
 buy(kd,30%,limitr,open);

以开盘价买入资金量的30%的股票数。

--  作者:FireScript
--  发布时间:2020/4/14 9:24:49
--  
1. 是的。图表上必须又开有平才行。
2.你这个逻辑里面还存在一些问题。比如价格突破开仓价30% 然后后面的K上一直横盘都在30%以上40%以下,这种情况下后面K要继续触发这个平仓条件还是只触发一次?

--  作者:金色阳光2020
--  发布时间:2020/4/14 9:32:43
--  
达到开仓价30%,只能触发一次。每次达到的10%,20%,30%,都只能触发一次,按初始仓位的百分比平仓。
--  作者:金色阳光2020
--  发布时间:2020/4/14 9:40:52
--  
由于是按资金量的固定百分比开仓某只股票,每次开仓的初始仓位股票数目不确定,只有进场后才有准确的股票数,初始仓位才是具体的。
--  作者:FireScript
--  发布时间:2020/4/14 9:52:37
--  
 开仓条件:cross(ma(c,5),ma(c,10));

N:=10;//手数,一百股一手
if 开仓条件 and holding=0 then  
begin
buy(1,100*N,market);
end

hd:=HOLDING-DAYHOLDING;//因为是股票,需要计算出可用持仓
cd0:=c<=ENTERPRICE*1.01 and hd>0;//价格回撤到平仓线
cd1:=c>ENTERPRICE*1.1 and c<ENTERPRICE*1.2 and hd>0;
cd2:=c>=ENTERPRICE*1.2 and c<ENTERPRICE*1.3 and hd>0;
cd3:=c>=ENTERPRICE*1.3 and c<ENTERPRICE*1.4 and hd>0;
cd4:=c>=1.4*ENTERPRICE and hd>0;


if count(cd1,ENTERBARS+2)=1 then
begin
平仓1:sell(cd1 and hd>0,0.3*N*100,MARKET);
end

if count(cd2,ENTERBARS+2)=1  then
begin
平仓2:sell(cd2 and hd>0,0.3*N*100,MARKET);    
end

if count(cd3,ENTERBARS+2)=1  then
begin
平仓3:sell(cd3 and hd>0,0.2*N*100,MARKET);
end

if count(cd4,ENTERBARS+2)=1 then
begin
平仓4:sell(cd4,0,MARKET);    
end

平仓0:sell(cd0,0,MARKET);//回撤全平





开仓条件必须明确,必须是某个条件,不能不指定入场条件。所以开仓部分你根据上面范例去修改成自己要的。

--  作者:金色阳光2020
--  发布时间:2020/4/14 14:00:42
--  
好,非常感谢!
用count(cond,enterbars+2)=1判断,避免重复。
我仔细琢磨一下。