以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请修改一下源码(加入止盈止损)  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=148506)

--  作者:icexiang
--  发布时间:2017/3/2 11:21:22
--  请修改一下源码(加入止盈止损)
我在贵方论坛发现一个源码,请问大神们能否添加一个止盈止损的策略?
比如说按几个变动价位止损/止盈/

input:inb(1,1,500,1),outb(1,1,500,1),risk(0.4,0,10,0.1); 
//和风版海龟源码 
variable:times=0,i=0,n=0; 
rn:=ema(ref(tr,1),20); 
n:=valuewhen(holding=0,rn); 
rh:=ref(h,1); 
rl:=ref(l,1); 
h1:hhv(rh,inb); 
h2:hhv(rh,outb),linedot; 
l1:llv(rl,inb); 
l2:llv(rl,outb),linedot; 
lotst:asset*risk*0.01/(n*2*multiplier),linethick0; 
lots:=if(risk=0,1,lotst); //如果risk取0,表示固定开1手 
tbc:=h<>l;//判断是否停板 
partline(holding>0,enterprice-2*n); 
if barpos<inb+1 then exit; 
if holding=0 and tbc then //不是停板才可以交易 
begin 
if h>h1 then //开多 
begin 
buyp:=max(o,h1); 
buy(1,lots,marketr,buyp); 
times:=1; 
while h>enterprice+n*0.5 and times<4 do 
begin 
buyp:=max(o,enterprice+n*0.5); 
buy(1,lots,marketr,buyp); 
times:=times+1; 
end;//连续开仓 
end;//开多结束 
else if l<l1 then //开空 
begin 
sellp:=min(o,l1); 
buyshort(1,lots,marketr,sellp); 
times:=1; 
while l<enterprice-n*0.5 and times<4 do 
begin 
sellp:=min(o,enterprice-n*0.5); 
buyshort(1,lots,marketr,sellp); 
times:=times+1; 
end;//连续开仓 
end; 
end;//holding=0
if holding>0 and tbc then //已有多仓 
begin 
exitlongp:=max(enterprice-2*n,l2); 
if l<exitlongp and enterbars<>0 then //出场 
begin 
exitp:=min(o,exitlongp); 
sell(1,0,marketr,exitp); 
times:=0; 
end;//出场 
else 
begin 
while h>enterprice+n*0.5 and times<4 do //开多 
begin 
buyp:=max(o,enterprice+n*0.5); 
buy(1,lots,marketr,buyp); 
times:=times+1; 
end;//连续开仓 
end;//else
end;//holding>0
if holding<0 and tbc then //已有空仓 
begin 
exitlongp:=min(enterprice+2*n,h2); 
if h>exitlongp and enterbars<>0 then //出场 
begin 
exitp:=max(o,exitlongp); 
sellshort(1,0,marketr,exitp); 
times:=0; 
end;//出场 
else 
begin 
while l<enterprice-n*0.5 and times<4 do //开多 
begin 
sellp:=min(o,enterprice-n*0.5); 
buyshort(1,lots,marketr,sellp); 
times:=times+1; 
end;//连续开仓 
end;//else 
end;//holding<0

--  作者:jinzhe
--  发布时间:2017/3/2 11:23:33
--  

几个点位的止盈止损:

 

if holding>0 and c>enterprice+10 then sell(1,0,marketr);

if holding<0 and c<enterprice-10 then sellshort(1,0,marketr);//止盈

 

if holding>0 and c<enterprice-10 then sell(1,0,marketr);

if holding<0 and c>enterprice+10 then sellshort(1,0,marketr);//止损