新手写完不知道哪错了

//------------------------------------------------------------------------
// 简称: danjunxian
// 名称: 
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
    numeric ma_1canshu(20);
    numeric baifenbi(50);
Vars
    numeric yitiao;
    series<numeric> ma_1;
    numeric kaicangshoushu;
    numeric tickzichan;
    numeric kaicangjia;
Events
    OnInit()
    {    
    AddDataFlag(Enum_Data_RolloverBackWard());    //设置后复权
    AddDataFlag(Enum_Data_RolloverRealPrice());    //设置映射真实价格
    AddDataFlag(Enum_Data_AutoSwapPosition());    //设置自动换仓
    AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());    //设置忽略换仓信号计算
        //=========交易相关设置==============
    SetInitCapital(20000);    //设置初始资金为2万  
    
    }


    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
    yitiao=MinMove*PriceScale;
    tickzichan = Portfolio_CurrentCapital() + Portfolio_UsedMargin();
    kaicangshoushu = intpart(tickzichan* (baifenbi/100))/(close[1] * ContractUnit()*BigPointValue()*(marginratio()+0.2));
    ma_1= AverageFC(Close,ma_1canshu);
    plotnumeric("MA1",ma_1);
    
    if(marketposition<>1&&close>ma_1);
      {
          kaicangjia = (close+yitiao);
          buy(kaicangshoushu,kaicangjia);
      }
                    
          
     if(marketposition<>-1&&close<ma_1);
       {
           kaicangjia = (close-yitiao);
        sellshort(kaicangshoushu,kaicangjia);
        }
          
          
    }

公式的意思:

单均线,close>ma_1反手买开,close<ma_1反手卖开

开仓价:收盘价 + 一滑点

开仓手数:总权益*50%/每手保证金(就是每次开仓都是一半仓位)

加载到K线上是错的,不知道错哪了?
 

不知道哪错了
这个代码哪错了?
不知道哪里错了?
K线控制台窗口经常不知道点到哪了,会跳出来,如何关闭
版主救急!不知道点到哪了,突然空仓策略全部不执行了
新手入门不知道代码订阅有什么用?
SetTBProfileString的默认路径是哪?
不知道说什么
哪里错了
哪里错了啊?

基本属于瞎写

close在盘中表示最新价 只有这根bar走完了变成历史bar了,close才代表收盘价

那么已经变成历史bar了 怎么可能还用这个价格去交易呢?

正确的逻辑应该是上一根bar的收盘价和均线进行判断,如果达成条件,就以当前bar的开盘价报单

是哦,那么除了这个价格问题,其他地方有没有不对的?

  比如这一句,

if(marketposition<>1&&close>ma_1);
      {
          kaicangjia = (close+yitiao);
          buy(kaicangshoushu,kaicangjia);
      }

改完后应该是这样对吗?

   if(marketposition<>1&&close[1]>ma_1);
      {
          kaicangjia = (open+yitiao);
          buy(kaicangshoushu,kaicangjia);
      }

公式的意思:

单均线,close>ma_1反手买开,close<ma_1反手卖开

开仓价:收盘价 + 一滑点

开仓手数:总权益*50%/每手保证金(就是每次开仓都是一半仓位)

按照上边这个意思,这个程序其他地方有没有错的?劳烦工程师帮忙检查

程序里,开仓价是收盘价+/-一跳

这程序,直接的错误是if语句的最后,不应该加分号。

用应该是:

if(marketposition<>1&&close>ma_1)

{

。。。。。

}

另外,用close做判断是大忌,最好用High、low,或者干脆close[1]

你好,还有个问题,修改完后我想以收盘价作为开平仓价格,但加载到K线图上发现开平仓价格对不上?