以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  利润回撤提问  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=151788)

--  作者:a383623133
--  发布时间:2017/4/18 10:00:33
--  利润回撤提问
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//该模型运行于后台程序化模式

ZH1:\'1000\';
PZ1:\'IF00\';
VARIABLE:A=0;

//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);

//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10,1,LMT,CLOSE,0,ZH1,PZ1 );
TSELL(CONDSELL,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);



//移动止损模块部分*******************************
//A有三种数值状态:1,0,最新价;
//当A=1时表示当前有持仓,A=0时表示移动止损执行完毕,A=最新价时用于比较价格是否回落

//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX( \'\',\'\' ,0 )>0 AND EXTGBDATA(\'a\' )=0 THEN BEGIN
EXTGBDATASET( \'a\',1 );
END

//使A始终表示监控开始后的最高价
IF DYNAINFO(  7)>EXTGBDATA(\'a\' ) and EXTGBDATA(\'a\' )>0 THEN BEGIN
EXTGBDATASET( \'a\',DYNAINFO(  7));
END

//发现价格回落止损,并将A赋值为0表示移动止损动作完成
IF EXTGBDATA(\'a\' )-DYNAINFO(  7)>5*MINDIFF and EXTGBDATA(\'a\' )>0 THEN BEGIN
TSELL(1,1,MKT );
EXTGBDATASET( \'a\',0);
END
//*******************************
这是系统自带的移动止盈,不是很理解,想修改成最高盈利超过1%,回撤一半就平仓,该怎么修改??

--  作者:qq代人发帖
--  发布时间:2017/4/18 10:22:58
--  
用的后台交易吗?
--  作者:a383623133
--  发布时间:2017/4/18 10:25:25
--  
对的
--  作者:qq代人发帖
--  发布时间:2017/4/18 11:07:25
--  
hh:=hhv(h,tenterbars);
ydzs:=2*(hh-tavgenterprice)>=hh-tavgenterprice;//移动止盈条件

--  作者:a383623133
--  发布时间:2017/4/18 14:28:21
--  
策略有时候会多空仓都有开并同时持有,好像会错乱。。。
--  作者:FexTel
--  发布时间:2017/4/18 14:34:42
--  
看下后台监控日志,是不是监控里面有触发。实际账户没下单?
--  作者:a383623133
--  发布时间:2017/4/18 14:40:59
--  
有先开了多仓,用debugout函数观察到tenterbars函数开始从0开始计数,当计数到3的时候,开空单条件触发,之后tenterbars函数输出又变0了

--  作者:FexTel
--  发布时间:2017/4/18 14:46:13
--  
你自己加的空单?把你改后的代码发下,上面代码就一个多头
--  作者:a383623133
--  发布时间:2017/4/18 14:47:05
--  
账号:=\'\';
多仓均价:=TAVGENTERPRICEEX2(账号 ,\'\',0 )linethick0;
空仓均价:=TAVGENTERPRICEEX2(账号 ,\'\',1 )linethick0;
多仓:TBUYHOLDINGEX(账号 , \'\', 0)linethick0;
空仓:TSELLHOLDINGEX(账号 ,\'\' ,0 )linethick0;
未成多仓:TBUYHOLDINGEX(账号 , \'\', 3)linethick0;
未成空仓:TSELLHOLDINGEX(账号 ,\'\' ,3 )linethick0;
买一价:=DYNAINFO( 28);卖一价:=DYNAINFO( 34);
hh:hhv(h,tenterbars);
多仓最高盈利:=if(多仓>0,(hhv(h,tenterbars)-多仓均价)/多仓均价*100,0),linethick0;//得出%
空仓最高盈利:=if(空仓>0,(空仓均价-llv(l,tenterbars))/空仓均价*100,0),linethick0;//得出%
debugout(\'持仓以来最高价:%.2f\',hh);
debugout(\'多仓最高盈利:%.2f\',多仓最高盈利);
debugout(\'空仓最高盈利:%.2f\',空仓最高盈利);
debugout(\'持仓时长:%.2f\',tenterbars);
ydzs:=2*(hh-tavgenterprice)>=hh-tavgenterprice;//移动止盈条件
if c>ref(c,1) and 多仓=0 then TBUY(1,手数,lmt,卖一价,0,账号,\'\');//开多
if c<ref(c,1) and 空仓=0 then TBUYSHORT(1,手数,lmt,买一价,0,账号,\'\');//开空
tSELL(tenterbars>5,0,lmt,买一价,0,账号,\'\');//平多(限价)
tSELLSHORT(tenterbars>10,0,lmt,卖一价,0,账号,\'\');//平空(限价)

--  作者:FexTel
--  发布时间:2017/4/18 14:59:16
--  
你这个代码 多空仓同时存在很正常啊! 看开平仓条件