全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
记录个临时低点
ghtfff 分享到
2023-06-27 10:10

data-href=


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

谢谢老师

wangkaiming

可以再细点

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

2023-06-27 13:11
ghtfff

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

我现在想记录这个临时低点,想请教老师我这个低点怎么写的,怎么止损。

2023-06-27 17:05
zhangnj
@ghtfff

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

2023-07-03 12:51
ghtfff

//开仓条件

       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);

}

我加入后,我的图表只有一个信号了,别的买卖信号都出不来了,看下哪里问题




2023-07-05 11:25
ghtfff

//------------------------------------------------------------------------

// 简称: 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公式修改和重写的权利

//------------------------------------------------------------------------

2023-07-05 11:27
ghtfff

等回复

2023-07-07 06:07
kyover
@ghtfff

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

2023-07-07 09:59
kyover
@ghtfff

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

2023-07-07 09:59
wangkaiming

先学会定义清晰

帮你梳理一下

你的原题设:

当前bar的最高价大于前个bar最高点时,会有个临时低点

简单的摘出关键信息:

bar的最高价 => h

前个bar最高点 => h[1]

你认为h和h[1]之间有一个低点

那么只能是 min(low,low[1]);

但是根据你下面发的一堆内容,好像又不是

所以你研究下你这个题设是不是你要的,你发了好几个代码了,基本问题都是逻辑不清晰

2023-07-07 09:37
您未登录,请先 登录注册 后发表评论
顶部