图表,轮询模式下,能不能这样执行:
日内交易,某个品种当日盈利xxx元后,当天之后的信号停止交易,同样亏损xxx元一样
补充一下,只要盘中触及xxx元即可,可不可以调用ASSET函数?
是的,或者还有什么好的开平仓方法?用轮询触及价格即平仓能做到吗?
一开一平模式指的是判断上次平仓后金额是否达标再决定这次开不开仓吧?
一开一平意思是你赢或亏了之后是需要平仓了是吧。还是说就是持仓不动,不开不平。
对,只要达到XXX元的标准(不管赢或亏),清仓,并且当日不再开仓
参考这个范例的思路:
VARIABLE:mark:=0;//全局变量,控制当日满足条件后只交易一次。
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6),X(500,1,10000,1);//X表示设置的盈亏数值
DIFF :EMA(CLOSE,S) - EMA(CLOSE,P);
DEA :EMA(DIFF,M);
MACD1 :2*(DIFF-DEA), COLORSTICK;
macdjc:cross(diff,dea),NODRAW;//macd金叉开仓
buy(holding=0 and macdjc AND MARK=0,1,market);//macd金叉开仓
zdyl:(c-ENTERPRICE)*DYNAINFO(209)*abs(holding);//盈利 这里用的收盘价计算盈利,也可以用H来表示盘中触发过
zdks:(ENTERPRICE-c)*DYNAINFO(209)*abs(holding);//亏损 这里用的收盘价计算亏损,也可以用L来表示盘中触发过
if zdyl>X OR zdks>X and holding<>0 then //盈利或者亏损大于X则平仓,且当日不再开仓
begin
sell(holding>0,holding,market);
mark:=1;
end
if time=CLOSETIME(0) then mark:=0;//收盘重置全局变量
有个问题,c-enterprice是本次的交易,假如盈利够了,then。。
但是我想要的是
假如xxx=300,前两笔交易亏了200,即便本次盈利了300元,实际盈利只有100,我想要总盈利是xxx
VARIABLE:SUM_NUMPROFIT=0;
ma5:=ma(5,close);
ma20:=ma(20,close);
cond1:=cross(ma5,ma20);
cond2:=cross(ma20,ma5);
if cond2 and holding>0 then
begin
sell(1,1,thisclose);
SUM_NUMPROFIT=SUM_NUMPROFIT+NUMPROFIT(1);
end
if cond1 and holding=0 and ABS(SUM_NUMPROFIT)<1000 then buy(1,1,thisclose);
if time=closetime(0) then BEGIN SUM_NUMPROFIT:=0;
END