Params
Numeric FastLength(0.5);
Numeric StopLength(35); // StopLength是一个数值变量,指定止损距离的跳数
Vars
Numeric i;
Numeric my_entryprice;
Numeric StopPrice; //
Events
OnBar(ArrayRef<Integer> indexs)
{
// 循环处理每个交易周期
Range[0:DataSourceSize() - 1]
{
// 计算指标
i = (High[1] - Close[1]) *fastlength;
if(MarketPosition>0 && my_entryprice-LOW>35) // 如果我们持有多头仓位止损
{
sell(1,Min(StopPrice,Close));
PlotNumeric(\"止损出场价格\", min(Open,StopPrice)); // 在图表上画出我们的止损出场价格
}
// 添加根据条件开仓的逻辑
if (MarketPosition<>1&& high[0] > Open[0] + i)
{
my_entryprice = Open[0] + i;
Buy(1, my_entryprice);
StopPrice=my_entryprice -StopLength; // 根据我们的入场价格和止损距离计算并设置止损价格
}
}
If(MarketPosition==1&&longContractProfit()>0&&BarsSinceEntry()>=1&&Open[0]>=Close[1])
sell(1,Close[0]);
//更新持仓状态
}
代码如上在标红处是有疑问的代码在满足条件时,sell不执行请问如何修改!!!!
你在你那红色的语句前面把 my_entryprice 输出来看看,你会发现,my_entryprice 永远是0,于是my_entryprice-LOW 永远都不可能大于35,于是你那止损语句永远不会执行。
解决方法:把 my_entryprice 定义成序列变量试试
感谢按照你说的换成Series<Numeric> 来定义my_entryprice 就解决了 ! 比人工客服和他们每天回复的靠谱多了谢谢
试试输出一下当时的图表资金 看看钱够不够开你的手术
可以输出的 就是标红代码无法执行请问怎么解决