以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  金字塔K逐线模式下 自编的函数是否正确?动态止盈止损功能有时好用有时不好用 没有规律。。。。请高手指点错误在哪?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=47694)

--  作者:tclstn
--  发布时间:2013/1/14 10:47:17
--  金字塔K逐线模式下 自编的函数是否正确?动态止盈止损功能有时好用有时不好用 没有规律。。。。请高手指点错误在哪?

Function DTZYZS(Formula,T,K,D,F,W)
 \'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'
 \'函数机能:动态止盈止损
 \'参数说明:T 0:收阳止盈 1:收阴止盈 2:收阳止损 3:收阴止损 4:价格收阳止盈 5:价格收阴止盈
 \'         K 持仓价
 \'         D 指定值
 \'         F 浮动点
 \'         W 委托量  
 \'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'

    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
   
    If order.Holding2=0 Then
     Exit Function
    End If

 


    
 DTZYZS=1
 W=abs(W)
 \' 得到框架名称为"Technic",窗格名称为"Main"的窗格对象
 Set Grid = Technic.GetGridByName("Main")
 
 \'最新价格取得
 Set Report1=marketdata.GetReportData(Grid.StockLabel,Grid.Market)
 NewPrice=Report1.NewPrice

 \'分别处理
 Select Case T
  Case 0 \'收阳止盈
   If NewPrice >= K + D Then
    call order.Sell(0,W,NewPrice-F,0,Grid.StockLabel,Grid.Market,"",0)
    Application.msgout Cdate(time) & ":【止盈】委托价:" & NewPrice-F & "委托量:" & W
    DTZYZS=0
      End If
      Exit Function
  Case 1 \'收阴止盈
   If NewPrice <= K - D Then
    call order.SellShort(0,W,NewPrice+F,0,Grid.StockLabel,Grid.Market,"",0)
    Application.msgout Cdate(time) & ":【止盈】委托价:" & NewPrice+F & "委托量:" & W
    DTZYZS=0
      End If
      Exit Function
  Case 2 \'收阳止损
   If NewPrice <= K - D Then
call order.Sell(0,W,NewPrice-F,0,Grid.StockLabel,Grid.Market,"",0)
    Application.msgout Cdate(time) & ":【止损】委托价:" & NewPrice-F & "委托量:" & W
    DTZYZS=0
      End If
      Exit Function
  Case 3 \'收阴止损
   If NewPrice >= K + D Then
    call order.SellShort(0,W,NewPrice+F,0,Grid.StockLabel,Grid.Market,"",0)
    Application.msgout Cdate(time) & ":【止损】委托价:" & NewPrice+F & "委托量:" & W
    DTZYZS=0
      End If
      Exit Function
  Case 4 \'价格收阳止盈
   If NewPrice >= D Then
    call order.Sell(0,W,NewPrice-F,0,Grid.StockLabel,Grid.Market,"",0)
    Application.msgout Cdate(time) & ":【止盈】委托价:" & NewPrice-F & "委托量:" & W
    DTZYZS=0
      End If
      Exit Function
  Case 5 \'价格收阴止盈
   If NewPrice <= D Then
    call order.SellShort(0,W,NewPrice+F,0,Grid.StockLabel,Grid.Market,"",0)
    Application.msgout Cdate(time) & ":【止盈】委托价:" & NewPrice-F & "委托量:" & W
    DTZYZS=0
      End If
      Exit Function
 End Select

End Function

 

 

1.金字塔K逐线模式下 自编的函数是否正确?
2.动态止盈止损功能有时好用有时不好用 没有规律。。。。请高手指点错误在哪?

 



--  作者:rushtaotao
--  发布时间:2013/1/14 11:17:38
--  

首先我们给出的建议是,自定义函数中尽量不要去用逐k线,这样容易导致问题。具体问题可能还要经过测试才知道。

 


--  作者:tclstn
--  发布时间:2013/1/14 11:26:19
--  

那我用什么方法实现动态止盈止损?。。。谢谢


--  作者:tclstn
--  发布时间:2013/1/14 13:49:21
--  
动态止盈止损
回撤止盈止损
分批止盈
动态下单撤单
 哪个能写成自定义函数 用在K逐线下
不能的话
K逐线下如何实现

--  作者:rushtaotao
--  发布时间:2013/1/14 14:09:49
--  
不是非常明白您为什么一定要用逐k线 如果你要止赢止损 系统有自带的 如果不满足 直接往你策略里用相对应得最新价和开仓价格完成固定止盈 用最高价做出移动的止盈止损
--  作者:王锋
--  发布时间:2013/1/14 18:04:43
--  

调用 DTZYZS 自定义函数时,注意用 ISLASTBAR限定到最后一个BAR时试试


--  作者:just
--  发布时间:2013/1/15 11:09:36
--  
会不会是没有检测到持仓呢?