思路:价格回落至malength(250)之下再回升至malength(250)价位时,做多,设置买入价格-ATR作为止损,站稳后手动操作止盈。启动设置样本数1000,但是上一个买点后,没有平仓信号,本次符合开仓条件,无法开仓,该怎么克服这个问题。
把开仓条件 MarketPosition <> 1 删掉
越来越厉害了
这样调整后会不停地开仓,我的思路是,固定手数,平了后再开
什么意思,你是要模型识别你手动平的仓然后在图上给信号?
可以吗
硬要说的话,可以
但是开发难度我个人认为不小
具体可以参考review公式的逻辑思路
这个复盘公式就是把委托成交的订单重新画到图表上作为信号
如果原有手动开的1手多单,自动化启动,设置1手,满足开多条件,会另外再开一手吗
哇 又是新姿势
.....一千多行代码啊.....好家伙
orderreview,这个是怎么使用的哦,用在哪里,怎么调整参数
这个加载到单元里,读取该单元发送的委托报单记录,然后在k线图上画委托记录的对应信号
功能就这么简单,但是要实现,非常复杂
这个属于高级应用,这种内容已经超出教学范围了。
目前两种解决方案,发付费代写,问问老师能不能搞定,我感觉挺难的,很花时间精力,费用至少也是四位数。
另一种,自己多写多练,慢慢培养开发模型的能力。
按照你目前提问的内容来说,想开发这种程度的模型,不客气的说差的太远了,可能还需要学习练习很久才行
//------------------------------------------------------------------------
// 简称: L_SingleMoving
// 名称: 单一均线多头策略
// 类别: 策略应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Numeric Length(250); //均线周期
Numeric PositionLots(1);//头寸
Numeric ATRLength(20); // 平均波动周期 ATR Length
Numeric ATRMultiplier(1);
Vars
Series<Numeric> MALength;
Series<Numeric> AvgTR; // ATR
Series<Numeric> MyEntryPrice; // 开仓价格
Events
OnBar(ArrayRef<Integer> indexs)
{
MALength = Average(Close,Length);
AvgTR = XAverage(TrueRange,ATRLength); // 真实波动幅度的指数移动平均值
Range[0:DataSourceSize() - 1]
{
PlotNumeric("MALength", MALength,Red);
}
If(MarketPosition <> 1 And Close[1] < MALength[1] And H >= MALength)
{
Buy(PositionLots, Max(MALength, Open));
MyEntryPrice = Max(MALength,Open);
PlotString("d1","d1",Low-4*MinMove*PriceScale,Red);
Commentary("MyEntryPrice:"+Text(Max(MALength,Open)));
}
If(MarketPosition <> 1 And Low < MALength And H >= MALength)
{
Buy(PositionLots, MALength);
MyEntryPrice = MALength;
PlotString("d2","d2",Low-4*MinMove*PriceScale,Red);
Commentary("MyEntryPrice:"+Text(MALength));
}
If(MarketPosition <> 1 And low[1] <= MALength[1] - AvgTR[1] And High[1] >= MALength[1] And High >= MALength)
{
Buy(PositionLots, Max(MALength, Open));
}
If(MarketPosition == 1 And BarsSinceEntry > 0 And Low <= MALength - AvgTR)
{
Sell(PositionLots, MALength - AvgTR);
PlotString("ds","ds",Low-4*MinMove*PriceScale,Red);
}
/*If(MarketPosition == 1 And BarsSinceEntry > 0 And Close[1] >= MyEntryPrice*1.004 And Close[2] >= MyEntryPrice*1.004 and Close[3] >= MyEntryPrice*1.004 And Low <= MyEntryPrice*1.002)
{
Sell(PositionLots, MyEntryPrice * 1.002);
}*/
}
//------------------------------------------------------------------------
// 编译版本 2025/8/5 135304
// 版权所有 winter110
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer策略修改和重写的权利
//------------------------------------------------------------------------