欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 求助,编写问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2742人关注过本帖树形打印复制链接

主题:求助,编写问题

帅哥哟,离线,有人找我吗?
zwlgtja
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:1 积分:0 威望:0 精华:0 注册:2021/3/9 23:24:10
求助,编写问题  发帖心情 Post By:2021/3/17 14:37:24    Post IP:222.242.186.178[只看该作者]

想把以前在文华上用的搬过来,找不出需要修改的地方,求组,谢谢

Params
   Numeric OpenLen(3); //用于计算开盘价指数移动平均的周期
   Numeric CloseLen(3); //用于计算收盘价指数移动平均的周期
Vars
   NumericSeries Histogram; //记录开盘价的指数移动平均与收盘价的指数移动平均之差
   NumericSeries BuyPrice; //多头触发价格
   NumericSeries LongExitPrice; //多头平仓触发价格
   NumericSeries Con1; //判断是否为上升趋势
   NumericSeries Con2; //判断是否为下降趋势
   NumericSeries ATR10; //ATR
   Numeric N; //下单手数
   Numeric SH; //平仓参数
   Numeric RLP,FLP; //涨跌停价
   Numeric BIDP,ASKP; //买卖一价
   Numeric BRP,SRP; //多空头可用持仓
   Numeric OPFLG; //模型处理标志
   Numeric BKDFLG; //买开处理标志
   Numeric BPDFLG; //买平处理标志
   Global_Numeric BKID,SKID; //开仓委托
   Global_Numeric BPID,SPID; //平仓委托
   Global_Numeric BKFLG,SKFLG; //开仓标志
   Global_Numeric BPFLG,SPFLG; //平仓标志
   Global_Numeric BKM,SKM; //开仓委托手数
   Global_Numeric BPM,SPM; //平仓委托手数
   Global_Numeric BKP,SKP; //开仓委托价格
   Global_Numeric BPP,SPP; //平仓委托价格
Begin
PlotNumeric("MA1", Ema(Close,CloseLen) );
PlotNumeric("MA2", Ema(Open,OpenLen) );
   //------------------------信号发出------------------------//
   If(1) //信号发出
   {
      //条件设置
      Histogram = Ema(Close,CloseLen) - Ema(Open,OpenLen);
      Con1 = CrossUp(Histogram,0);
      Con2 = CrossDown(Histogram,0);
      ATR10 = Ma(TrueRange,10);
      //设置多头入场触发价与多头平仓触发价
      If(Con1 == 1)
      {
         BuyPrice = High + ATR10 * 0.5;
         LongExitPrice = Low - ATR10 * 0.5;
      }
     
      //满足上升趋势且向上突破触发价则进场做多
      If(Histogram[1] > 0 && Vol > 0)
      {
         If(High >= BuyPrice) //最高价>买入触发价
         {
            BK(DefaultVol,Max(Open,BuyPrice));
         }
      }
     
      //转为下降趋势多头平仓出场
      If(MarketPosition == 1 && BarsSinceEntry > 0 && Con2[1] && Vol > 0)
      {
         SP(DefaultVol,Open);
      }
     
      //向下突破多头平仓触发价格则多头平仓出场
      If(MarketPosition == 1 && BarsSinceEntry > 0 && low <= LongExitPrice && Vol > 0)
      {
         SP(DefaultVol,Min(Open,LongExitPrice));
      }
      
      //在图表上显示多头进场触发价格
      If(MarketPosition == 0 && Histogram > 0 && BuyPrice>0)
      {
         PlotNumeric("BuyPrice",BuyPrice);
      }
      //持有多仓,输出多头平仓触发价格
      If(MarketPosition == 1)
      {
         PlotNumeric("LongExitPrice",LongExitPrice);
      }
     
   }
   //------------------------处理开启------------------------//
   If(A_IsExchangeOpen() == 1) //如果是开盘状态
   {
      If(BarStatus() == 2) //如果不带入历史值
      { 
         If(RunStart() == 1) //如果已初始化成功
         {
            OPFLG = 1; //开启模型处理
         }
      }
   }
   //------------------------变量赋值------------------------//
   If(OPFLG == 1) //变量赋值
   {
      N = 1; //下单手数
      BIDP = Price("Bid1"); //买一价
      ASKP = Price("Ask1"); //卖一价
      RLP = Price("RiseLimit"); //涨停价
      FLP = Price("FallLimit"); //跌停价
      BRP = F_BuyRemainPosition(); //多头可用持仓
      BRP = Min(BRP,A_BuyRemainPosition()); //多头可用持仓
      If(A_IsSHCode() == 1) //如果是上期所合约
      {
         SH = Enum_ExitToday; //平仓参数
      }
      Else //如果非上期所合约
      {
         SH = Enum_Exit; //平仓参数
      }
   }
   //------------------------信号处理------------------------//
   If(OPFLG == 1) //信号处理
   {
      If(F_FreshSig() == 1) //如果当前信号是未处理过的信号
      {
         If(F_SigValid() == 1) //如果当前信号未消失
         {
            If(F_Sig() == Sig_BK) //如果信号类型为BK
            {
               Commentary("【BK信号!】");
               BKDFLG = 1; //开启买开处理
            }          
            Else If(F_Sig() == Sig_BP) //如果信号类型为BP
            {
               Commentary("【BP信号!】");
               BPDFLG = 1; //开启买平处理
            }
         }
      }
   }
   //------------------------成交判断------------------------//
   If(OPFLG == 1) //成交判断
   {
      If(BKFLG == 1) //如果有买开委托
      {
         If(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交
         {
            Commentary("【BK信号:买开委托成交!】");
            BKFLG = 0; //买开标志归0
         }
      }
      If(BPFLG == 1) //如果有买平委托
      {
         If(F_OrderStatus(BPID) == Enum_Filled) //如果买平委托成交
         {
            Commentary("【BP信号:买平委托成交!】");
            BPFLG = 0; //买平标志归0
         }
      }
   }
   //------------------------委托处理------------------------//
   If(OPFLG == 1) //委托处理
   {
      If(BKDFLG == 1) //如果已开启买开处理
      {
         If(BKFLG == 0) //如果没有买开委托
         {
            BKM = N; //买开委托手数
            BKP = ASKP; //买开委托价格
            Commentary("【BK信号:买开委托发出!】");
            BKID = A_SendOrder(Enum_Buy,Enum_Entry,BKM,BKP); //发出买开委托
            BKFLG = 1; //已发出买开委托
         }
      }
      
      If(BPDFLG == 1) //如果已开启买平处理
      {
         If(BPFLG == 0) //如果没有买平委托
         {
            If(SRP > 0) //如果有空头可用持仓
            {
               BPM = SRP; //买平委托手数
               BPP = RLP; //买平委托价格
               Commentary("【BP信号:买平委托发出!】");
               BPID = A_SendOrder(Enum_Buy,SH,BPM,BPP); //发出买平委托
               BPFLG = 1; //已发出买平委托
            }
         }
      }
   }
End

 回到顶部
帅哥哟,离线,有人找我吗?
gxx978
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2021/3/17 14:48:54    Post IP:180.169.30.6[只看该作者]

代码转化问题比较花时间,我们会先评估下这段代码是否能顺利转成金字塔的PEL语言,如转换过程中间遇到需要跟您确认的问题,会直接跟帖的,您持续关注本贴即可。
[此贴子已经被作者于2021/3/17 14:49:38编辑过]

 回到顶部