设为首页收藏本站

 找回密码
 注册
查看: 1715|回复: 6
打印 上一主题 下一主题

写了个简单的kd买卖指标,请教大神为何不能分批平仓 [复制链接]

Rank: 1

精华
0
UID
14928
积分
17
帖子
6
主题
1
阅读权限
10
注册时间
2010-7-26
最后登录
2023-11-24
跳转到指定楼层
1#
发表于 2019-7-18 14:11:02 |只看该作者 |倒序浏览
本帖最后由 mellking 于 2019-7-18 14:12 编辑

麻烦大神给看看,为何跌破均线的止盈一手总是不对。。。

//------------------------------------------------------------------------
// 简称: KD
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------


Params
        
                 Numeric Length(9);                        
        Numeric SlowLengthKD(3);         
        Numeric SmoothLength(3);
                 Numeric Lengthav(40);
               
Vars
   
         NumericSeries HighestValue;                                
        NumericSeries LowestValue;                                       
        NumericSeries KValue;
        NumericSeries DValue;
        NumericSeries RSV;
                 NumericSeries FARSV;
                 NumericSeries Av;
               
               
        Numeric MinPoint;           // 一个最小变动单位,也就是一跳
    Numeric MyExitPrice;        // 平仓价格
        NumericSeries MyEntryPrice;
                Numeric MyExitPrice2;  
Begin
    MinPoint = MinMove*PriceScale;


        Av = AverageFC(Close,Lengthav);

       
      HighestValue = HighestFC(High, Length);
        LowestValue = LowestFC(Low, Length);
        RSV=(Close-LowestValue)/(HighestValue-LowestValue)*100;
        FARSV=SMA(RSV,SlowLengthKD,1);
                KValue=SMA(FARSV,SlowLengthKD,1);
        DValue=SMA(KValue,SmoothLength,1);
               
        
      If(MarketPosition==0)
          {
             If(  CrossOver(KValue,DValue) && Close>av)
                 {
                 MyEntryPrice=close;
                 Buy(2,o);
                 }
             Else If (CrossUnder(KValue,DValue) &&close<av)
                 {
                 MyEntryPrice=close;
                 SellShort(2,o);
                 }
      }
            
         
If(MarketPosition==-1 )
{   
   if(High >= MyEntryPrice *1.01)// 止损条件表达式
        {
            MyExitPrice = MyEntryPrice *1.01;
            If(close > MyExitPrice) MyExitPrice = close;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            BuyToCover(0,MyExitPrice);
        }
   If(Low <= MyEntryPrice *0.98 )    // 止赢条件表达式
        {
     
            MyExitPrice = MyEntryPrice*0.98;
            If(close < MyExitPrice) MyExitPrice =close;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            BuyToCover(1,MyExitPrice);
  
        }  
        If(CrossOver(close[1],Av[1] ) )                // 止赢条件表达式2
                {
                  MyExitPrice2 =open;
                 BuyToCover(1, 0);
                }
               
               
}  
   
If(MarketPosition==1)  
{
   
   If(CrossUnder(close[1],av[1]))   // 止赢条件表达式
   {
      MyExitPrice2 =open;
          Sell(1,0);
   }
   
   if(Low <= MyEntryPrice *0.99)// 止损条件表达式
        {
            MyExitPrice = MyEntryPrice *0.99;
            If(close < MyExitPrice) MyExitPrice =Close;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            Sell(1,MyExitPrice);
        }

    If(High >= MyEntryPrice*1.02)   // 止赢条件表达式
   {
            MyExitPrice = MyEntryPrice *1.02;
            If(close > MyExitPrice) MyExitPrice =close;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            Sell(1,0);
            }
  
   
}   


End
//------------------------------------------------------------------------
// 编译版本        GS2015.12.25
// 用户版本        2019/07/17 13:34:18
// 版权所有        mellking
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
2#
发表于 2019-7-18 15:57:34 |只看该作者
把Buy(2,o);改成Buy(1,o);试试。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
3#
发表于 2019-7-19 10:09:50 |只看该作者
我将你的代码直接复制使用,是可以看到有分批平仓信号的。
你的信号图是什么样的呢?
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 1

精华
0
UID
14928
积分
17
帖子
6
主题
1
阅读权限
10
注册时间
2010-7-26
最后登录
2023-11-24
4#
发表于 2019-7-19 13:39:31 |只看该作者
小米 发表于 2019-7-19 10:09
我将你的代码直接复制使用,是可以看到有分批平仓信号的。
你的信号图是什么样的呢?
...

多谢回复!有分批平仓,但是我设定的是回撤到60线平仓,图上显示的不是按照回撤到60线平仓的,每次都是第一次止盈后第二根k线继续止盈,不知道怎么回事。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2019-7-19 14:54:44 |只看该作者
mellking 发表于 2019-7-19 13:39
多谢回复!有分批平仓,但是我设定的是回撤到60线平仓,图上显示的不是按照回撤到60线平仓的,每次都是第 ...

止赢条里的这两句,其中的crossover,crossunder是序列函数,放在条件中进行计算是可能导致计算结果有误的。
   If(CrossUnder(close[1],av[1]))   // 止赢条件表达式
   If(CrossOver(close[1],Av[1] ) )                // 止赢条件表达式2

建议多声明两个中间变量,将这两个在条件外将中间变量进行赋值计算后,再将变量代入条件中使用。

使用道具 举报

Rank: 1

精华
0
UID
14928
积分
17
帖子
6
主题
1
阅读权限
10
注册时间
2010-7-26
最后登录
2023-11-24
6#
发表于 2019-7-19 17:06:15 |只看该作者
小米 发表于 2019-7-19 14:54
止赢条里的这两句,其中的crossover,crossunder是序列函数,放在条件中进行计算是可能导致计算结果有误的 ...

老师,您好,我是新手。。。。
是定义个bool  ,比如aa=CrossUnder(close[1],av[1])?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
7#
发表于 2019-7-22 09:25:57 |只看该作者
mellking 发表于 2019-7-19 17:06
老师,您好,我是新手。。。。
是定义个bool  ,比如aa=CrossUnder(close[1],av[1])? ...

是的。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 02:15

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部