以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  交易策略发布专区  (http://222.73.7.161/bbs/list.asp?boardid=10)
----  【多头趋势策略】-Super Scalper系统  (http://222.73.7.161/bbs/dispbbs.asp?boardid=10&id=173419)

--  作者:yukizzc
--  发布时间:2019/12/6 11:04:13
--  【多头趋势策略】-Super Scalper系统
    Super Scalper系统,通过分析不同周期的SMA,EMA以及KDJ指标来研判长短期趋势,当出现同方向趋势时入场交易。止损止盈线采用Fibonacci线,按幅度来进行止盈止损。

一、Super Scalper策略思想
       采用趋势性技术指标  - SMA、EMA以及KDJ进行开仓信号的判断,基本思想是通过分析不同周期的指标来确认趋势长短,当存在长短期同方向趋势行情时才入场交易。
       止损采用Fibonacci回调线做为止损价格,简单来讲就是取上一轮行情的最高与最低价只差做为标准幅度【0%,100%】,确定一些特殊的点位例如61.8%、50%、23.6%来做为支撑或者阻力线,从而进行止损或止盈操作。

  示例代码以买入开仓为例,卖出开仓相反即可,原理如下:

开仓条件】
1、34期收盘价EMA处于上升趋势,即创N期新高;
2、8期收盘价SMA高于34期收盘价EMA;
3、KDJ指标中KD线向上交叉;
4、以KDJ中KD交叉时对应K线的最高价为突破条件,在之后四根K线内,价格突破最高价,立即买入开仓;

【止损止盈条件】
1、根据开仓价格落入Fibonacci回调线区间不同确定不同的止损条件,如下图
    
 开仓价所在区间     止损价格
   100%以上   61.8%
   78.6% - 100%   50%
   50% - 78.6%   23.6%
   23.6% - 50%   0%

2、当价格朝盈利方向变动时,触及第一止盈线127.2%时,平一半仓位,当触及第二止盈线161.8%时,平另一半仓位,如下图

   止盈价格  止盈数量 
   127.2%   50%
   161.8%   50%





二、金字塔策略源码

//定义参数
Input:N(81,1,100,10),P1(14,2,40,4),P2(14,2,40,4),P3(36,10,100,2);

//中间变量
Variable:ls=0,Gl=0,Dl=0;
Num:=2;
Em:=EMA(Close,34);     //收盘价34期EMA
Sm:=SMA(Close,8,1);    //收盘价8期SMA
Rsv:=(Close-Llv(Low,N))/(Hhv(High,N)-Llv(Low,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
Tp:=Valuewhen(Cross(k,d),High);                 //KD交叉时对应高点
Gj:=Valuewhen(H>=HHV(High,P3),High);     //前一轮行情最高价
Cond4:=Barslast(H>=HHV(High,P3));          //前一轮行情高点到现在的周期数
Dj:=Llv(Low,Cond4);      
//前一轮行情最低价

//交易条件
Cond1:=Sm>Em;
Cond2:=Cross(K,D);       //K、D交叉
Cond3:=Barslast(COND2)<=4 AND High>Tp;  //KD交叉以后四个周期内,价格突破
BuyCond:=Cond1 And K>D And Cond3;    
//开仓条件

//下单模块
If BuyCond And holding=0 Then
   Begin
   Buy(1,Num,Market);
   Gl:=Gj;      //开仓时前一轮行情高价
   Dl:=Dj;      //开仓时前一轮最低价
   ls:=Gl-Dl;   //区间幅度
   End
  
//幅度止损 
If Enterprice>=Gl And Close<=Dl+0.618*ls Then Sell(1,Num,Market);
If Enterprice>=Dl+0.786*ls And Enterprice<=Gl And Close<=Dl+0.5*ls Then Sell(1,Num,Market);
If Enterprice>=Dl+0.5*ls And Enterprice<=Dl+0.786*ls And Close<=Dl+0.236*ls Then Sell(1,Num,Market);
If Enterprice>=Dl+0.236*ls And Enterprice<Dl+0.5*ls And Close<=Dl Then Sell(1,Num,Market);
//幅度止盈
If Close>=Dl+1.272*ls Then Sell(1,Intpart(Num/2),Market);
If Close>=Dl+1.618*ls Then Sell(1,0,Market);