等级: 新手上路
- 注册:
- 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函数的结构 能否真正实现“开多操作”?
|
-
|