| 

 等级: 新手上路 
注册: 2022-4-5曾用名:  | 
 
| PEL自编函数(基于MACD的开关单)的代码如下 
 DIFF :=MA(CLOSE,12) - EMA(CLOSE,26);
 DEA  :=EMA(DIFF,9);
 MACD :=2*(DIFF-DEA);
 
 //程序化交易下单部分
 //平空开多条件
 if CROSS(MACD,0)=1 then begin
 平空:SELLSHORT(HOLDING<0,1,MARKET);
 开多:BUY(HOLDING=0,1,MARKET);
 end
 
 //平多开空条件
 if CROSS(0,MACD)=1 then begin
 平多:SELL(HOLDING>0,1,MARKET);
 开空:BUYSHORT(HOLDING=0,1,MARKET);
 end
 
 当前持仓:HOLDING,COLORGREEN,LINETHICK0;
 当前资产:ASSET,NOAXIS,COLORRED;
 
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
 想改造成如下形式——PEL中的BUY操作将转移到VBA中实现,即自定义一个VBA的公共函数BUY_SELF,由PEL调用BUY_SELF,BUY_SEL中将进行某些指标的数值运算后再决定是否进行买卖操作。
 函数SELLSHORT_SELF  SELL_SELF  BUYSHORT_SELF与BUY_SELF结构类似,下文不再出现
 
 伪代码A:
 DIFF :=MA(CLOSE,12) - EMA(CLOSE,26);
 DEA  :=EMA(DIFF,9);
 MACD :=2*(DIFF-DEA);
 if CROSS(MACD,0)=1 then begin
 BUY_SELF(HOLDING=0,1,1,0,0,"rb10","sq","",0);        //PEL准备调用vba自定义的函数BUY_SELF
 end
 
 当前持仓:HOLDING,COLORGREEN,LINETHICK0;
 当前资产:ASSET,NOAXIS,COLORRED;
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
 Buy_Self准备定义在 金字塔决策交易系统-工具-VBA工程-Visual Basic工程-模块-Function
 
 伪代码B如下:
 Sub Buy_Self(Condition,Type,Vol,Price,StoplmtPrice,Code,Market,AccountID,Valid)
 。。。。。。。。。。
 If Condition Then
 order.OrderQueue = 1
 call order.Sell(Type,Vol,Price,StoplmtPrice,Code,Market,AccountID,Valid)
 End If
 End Sub
 
 我要咨询的三个问题如下:
 1)能否麻烦老师 将伪代码A与伪代码B翻译成可执行的代码?
 2)BUY_SELF是否要在PEL的自定义函数中进行定义?
 3)看到网上Buy方法的使用说明中“请不要在PEL的自定义函数中调用该方法”这个提示后,  我疑惑这种PEL调用Buy_Self函数的结构 能否真正实现“开多操作”?
 
 
 | 
 
  |