以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  取开仓那根k线的高低价做止损  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=176022)

--  作者:arutema
--  发布时间:2020/5/13 16:48:44
--  取开仓那根k线的高低价做止损
老师 开仓后引用开仓时的那根k线的高低价 做止损位   用enterbars 做不到  请问怎么解决 
--  作者:FireScript
--  发布时间:2020/5/13 16:57:14
--  
 用enterbars可以做到的。

但是这个函数取值和代码所在位置有关。最好放在开仓语句后面。

jc:cross(ma(c,5),ma(c,10));
buy(jc and holding=0,1,market);
kch:ref(h,enterbars+1),NODRAW;
kcl:ref(l,enterbars+1),NODRAW;

kch,kcl分别就是开仓K的最高价和最低价。

--  作者:arutema
--  发布时间:2020/5/13 19:20:07
--  
老师  能给看下 一下代码 为什么正常止损止盈,  我想实现的是 在开仓后指标相反止盈,做多在开仓引用的那根k线最低点设止损,空单开仓引用的那根k线最高点设空止损,为啥写出在是混乱的 错在哪
u:ref(ma(hhv(HIGH,3),1),1),COLORRED;,
d:ref(ma(llv(l,3),1),1),COLORgreen;
x1:u-d,colorblue;
VARIABLE:g:=0;
多赢:sell(x1>4*MINDIFF and h-d>=x1*1.1 and HOLDING>0,HOLDING,MARKEt);//
空赢:sellshort(x1>4*MINDIFF and u-l>=x1*1.1 and HOLDING<0,holding,MARKET);//
多进:buy(x1>4*MINDIFF and u-l>=x1*1.1 and holding=0,1,MARKET);// 
aa: llVBARS(l,ENTERBARS),NODRAW;//-((h-l)/2)
 if holding>0 then g:=aa;
IF  g>c and HOLDING>0 THEN BEGIN
多损:SELL(1,HOLDING,MARKET);
END
空进:BUYSHORT(x1>4*MINDIFF and h-d>=x1*1.1 and HOLDING=0,1,MARKET);//
aa1: HHVBARS(h,ENTERBARS),NODRAW;//+((h-l)/2)
if holding<0 then g:=aa1;
IF  g < c and HOLDING<0 THEN BEGIN
空损:SELLshort(1,HOLDING,MARKET);
END

--  作者:FireScript
--  发布时间:2020/5/14 9:01:17
--  
 “我想实现的是 在开仓后指标相反止盈” 这啥意思?你这个代码和你前面说的思路不一致。把你多空止盈止损思路完整描述下吧。
[此贴子已经被作者于2020/5/14 9:06:54编辑过]

--  作者:arutema
--  发布时间:2020/5/14 11:22:08
--  
这个给超卖找买指标 满足 u就做空  满足d做多,x1>4*MINDIFF and h-d>=x1*1.1止盈, 反正空赢,  止损为开多仓以开仓引用的开仓时拿根k线最低点作为止损位, 开空仓反之,  这样解释可以吗  
--  作者:FireScript
--  发布时间:2020/5/14 13:31:02
--  
这里
aa: llVBARS(l,ENTERBARS),NODRAW;//-((h-l)/2)
 if holding>0 then g:=aa;
IF  g>c and HOLDING>0 THEN BEGIN
多损:SELL(1,HOLDING,MARKET);
END
空进:BUYSHORT(x1>4*MINDIFF and h-d>=x1*1.1 and HOLDING=0,1,MARKET);//
aa1: HHVBARS(h,ENTERBARS),NODRAW;//+((h-l)/2)
if holding<0 then g:=aa1;
IF  g < c and HOLDING<0 THEN BEGIN
空损:SELLshort(1,HOLDING,MARKET);
END

这2个地方应该是尝试表示的是开仓以来的最高,最低价 并非开仓K位置的高地价。这个明确下到底是要表达是的开仓K的最高最低价,还是开仓以来的最高最低价。

另外就是就算表达的是开仓以来的最高最低价,也是有错误的。这里要做个+1的操作。否则开仓第二个K,ENTERBARS是0.
HHVBARS(h,ENTERBARS+1
[此贴子已经被作者于2020/5/14 13:31:49编辑过]

--  作者:jzt006
--  发布时间:2020/6/15 12:48:56
--  
注意检查符号,和符号的大小写。