各位大神,能不能帮忙写个代码公式啊?
要求:
1、当K线收盘价格站上60均线时开多单,随后K线收盘价跌破10均线,平仓多单。随后收盘价再次站上10均线,开多单,K线收盘价跌破10均线,平仓多单。
2、当K线收盘价格跌破60均线时开空单,随后K线收盘价站上10均线,平仓空单。随后收盘价再次跌破10均线,开空单,随后K线收盘价再次站上10均线,平仓空单。
这个策略代码很简单,只需看官基网视频双均线教程就能照葫芦画瓢写出来。今帮您写了基础代码仅供学习参考,切切不可实盘否则后悔终生。
//------------------------------------------------------------------------
// 简称: jimi101811
// 名称:
// 类别: 策略应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Numeric FastLength(10); // 短期均线参数(10周期)
Numeric SlowLength(60); // 长期均线参数(60周期)
Vars
Series<Numeric> AvgValue1; // 10周期指数均线值
Series<Numeric> AvgValue2; // 60周期指数均线值
Events
OnReady()
{
// 确保均线计算有足够数据
SetBackBarMaxCount(1 + Max(FastLength, SlowLength));
Range[0:DataSourceSize() - 1]
{
setPlotOption("MA10", "begin-bar", FastLength); // 10均线绘制
setPlotOption("MA60", "begin-bar", SlowLength); // 60均线绘制
}
}
OnBar(ArrayRef<Integer> indexs)
{
// 计算10周期和60周期指数均线
AvgValue1 = AverageFC(Close, FastLength); // 10均线
AvgValue2 = AverageFC(Close, SlowLength); // 60均线
// 绘制均线
PlotNumeric("MA10", AvgValue1);
PlotNumeric("MA60", AvgValue2);
// ---------------------- 多头策略逻辑 ----------------------
// 1. 首次开多:收盘价站上60均线,且当前无多头持仓
If(MarketPosition != 1 // 无多头持仓
&& CrossOver(Close[1], AvgValue2 [1])// 收盘价站上60均线
)
{
Buy(1, Open); // 以当前K线开盘价开多
}
// 2. 多单平仓:持有多头时,收盘价跌破10均线
If(MarketPosition == 1 // 持有多头
&& CrossUnder(Close[1], AvgValue1[1]) // 收盘价跌破10均线
)
{
Sell(0, Open); // 以当前K线开盘价平多
}
// 3. 后续开多:收盘价再次站上10均线,且无多头持仓
If(MarketPosition != 1 // 无多头持仓(确保已平仓)
&& AvgValue1[1] > AvgValue2[1] // 10均线>60均线
&& CrossOver(Close[1], AvgValue1 [1]) // 收盘价站上10均线
)
{
Buy(1, Open); // 以当前K线开盘价再次开多
}
// ---------------------- 空头策略逻辑 ----------------------
// 1. 首次开空:收盘价跌破60均线,且当前无空头持仓
If(MarketPosition != -1 // 无空头持仓
&& CrossUnder(Close[1], AvgValue2[1]) // 收盘价跌破60均线
)
{
SellShort(0, Open); // 以当前K线开盘价开空(0表示全仓)
}
// 2. 空单平仓:持有空头时,收盘价站上10均线
If(MarketPosition == -1 // 持有空头
&& CrossOver(Close[1], AvgValue1[1]) // 收盘价站上10均线
)
{
BuyToCover(0, Open); // 以当前K线开盘价平空(0表示全平)
}
// 3. 后续开空:平仓后,收盘价再次跌破10均线,且无空头持仓
If(MarketPosition != -1 // 无空头持仓(确保已平仓)
&& AvgValue1[1] < AvgValue2[1] // 10均线<60均线
&& CrossUnder(Close[1], AvgValue1[1]) // 收盘价跌破10均线
)
{
SellShort(0, Open); // 以当前K线开盘价再次开空
}
}
//------------------------------------------------------------------------
// 编译版本 2025/10/19 162800
// 版权所有 kunger
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer策略修改和重写的权利
//------------------------------------------------------------------------代码运行如下图:
