如何在日线级别做双均线买入卖出策略,在tick级别做跟踪止损
2022-06-24 14:30

如果我想在日线级别做双均线买入卖出策略,在tick级别做跟踪止损,请问一下,这样的策略该怎么写?有示例代码吗?

多周期我知道怎么写代码,但是我在两个周期同时有买入卖出会弹框提示有信号闪烁问题,请问有示例代码吗?

谢谢老师!

评论区
citysir

//------------------------------------------------------------------------
// 简称: dual_ma_test
// 名称: dual_ma_test
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
    Numeric fastLength(10); 
    Numeric slowLength(20);
    Numeric stopLossRate(1);

Vars
    Series<Numeric> ma10;
    Series<Numeric> ma20;
    Series<Numeric> myEntryPrice;
    
    Global Numeric highestAfterEntry;
    Global Numeric lowestAfterEntry;


Defs
    //此处添加公式函数
    
Events
//此处实现事件函数

//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
    
}


//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
    Range[0:0]
    {
        ma10 = AverageFC(Close[1], fastLength);
        ma20 = AverageFC(Close[1], slowLength);
    
        If(MarketPosition <> 1 and CrossOver(ma10, ma20)) {
            Buy(0, Open);
            myEntryPrice = Open;
        }
        IF(MarketPosition <> -1 and CrossUnder(ma10, ma20)) {
            SellShort(0, Open);
            myEntryPrice = Open;
        }
    }            
        
    Range[1:1]
    {
        highestAfterEntry = Max(highestAfterEntry, High[1]); 
        lowestAfterEntry = Min(lowestAfterEntry, Low[1]);         
        
        If(data0.MarketPosition == 1) {
            IF(CLOSE[1] / myEntryPrice > 1 + stopLossRate / 100.0 AND highestAfterEntry / CLOSE[1] >= 1 + stopLossRate / 100.0) {
                data0.Sell(0, Low);
            }
        }
        IF(data0.MarketPosition == -1) {
            IF(myEntryPrice / CLOSE[1] > 1 + stopLossRate / 100.0 AND CLOSE[1] / lowestAfterEntry >= 1 + stopLossRate / 100.0) {
                data0.BuyToCover(0, High);
            }
        }
    }
        
}
 

 

/*

帮忙看一下,应用到 rb2209 上面,data0 15分钟线 data1 1分钟线。会报发生信号闪烁。

*/

 

 

2022-06-25 11:34
citysir

在1分钟级别做跟踪止损的示例也可以的

2022-06-24 14:35
顶部