// 定义参数
Params
Numeric pb1Length(4); // 瀑布线1的周期
Numeric pb2Length(6); // 瀑布线2的周期
Numeric pb3Length(9); // 瀑布线3的周期
Numeric pb4Length(13); // 瀑布线4的周期
Numeric pb5Length(18); // 瀑布线5的周期
Numeric pb6Length(24); // 瀑布线6的周期
Numeric TickSize(1); // 每个价位的单位(根据合约设置)
Vars
NumericSeries pb1; // 瀑布线1
NumericSeries pb2; // 瀑布线2
NumericSeries pb3; // 瀑布线3
NumericSeries pb4; // 瀑布线4
NumericSeries pb5; // 瀑布线5
NumericSeries pb6; // 瀑布线6
BoolSeries BuySignal; // 买入信号
BoolSeries SellSignal; // 卖出信号
Begin
// 计算6条瀑布线
pb1 = Average(Close, pb1Length);
pb2 = Average(Close, pb2Length);
pb3 = Average(Close, pb3Length);
pb4 = Average(Close, pb4Length);
pb5 = Average(Close, pb5Length);
pb6 = Average(Close, pb6Length);
// 在主图中显示瀑布线
PlotNumeric("PB1", pb1);
PlotNumeric("PB2", pb2);
PlotNumeric("PB3", pb3);
PlotNumeric("PB4", pb4);
PlotNumeric("PB5", pb5);
PlotNumeric("PB6", pb6);
// 生成买入信号:价格从下方上穿pb6达到2个价位
BuySignal = CrossOver(Close, pb6 + 2 * TickSize);
// 生成卖出信号:价格从上方跌破pb6达到1个价位
SellSignal = CrossUnder(Close, pb6 - 1 * TickSize);
// 交易逻辑
If (BuySignal && MarketPosition != 1) // 如果没有持仓且出现买入信号
{
Buy(1, AskPrice); // 以对手价(卖一价)开仓做多
}
If (SellSignal && MarketPosition == 1) // 如果持有多头且出现卖出信号
{
Sell(1, BidPrice); // 以对手价(买一价)平仓
}
End
上述程序是AI编写的,但在TB中有语法错误。求高手修改成可以在TB上运行的程序。程序的大致要求如下:1.定义6条瀑布线,参数分别为4,6,9,13,18,24,并分别命名为pb1,pb2,pb3,pb4,pb5,pb6。瀑布线能在主图中显示出来。2.如果价格从下方往上穿越pb6达到2个价位时,以对手价开仓做多。开仓后,如果价格一直在pb6上方,则一直持有,如果价格跌破pb6达到1个价位,则多单以对手价平仓。
https://bbs.tbquant.net/thread/20241205162315158864
按照帖子里的要求发代写需求贴