以文本方式查看主题

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

--  作者:158021589560
--  发布时间:2017/12/8 22:02:28
--  麻烦看下这样表达对吗
当最高价减去开仓价大于18个基点,然后回调至2个基点平多
当开仓价减去最低价大于18个基点,然后上升至2个基点平空,
这样表达对吗?》

VARIABLE:isProfit=0;
if H-ENTERPRICE>18*MINDIFF and isProfit=0 then isProfit:=1;
if ISProfit and c-ENTERPRICE>2*MINDIFF then
begin
sell(holding>0,1,THISCLOSE);
if ENTERPRICE-L>18*MINDIFF and isProfit=0 then isProfit:=1;
if ISProfit and ENTERPRICE-C>2*MINDIFF then
sellshort(holding<0,1,THISCLOSE);
isProfit:=0;//平仓后全局变量重置为0
end

--  作者:wenarm
--  发布时间:2017/12/8 22:57:02
--  
逻辑处理上不对,
if H-ENTERPRICE>18*MINDIFF and isProfit=0 then isProfit:=1;
if ISProfit and c-ENTERPRICE>2*MINDIFF then
第二行其实不能体现出回调2个价位的状态。
你的需求应该是移动止损吧?
你可以参考系统自带的移动止损范例对比学习看下
//移动止损部分************************
//求出持仓以来的最高价或最低价,通过与当前价做比较,判断资金回落的幅度
DTYDZS:=(HHV(H,ENTERBARS)-CLOSE)/AVGENTERPRICE>=0.1;
KTYDZS:=(CLOSE-LLV(L,ENTERBARS))/AVGENTERPRICE>=0.1;
SELL(DTYDZS,0,MARKET);
SELLSHORT(KTYDZS,0,MARKET);
//*************************************