以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  金字塔软件问题提交  (http://222.73.7.161/bbs/list.asp?boardid=2)
----  止盈止损和动态止盈止损  (http://222.73.7.161/bbs/dispbbs.asp?boardid=2&id=154237)

--  作者:独行客
--  发布时间:2017/5/26 14:13:13
--  止盈止损和动态止盈止损

刚接触金字塔,软件好像没直接提供止盈止损函数,

请示例几个 固定止盈止损和移动止盈止损的范例,谢谢!

 

 


--  作者:shq
--  发布时间:2017/5/26 14:18:19
--  
请参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=2160
--  作者:独行客
--  发布时间:2017/5/26 14:37:21
--  
这个只是多头的止盈止损,空头止盈止损要怎么写?
--  作者:gxx978
--  发布时间:2017/5/26 14:41:17
--  

此代码中包含了持有空仓的止盈止损。

if holding<0 and enterbar>0 then ...   //这段就是计算空头的最大盈利的


--  作者:独行客
--  发布时间:2017/5/26 14:47:43
--  
以下是引用gxx978在2017/5/26 14:41:17的发言:

此代码中包含了持有空仓的止盈止损。

if holding<0 and enterbar>0 then ...   //这段就是计算空头的最大盈利的

但是代码最后的止盈止损只有SELL指令,

止损:SELL(win < -2,0);
止赢:SELL(win2 >= 60 and openprofit > 0, 0);

 

怎么没有空头的止盈止损SELLSHORT指令?

或是说我理解错了?


--  作者:gxx978
--  发布时间:2017/5/26 14:56:25
--  

后面那段改为:

多头止损:SELL(win < -2 and holding>0,0,market);
空头止损:SELLshort(win < -2 and holding<0,0,market);


多头止赢:SELL(win2 >= 60 and openprofit > 0 and holding>0, 0,market);

空头止赢:SELLshort(win2 >= 60 and openprofit > 0 and holding<0, 0,market);


--  作者:独行客
--  发布时间:2017/5/26 15:08:00
--  

还有我把这两段代码简化成下面的代码:测试结果却不一样,简化的逻辑有问题吗?

原代码:

if holding > 0 and enterbars > 0 then
begin
 win:=(c-enterprice)/enterprice*100; //记录最大盈利
 if win > maxprofit then
  maxprofit:=win; 
  
 win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end

if holding < 0 and enterbars > 0 then
begin
 win:=(enterprice-c)/enterprice*100; //记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
  
 win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end

--------------------------------------------------------------------------

简化后:

if holding <> 0 and enterbars > 0 then begin
 win:=abs(enterprice-c)/enterprice*100;   //记录最大盈利
 if win > maxprofit then begin
  maxprofit:=win;
  win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end
end

 


--  作者:yukizzc
--  发布时间:2017/5/26 15:14:47
--  


DTYDZS:=(HHV(H,ENTERBARS)-CLOSE)/AVGENTERPRICE>=0.1;
KTYDZS:=(CLOSE-LLV(L,ENTERBARS))/AVGENTERPRICE>=0.1;
SELL(DTYDZS,0,MARKET);
SELLSHORT(KTYDZS,0,MARKET);

 

直接用这个,别去自己记录变量了

交易系统-功能模块范例

这里有固定和移动的范例,而且都是很简单的处理方法


--  作者:gxx978
--  发布时间:2017/5/26 15:16:55
--  

if holding <> 0 and enterbars > 0 then begin
 win:=abs(enterprice-c)/enterprice*100;   //记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
  win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end

 

多了一个组begin。。end


--  作者:独行客
--  发布时间:2017/5/26 15:34:28
--  
以下是引用gxx978在2017/5/26 15:16:55的发言:

if holding <> 0 and enterbars > 0 then begin
 win:=abs(enterprice-c)/enterprice*100;   //记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
  win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end

 

多了一个组begin。。end

我原来也是这么简化,但是一测试结果和原范例不一样,就加了一组begin。。end,结果还是不一样!

版主麻烦你也测试对比一下结果!谢谢!