以文本方式查看主题

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

--  作者:zengxing
--  发布时间:2018/7/1 11:08:48
--  编写程序问题求教
我想编写一个程序,3连阳之后,突破最后一个阳线的高点开多,
止盈是 3个阳线最高点和最低点的距离
止损是:低点反手开空。

然后,这次开空的
止盈是3个阳线最高点和最低点的距离,再加一次,最后的阳线,高点到低点的距离。
止损是 阳线高点,这次止损之后就平仓了,不再开多。

这个要怎么写,求教。


--  作者:Damoclus
--  发布时间:2018/7/1 11:38:52
--  
以下是引用zengxing在2018/7/1 11:08:48的发言:
我想编写一个程序,3连阳之后,突破最后一个阳线的高点开多,
止盈是 3个阳线最高点和最低点的距离
止损是:低点反手开空。

然后,这次开空的
止盈是3个阳线最高点和最低点的距离,再加一次,最后的阳线,高点到低点的距离。
止损是 阳线高点,这次止损之后就平仓了,不再开多。

这个要怎么写,求教。



红色部分:”再加一次“ 表达的是什么


--  作者:wenarm
--  发布时间:2018/7/1 14:37:40
--  
以下是引用zengxing在2018/7/1 11:08:48的发言:
我想编写一个程序,3连阳之后,突破最后一个阳线的高点开多,
止盈是 3个阳线最高点和最低点的距离
止损是:低点反手开空。

然后,这次开空的
止盈是3个阳线最高点和最低点的距离,再加一次,最后的阳线,高点到低点的距离。
止损是 阳线高点,这次止损之后就平仓了,不再开多。

这个要怎么写,求教。

3连阳之后,突破最后一个阳线的高点开多???  这里说的突破最后一个阳线,指的是3连阳的第三根,还是之外的一根,即4根阳线。

止盈3个阳线的最高和和最低点的距离是两者之差?  止盈条件和谁比较?

低点反手开空,低点的定义是3根阳线的最低点?等等,请吧你的需求条件具体化。

[此贴子已经被作者于2018/7/1 14:38:22编辑过]

--  作者:zengxing
--  发布时间:2018/7/2 13:04:33
--  
举个例子好了
1月1日 开盘100 收盘110 最低95 最高 115
1月2日 开盘105 收盘 118 最低90 最高 120
1月3日 开盘108 收盘120 最低100 最高 130

三连阳

之后,如果价格突破130元,做多。
止盈是 130+(130-90)=170
价格到100,止损后反手做空是 

100开空后,止盈是  100-(130-100)-(130-90)=30
止损平仓(不反手了)是  130元。
在这之后循环,等待下次三连阳

--  作者:zengxing
--  发布时间:2018/7/2 13:48:52
--  
举个例子好了
1月1日 开盘100 收盘110 最低95 最高 115
1月2日 开盘105 收盘 118 最低90 最高 120
1月3日 开盘108 收盘120 最低100 最高 130

三连阳

之后,如果价格突破130元,做多。
止盈是 130+(130-90)=170
价格到100,止损后反手做空是 

100开空后,止盈是  100-(130-100)-(130-90)=30
止损平仓(不反手了)是  130元。
在这之后循环,等待下次三连阳

--  作者:FireScript
--  发布时间:2018/7/2 13:50:54
--  
 
VARIABLE:n:=0,m:=0,3h:=0,3l:=0;

t1:=hhv(h,3);
t2:=llv(l,3);
if count(c>o,3)=3 and n=0 and m=0 and 3h=0 and 3l=0 then
begin
n:=h;
m:=l;
3h:=t1;
3l:=t2;
end

if c>=n  and n<>0 then buy(holding=0,1,market);

sell(holding>0 and c>2*n-3l and n<>0,holding,market);

if c<=m and m<>0 then
begin
sell(holding>0,holding,market);
buyshort(holding=0,1,market);
end

止盈2:=holding<0 and c<2*m-2*n+3l and n<>0;

if  止盈2 then
begin
sellshort(holding<0,holding,market);
n:=0;
m:=0;
3h:=0;
3l:=0;
end

止损3:=holding<0 and c>n and n<>0;

if 止损3  then
begin
sellshort(holding<0,holding,market);
n:=0;
m:=0;
3h:=0;
3l:=0;
end

供参考下,以上代码会记住第一次三阳时候的各个值。而不会按照最近的三阳去刷新值。
[此贴子已经被作者于2018/7/2 14:29:08编辑过]

--  作者:wenarm
--  发布时间:2018/7/2 13:54:24
--  

你所说的三连阳,如果后面依旧是阳线即大于3根以上的连续阳线情况下,怎么突破?

[此贴子已经被作者于2018/7/2 13:54:50编辑过]

--  作者:zengxing
--  发布时间:2018/7/2 14:01:49
--  
算最近的三连阳
--  作者:wenarm
--  发布时间:2018/7/2 14:52:02
--  


bb:BARSLAST(ref(ALL(close>open,3),1) and c<=o)+1;
hh:=hhv(h,3);
ll:=LLV(LOW,3);
high_flag:ref(hh,bb);
llv_flag:ref(ll,bb);

if HIGH>high_flag and ref(ALL(close>open,3),1) and c<=o and HOLDING=0 then BEGIN
 buy(1,1,MARKET);
end

IF HIGH>high_flag+(high_flag-llv_flag) and  HOLDING>0 THEN BEGIN
 多头止盈:SELL(1,HOLDING,MARKET);
END

IF LOW < REF(LOW,BB) and HOLDING>0 THEN BEGIN
 多头止损:SELL(1,HOLDING,MARKET);
 BUYSHORT(1,1,MARKET);
END

if REF(LOW,BB)-(high_flag-REF(LOW,BB))-(high_flag-llv_flag)> low and holding<0 then BEGIN
 空头止盈:sellSHORT(1,1,MARKET);
end

IF HIGH>high_flag and  HOLDING<0 THEN BEGIN
 空头止损:SELL(1,HOLDING,MARKET);
END


--  作者:zengxing
--  发布时间:2018/7/2 17:40:59
--  
没有看到 第一次止损,反手空头开仓的开空语句呀.
第二次止损是平仓,没有反手的。

这个本身是一个完整的策略。

多头是3连阳,是我刚刚说的思路,
还有3连阴,是正好相反的,可以止盈,然后止损反手。

我实在没懂,这个写的,可以完整的指导一下吗?谢谢