投资者咨询:请老师帮下忙 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-9-27 10:24
老师您好,请帮我修改为文华8能用的,谢谢
function chinatt(Int,Begin,cellPar)
%UNTITLED2 此处显示有关此函数的摘要
global idexK
global Tlen
global TimeDT
global TimeKT
N1=cellPar{1};
N2=cellPar{2};
if Int
traderSetParalMode(false);
idexK=traderRegKData('day',1);
Tlen=length(idexK(:,1));
TimeDT=zeros(Tlen,1);
TimeKT=zeros(Tlen,1);
else
%提取数据
[mp,~,~] = traderGetAccountPositionV2(1,(1:Tlen));
[~,HandListCap,~,~,~]=traderGetAccountInfoV2(1);
iddexK = traderGetRegKData(idexK, 100, false);
[Multiple, ~, ~, ~, ~, ~, ~] = traderGetFutureInfoV2(1:Tlen);
for i=1:Tlen
idddexK=iddexK(1+8*(i-1):8*i,:);
time=idddexK(1,:);
high=idddexK(3,:);
low=idddexK(4,:);
close=idddexK(5,:);
sharenum=floor(HandListCap*0.8/close(end)/Multiple(i)/Tlen);
%指标计算
diff=close(N1+1:end)-close(1:end-N1);
EF=(max(close(end-N1+1:end))-min(close(end-N2+1:end)))/sum(abs(diff(end-N1+1:end)));
EF10=EMA(EF,N2);
t=floor(10-(EF10-0.5)*10);
if isnan(t)
continue;
end
conbuy=close(end)>max(high(end-t:end-1));
consell=close(end)<min(low(end-t:end-1));
%开平仓动作
if mp(i)==0
if conbuy
traderBuyV2(1,i,sharenum,0,'market','buy');
elseif consell
traderSellShortV2(1,i,sharenum,0,'market','sell');
end
elseif mp(i)>0
if consell
traderPositionToV2(1,i,0,0,'market','stop');
end
elseif mp(i)<0
if conbuy
traderPositionToV2(1,i,0,0,'market','stop');
end
end
end
end
end
function EMAValue=EMA(Price,Length)
EMAValue=zeros(length(Price),1);
K=2/(Length+1);
for i=1:length(Price)
if i==1
EMAValue(i)=Price(i);
else
EMAValue(i)=Price(i)*K+EMAValue(i-1)*(1-K);
end
end
end
4.2执行文件
targetList1 = traderGetCodeList('dce000');
targetList2 =traderGetCodeList('czce000');
targetList3 = traderGetCodeList('shfe000');
targetList=[targetList1,targetList2,targetList3];
targetList=targetList([ 5 7 8 12 14 16 33 40 43 44 ]);
traderSetBacktest(100000000,0.0025,0.02,0,1,0,0);
AccountList(1) = {'FutureBackReplay'};
N1=9;
N2=11;
traderRunBacktestV2('chinatt',@chinatt,{N1,N2},AccountList(1),targetList,'day',1,20110101,20170820,'FWard');
技术人员回复
日期:2018-9-27 11:15
参考:
N:=10;
TR:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE, 1)-HIGH)), ABS (REF(CLOSE, 1)-LOW));
ATR := MA(TR, 10);
DT:=CLOSE>REF(CLOSE, 1)+REF(ATR, 1)*1.5;
DT2:=COUNT(CLOSE>REF(CLOSE, 1)-REF(ATR, 1)*1.5, 2)=1&&DT;
KT:=CLOSE>REF(CLOSE, 1)+REF(ATR, 1)*1.5;
KT2:=COUNT(CLOSE<REF(CLOSE, 1)-REF(ATR, 1)*1.5, 2)=1&&KT;
DT,BPK;
KT,SPK;
CROSS (BARSLAST (DT),N) || DT2, SP;
CROSS (BARSLAST (KT),N) || KT2, BP;
AUTOFILTER;