If (MarketPosition == 0 && MACDValue[1] >= 0 && MAUP[1])
{
Buy(1, Open);
// 记录开仓前10天的最低价作为止损价
StopLossPrice = Lowest(Low[1], 10);
为什么TB StopLossPrice显示出来的不是买入开仓前10天内的最低价?而是开仓前1天的最低价?搞不懂?哪里写错了吗?
你这个就是经典的序列类型使用错误了
Lowest(Low[1], 10)这个函数的计算不要放在if分支结构或者and or 逻辑连接词后
正确的写法是
series<numeric> temp_low_10;
temp_low_10 = Lowest(Low[1], 10);
If (MarketPosition == 0 && MACDValue[1] >= 0 && MAUP[1])
{
Buy(1, Open);
// 记录开仓前10天的最低价作为止损价
StopLossPrice = temp_low_10;
}
相关机制原理的解释看这个零基础课程系列内容
https://www.bilibili.com/video/BV1BV411A7eo/?spm_id_from=333.999.0.0
Lowest(Low[1], 10); 序列函数的计算要放在if括号外,也就是主程序第一层
LOW10 = Lowest(Low[1], 10);
If (MarketPosition == 0 && MACDValue[1] >= 0 && MAUP[1])
{
Buy(1, Open);
// 记录开仓前10天的最低价作为止损价
StopLossPrice = LOW10;
}