增加止盈止损后,原位置不开仓了
// 名称: 日内短线,
记录30分钟内的高低点,突破后开仓;增加跟踪止损条件后,不能正常开仓了
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
	//此处添加参数
	Numeric length(30);
    Numeric end_time(0.1455);
Vars
	//此处添加变量
	Series<Numeric> bar_in_day;
    Series<Numeric> highest_in_day;
    Series<Numeric> lowest_in_day;
    Series<Numeric> trade_count;
    Numeric MinPoint;          // 一个最小变动单位,也就是一跳
    Numeric MyEntryPrice;      // 开仓价格,本例为开仓均价,可设置为某次入场价
    Numeric TrailingStart1(0.005);   // 跟踪止损启动设置1
    Numeric TrailingStart2(0.001);   // 跟踪止损启动设置2
    Numeric TrailingStop1(0.002);   // 跟踪止损设置1
    Numeric TrailingStop2(0.005);   // 跟踪止损设置2
    Numeric StopLossSet(0.005);    // 止损设置
    Numeric MyExitPrice;        // 平仓价格
    Series<Numeric> HighestAfterEntry;        // 开仓后出现的最高价
    Series<Numeric> LowestAfterEntry;         // 开仓后出现的最低价

Defs
	//此处添加公式函数
	

Events
	//此处实现事件函数
	
	//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
            OnBar(ArrayRef<Integer> indexs)
            {
            If(truedate(0)<>truedate(1))
            {
    	    bar_in_day =0;
            highest_in_day = high;
            lowest_in_day = low;
            trade_count =0;
            }
            bar_in_day = bar_in_day + 1;
            Commentary("当天第几根bar:"+text(bar_in_day));
            If(bar_in_day<=length)
            {
        	highest_in_day = max(highest_in_day,high);
        	lowest_in_day = min(lowest_in_day,low);
        	}
        	PlotNumeric("highest_in_day",highest_in_day);
        	PlotNumeric("lowest_in_day",lowest_in_day);
        	//突破上轨做到,突破下轨做空,交易次数不超过3次
        	If(MarketPosition==1 and low<=highest_in_day-10*minmove*pricescale)
        	{
        		sell(1,min(open,highest_in_day-10*minmove*pricescale));
        	}
        	If(MarketPosition==-1 and high>=lowest_in_day+10*minmove*pricescale)
        	{
        		BuyToCover(1,max(open,lowest_in_day+10*minmove*pricescale));
        	}
        	if(MarketPosition<>1 and high>=highest_in_day and bar_in_day>length and trade_count <2 and time<end_time)
        	{
        		buy(1,max(open,highest_in_day));
        		trade_count =trade_count +1;
        	}
        	if(MarketPosition<>-1 and low<=lowest_in_day and bar_in_day>length and trade_count <2 and time<end_time)
        	{
        		sellshort(1,min(open,lowest_in_day));
        		trade_count=trade_count+1;
        	}
        	Commentary("trade_count:"+text(trade_count));
        	If(time>=end_time and time<0.15)
        	{
        		buytocover(0,open);
        		Sell(0,open);
        	}
        	    If(BarsSinceEntry == 0)                // 条件满足:开仓Bar 
            {
            HighestAfterEntry = Close;
            LowestAfterEntry = Close;        // 赋初值为当前最新价格
            If(MarketPosition <> 0)            // 有持仓时执行以下代码
            {            
            // 开仓Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry 
            HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice); 
            // 开仓Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry 
            LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);  
            } 
            }Else      // 非开仓Bar时进行以下运算 
           {        
            // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
            HighestAfterEntry = Max(HighestAfterEntry,High); 
            // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断   
            LowestAfterEntry = Min(LowestAfterEntry,Low); 
            }
    
            Commentary("HighestAfterEntry = "+Text(HighestAfterEntry));
            Commentary("LowestAfterEntry = "+Text(LowestAfterEntry));
    
            MinPoint = MinMove*PriceScale;
            MyEntryPrice = AvgEntryPrice;
    
           If(MarketPosition == 1 And BarsSinceEntry >= 1)  // 有多仓的情况
           {
           // 第二级跟踪止损的条件表达式
           If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart2*MyEntryPrice) 
           {
            If(Low <= HighestAfterEntry[1] - TrailingStop2*MyEntryPrice)
           {
                MyExitPrice = HighestAfterEntry[1] - TrailingStop2*MyEntryPrice;// 如果该Bar开盘价即跳空触发,则用开盘价代替      
                If(Open < MyExitPrice) MyExitPrice = Open; 
                Sell(0,MyExitPrice);
            }
           }Else If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart1*MyEntryPrice) // 第一级跟踪止损的条件表达式
           {
            If(Low <= HighestAfterEntry[1] - TrailingStop1*MyEntryPrice)
            {
                MyExitPrice = HighestAfterEntry[1] - TrailingStop1*MyEntryPrice;
                // 如果该Bar开盘价即跳空触发,则用开盘价代替
                If(Open < MyExitPrice) MyExitPrice = Open; 
                Sell(0,MyExitPrice); 
            }
          }Else If(Low <= MyEntryPrice - StopLossSet*MyEntryPrice) //可在此写初始止损处理
          {
            MyExitPrice = MyEntryPrice - StopLossSet*MyEntryPrice;
            // 如果该Bar开盘价即跳空触发,则用开盘价代替
            If(Open < MyExitPrice) MyExitPrice = Open;  
            Sell(0,MyExitPrice);
          }
          }Else If(MarketPosition == -1 And BarsSinceEntry >= 1)   // 有空仓的情况
          {
        // 第二级跟踪止损的条件表达式
          If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart2*MyEntryPrice) 
          {
            If(High >= LowestAfterEntry[1] + TrailingStop2*MyEntryPrice)
            {
                MyExitPrice = LowestAfterEntry[1] + TrailingStop2*MyEntryPrice;
                If(Open > MyExitPrice) MyExitPrice = Open;      
                BuyToCover(0,MyExitPrice);
            }
        }Else If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart1*MyEntryPrice)// 第一级跟踪止损的条件表达式
        {
            If(High >= LowestAfterEntry[1] + TrailingStop1*MyEntryPrice)
            {
                MyExitPrice = LowestAfterEntry[1] + TrailingStop1*MyEntryPrice;
                If(Open > MyExitPrice) MyExitPrice = Open;      
                BuyToCover(0,MyExitPrice);
            }
        }Else If(High >= MyEntryPrice + StopLossSet*MyEntryPrice) //可在此写初始止损处理
         {
            MyExitPrice = MyEntryPrice + StopLossSet*MyEntryPrice;
            If(Open > MyExitPrice) MyExitPrice = Open;      
            BuyToCover(0,MyExitPrice);
        }
        }
    //...
        }	
        

策略是日内短线,
记录30分钟内的高低点,突破后开仓;增加跟踪止损条件后,不能正常开仓了。在标记位置应该开仓并触发一次跟踪止损,结果没有开仓;请教老师是哪里出了问题。

账户手工开仓后,怎样利用开拓者平台对该手工仓单进行止盈止损(对于止盈最好能实现浮动止盈)
手动开仓后,想自己移动止盈,还有固定止损
止盈止损代码编写
根据账户权益止盈止损
开仓后,如何记录开仓价前一根棒的最低价作为止损
关于止损止盈的写法
代码中止盈止损不起作用
多空移动止盈止损线源码
开仓K实时开仓,并同K实时止损
开仓可以 为什么后续的止盈、止损、和补仓 就不会执行了呢 是不是开关设置问题 请教老师指点

看置顶帖,要么投稿,要么看收费代编服务