开拓者期货期权程序化系统交易论坛

标题: 麻烦问一下TB怎样才能在单根K线上能够开平仓 [打印本页]

作者: yan13beckham    时间: 2019-9-23 09:55:42     标题: 麻烦问一下TB怎样才能在单根K线上能够开平仓

麻烦问一下TB怎样才能在单根K线上能够开平仓
作者: 小米    时间: 2019-9-23 10:11:19

本就没有限制,想怎么开平都行。
但是如果当前bar的开盘时就开的仓,那么是不建议在同一个bar上平仓的。否则会有信号变化的可能性。
作者: yan13beckham    时间: 2019-9-23 10:21:18

我是想历史数据不用单根K线开平仓 想实盘单K开平 请问老师你有办法吗 请问代码怎么写呢 通道类策略

作者: 小米    时间: 2019-9-23 11:00:41

yan13beckham 发表于 2019-9-23 10:21
我是想历史数据不用单根K线开平仓 想实盘单K开平 请问老师你有办法吗 请问代码怎么写呢 通道类策略
...

没啥好办法呢。
仅有的建议就是前面说的,在当前bar的open进行开仓。
作者: yan13beckham    时间: 2019-10-11 10:32:49

/开仓部分
     If(MarketPosition==0 and High>DonchianHi)  
     {
     buy(lots,Max(open,DonchianHi));
     }
     If(MarketPosition == 1 ) // 有多仓的情况
    {   
              If(Low<= EntryPrice-TrailingStop)
              {                  
                   MyExitPrice = EntryPrice-TrailingStop;
              If(Open < MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
                   Sell(0,MyExitPrice);
                   }
                   If(high >= EntryPrice+ zhiying)          //多头止盈
                {
                Sell(0,EntryPrice+ zhiying);
                }
   }
老师麻烦问一下 我这样写在一根K线上面,开平可以吗,会不会出现价格错乱
作者: 小米    时间: 2019-10-11 15:03:22

yan13beckham 发表于 2019-10-11 10:32
/开仓部分
     If(MarketPosition==0 and High>DonchianHi)  
     {

会有隐患的。
作者: yan13beckham    时间: 2019-10-11 15:15:24

小米老师请问怎么写最好
作者: yan13beckham    时间: 2019-10-14 09:07:33

yan13beckham 发表于 2019-10-11 10:32
/开仓部分
     If(MarketPosition==0 and High>DonchianHi)  
     {

会有隐患的。
作者: Yuen_Lee    时间: 2019-10-14 09:13:25

单根K线的开平仓,可以用全局变量控制两个方面。一个是确保单根K线上只能开仓一次(即平仓后不再开仓),二是止损设置(如果不是使用滑动止损,而以K线低点止损的话,则要用全局变量记录开仓时K线的低点值)。
作者: yan13beckham    时间: 2019-10-14 09:24:25

请问单根K线开平怎样写开仓平仓才不会有隐患
作者: yan13beckham    时间: 2019-10-14 09:53:50

Yuen_Lee 发表于 2019-10-14 09:13
单根K线的开平仓,可以用全局变量控制两个方面。一个是确保单根K线上只能开仓一次(即平仓后不再开仓),二 ...

老师能不能提供一些代码和写法,谢谢
作者: yan13beckham    时间: 2019-10-14 10:28:56

老师能不能提供一些代码和写法,
单根K线的开平仓,可以用全局变量控制两个方面。一个是确保单根K线上只能开仓一次(即平仓后不再开仓),二是止损设置(如果不是使用滑动止损,而以K线低点止损的话,则要用全局变量记录开仓时K线的低点值)。谢谢
作者: Yuen_Lee    时间: 2019-10-14 13:11:21

  1. If(BarStatus == 0)
  2. {
  3.         SetGlobalVar(0,-1);                //记录开仓K线所在时间time(如果做日线,则记录并对比日期date)
  4. }

  5. //开仓部分
  6. If(MarketPosition == 0 and High > DonchianHi and GetGlobalVar(0) <> time)  
  7. {
  8.         Buy(lots,Max(open,DonchianHi));
  9.         SetGlobalVar(0,time);
  10. }
  11. If(MarketPosition == 1)                // 有多仓的情况
  12. {   
  13.         If(Low <= EntryPrice-TrailingStop)
  14.         {                  
  15.                 MyExitPrice = EntryPrice-TrailingStop;
  16.                 If(Open < MyExitPrice) MyExitPrice = Open;                // 如果该Bar开盘价有跳空触发,则用开盘价代替
  17.                 Sell(0,MyExitPrice);
  18.         }
  19.         If(high >= EntryPrice+ zhiying)                //多头止盈
  20.         {
  21.                 Sell(0,EntryPrice+ zhiying);
  22.         }
  23. }

  24. If(GetGlobalVar(0) <> time)
  25.         SetGlobalVar(0,-1);

  26. //注:如果平仓K线不允许开仓,则要在两个Sell()语句后也都加上SetGlobalVar(0,time);
复制代码

作者: yan13beckham    时间: 2019-10-15 11:24:04

老师感谢了,麻烦问一下出现信号闪烁是因为什么原因呢


作者: Yuen_Lee    时间: 2019-10-15 13:02:29

本帖最后由 Yuen_Lee 于 2019-10-15 14:20 编辑

闪烁可能是多次执行了开仓指令吧。你可以在语句Buy(lots,Max(open,DonchianHi))后用FileAppend()将每次执行开仓的时间输出到一个文件,看是不是在最新K线上执行了多次开仓语句。但加了全局变量后不应该重复执行开仓语句了。
If(BarStatus == 2)
    FileAppend("C:\\log.txt", Text(date)+"\t"+Text(time*10000));

比如当前最新K线为20191015 13:30,则若你的文件里出现了多行同一时间的数据(如下),则说明是多次执行开仓造成的闪烁。
20191015    1330
20191015    1330
20191015    1330
20191015    1330
20191015    1330





欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2