以文本方式查看主题

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

--  作者:进击的红太狼
--  发布时间:2018/12/5 20:11:19
--  不能实现移动止损
请版主帮看看,移动止损部分是在其他帖子上拷贝学习的,好像不能实现移动止盈的功能呢,我自己初步判断是不是high和low的数值不对,因为我是在5nK线上加载的。请帮忙看下该怎么实现移动止盈功能。

//各种变量***************************************
input:NumberOpenPositions(1,1,10),NumberStop(15,10,20),TargetProfit(30,10,1000);
variable:MaxProfit=0;
TodayOpen:valuewhen(todaybar=1,open);
MaOneMin:ma(close,12);
CrossUp:cross(MaOneMin,TodayOpen),nodraw;
CrossDown:cross(TodayOpen,MaOneMin),nodraw;

//固定止损部分***********************************
if enterprice-c>NumberStop*mindiff and holding>0 then
   sell(1,holding,marketr);
if c-enterprice>NumberStop*mindiff and holding<0 then
   sellshort(1,holding,marketr);

//移动止损部分***********************************
if holding>0 and enterbars>=0 then begin
   win:=high-avgenterprice;
   if win>MaxProfit then MaxProfit:=win;
   win2:=MaxProfit-win;end
if holding<0 and enterbars>=0 then begin
   win:=avgenterprice-low;
   if win>MaxProfit then MaxProfit:=win;
   win2:=MaxProfit-win;end
if MaxProfit>=TargetProfit*mindiff and win2>0.2*MaxProfit then begin
   sell(holding>0,holding,marketr);
   sellshort(holding<0,holding,marketr);
   MaxProfit:=0;end
   
//开仓部分****************************************
//if MaOneMin>TodayOpen and holding=0 then
   buyshort(CrossDown,NumberOpenPositions,marketr);
//if TodayOpen>MaOneMin and holding=0 then
   buy(CrossUp,NumberOpenPositions,marketr);
   
当前持仓:HOLDING,COLORGRAY,LINETHICK0,nodraw;

--  作者:FireScript
--  发布时间:2018/12/6 9:39:08
--  
 这段代码并没有什么问题的。你觉得有问题你需要具体指出来,具体情况具体分析。比如某个K线某个价格情况下符合条件却没有移动止损之类的,给出具体例子说明,才能方便处理的。另外如果你是没办法分清里面各种开平操作的情况,可以给交易语句做一下处理:

比如

if MaxProfit>=TargetProfit*mindiff and win2>0.2*MaxProfit then begin
   移动止损1:sell(holding>0,holding,marketr);
   移动止损2:sellshort(holding<0,holding,marketr);
   MaxProfit:=0;end

这样你也能看到具体什么位置出了止损的信号。