记录个临时低点

当前bar的最高价大于前个bar最高点时,会有个临时低点,这个低点怎么记录谢谢老师

先学会定义清晰帮你梳理一下你的原题设:当前bar的最高价大于前个bar最高点时,会有个临时低点简单的摘出关键信息:bar的最高价 => h前个bar最高点 => h[1] 你认为h和h[1]之间有一个低点那么只能是 min(low,low[1]);但是根据你下面发的一堆内容,好像又不是所以你研究下你这个题设是不是你要的,你发了好几个代码了,基本问题都是逻辑不清晰

等回复

回复:你这个num是个什么东西?我看你平仓以后都没有重置这个变量,那以后怎么继续开仓呢?

回复:而且这个num居然是一个global 回测倒是没什么问题,实盘必然会信号闪烁

//------------------------------------------------------------------------// 简称: rx// 名称: 荣轩// 类别: 公式应用// 类型: 用户应用// 输出: Void//------------------------------------------------------------------------Params //此处添加参数 Numeric FastLength(26);// 短期指数平均线参数Vars //此处添加变量 Global Integer num(0); Series<Numeric> firstlow; Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Numeric MinPoint; // 一个最小变动单位,也就是一跳 Series<Numeric> D7; Series<Numeric> D71; Series<Numeric> D11; Series<Numeric> D111; Series<Numeric> baramount; Series<Numeric> barvol; Series<Numeric> dayavg; Series<Numeric> MyEntryPrice; // 开仓价格,例中为开仓均价,可设置为某次入场价 Series<Numeric> MyExitPrice; // 平仓价格 Series<Numeric> TakeProfitSet(2); // 止赢设置 Series<Numeric> StopLossSet(6); // 止损设置 Events //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnInit() { array<Numeric> timepoint; timepoint[0] = 0.112450; timepoint[1] = 0.145450; SetTriggerBarClose(timepoint); } OnBarClose(ArrayRef<Integer> indexs) { if(time == 0.1120 or time == 0.1450) { sell(0,close); BuyToCover(0,close); Commentary(\"收盘平仓\"); } } OnBar(ArrayRef<Integer> indexs) { AvgValue2 = AverageFC(Close,FastLength); AvgValue1 = AverageFC(Close,5); PlotNumeric(\"AvgValue1\",AvgValue1);//布林均线显示 PlotNumeric(\"AvgValue2\",AvgValue2);//布林均线显示 D7=Lowest(low,5); D71=NthCon(CrossUnder(L,D7[1])); D11=Highest(High,5); D111=NthCon(CrossOver(H,D11[1])); PlotNumeric(\"D7\",D7);//最近5日的最低点画线 PlotNumeric(\"D11\",D11);//最近5日的最高点画线 if(truedate(0)!=truedate(1))//分时均线 { baramount=close*Vol; barvol=vol; }else { baramount = baramount+close*vol; barvol = barvol+vol; } dayavg = baramount / barvol; Plotnumeric(\"dayavg\",dayavg); MinPoint = MinMove*PriceScale; //开仓条件 If(MarketPosition ==0 && D71[1]>D111[1] && Close[1]>dayavg[1] && Close[1]>AvgValue1[1] && High>High[1] && (TIME>=0.0900&&TIME<0.1125||TIME>=0.1330&&TIME<0.1455||TIME>=0.2100&&TIME<0.2255) && num==0)//开仓情形15分种分型向上,分时均线上方,昨天收盘价大于5日均线,当价格大于昨高 { firstlow=Low; num=1; Buy(2,High[1]-1*MinPoint); } MyEntryPrice = AvgEntryPrice; If( MarketPosition==1 && L<firstlow) // 止损 { Sell(0,min(open,firstlow-1*MinMove*PriceScale)); } If(MarketPosition == 1 && CurrentContracts ==2) // 止赢条件表达式 { MyExitPrice = MyEntryPrice*1.00191*MinPoint+TakeProfitSet*MinPoint; Commentary(\"MyExitPrice=\"+text(MyExitPrice)); } If(MarketPosition==1 && CurrentContracts ==2 && H>MyExitPrice)//固定止盈 { Sell(1,MyExitPrice+1*MinPoint);//多头平仓 } //If(BarsSinceLastEntry==0 && Low <= MyEntryPrice - StopLossSet*MinPoint) // 止损条件表达式 //{ //MyExitPrice = MyEntryPrice - StopLossSet*MinPoint; //如果该 Bar 开盘价即跳空触发,则用开盘价代替 //If(Open < MyExitPrice) MyExitPrice = Open; //Sell(0,MyExitPrice-1*MinPoint); //} If( MarketPosition==1 && BarsSinceLastEntry>0 && L<L[1]) // 止赢条件表达式 { Sell(0,min(open,L[1]-1*MinMove*PriceScale)); } If(L<D7[1])//多头平仓加的一个保险 { Sell(0,min(open,D7[1]-1*MinMove*PriceScale)); } }//完整代码// 编译版本 2023-06-11 115636// 版权所有 ghtfff// 更改声明 TradeBlazer Software保留对TradeBlazer平台// 每一版本的TradeBlazer公式修改和重写的权利//------------------------------------------------------------------------

//开仓条件 If(MarketPosition ==0 && D71[1]>D111[1] && Close[1]>dayavg[1] && Close[1]>AvgValue1[1] && High>High[1] && (TIME>=0.0900&&TIME<0.1125||TIME>=0.1330&&TIME<0.1455||TIME>=0.2100&&TIME<0.2255) && num==0)//开仓情形15分种分型向上,分时均线上方,昨天收盘价大于5日均线,当价格大于昨高 { firstlow=Low; num=1; Buy(2,High[1]-1*MinPoint); }我加入后,我的图表只有一个信号了,别的买卖信号都出不来了,看下哪里问题

5分钟级别,当前k线的最新价大于前个k线的最高点时,此时当前k线有个临时的低点,因为当前k线并一定走完,所以这个临时低点不一定是当个k线的最低点,因为我开仓是当前k线最新价大于前个k线的高点就买入,止损就是那个临时低点,如果是真突破价格会上去,如果是假突破,价格会下来,我也就止损那个临时低点。我现在想记录这个临时低点,想请教老师我这个低点怎么写的,怎么止损。

回复:意思是想当前K线大于前一个K线的最高点时候,记录一下当前k线的低点对吧,而且只记录这1次?你可以把当前k线的low最低点赋值给一个变量,为了防止后面实时数据又在当前K线里大于前1个bar的最高点重复记录这根bar的最低点,可以定义一个全局变量做1个“”开关“”,开关的作用是只记录第一次,后面再满足条件不做记录,比如没记录前这个全局变量值为1,当第一次记录的时候值后变成0,只有值全局变量值等于1的时候才会被记录,后面等于0了就不记录了。参考:

可以再细点h>h[1]时 有什么逻辑上成立的低点吗