老师 开仓后引用开仓时的那根k线的高低价 做止损位 用enterbars 做不到 请问怎么解决
用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的最高价和最低价。
老师 能给看下 一下代码 为什么正常止损止盈, 我想实现的是 在开仓后指标相反止盈,做多在开仓引用的那根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
“
我想实现的是 在开仓后指标相反止盈” 这啥意思?你这个代码和你前面说的思路不一致。把你多空止盈止损思路完整描述下吧。
[此贴子已经被作者于2020/5/14 9:06:54编辑过]
这个给超卖找买指标 满足 u就做空 满足d做多,
x1>4*MINDIFF and h-d>=x1*1.1止盈, 反正空赢, 止损为开多仓以开仓引用的开仓时拿根k线最低点作为止损位, 开空仓反之, 这样解释可以吗
这里
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编辑过]