MM:=CROSS(A,B);
WW:=CROSS(B,A);
G20:=HHV(H,ENTERBARS)-CLOSE>N*MINDIFF;//高点回落20个最小变动价位
D20:=CLOSE-LLV(L,ENTERBARS)>N*MINDIFF;//低点回升20个最小变动价位
KD:=MM; //开多并平所有空单条件
KKD:=持有多头信号时价格回落开仓价N个价位时加仓1次; //加多条件
PD:=WW; //平多条件
JD:=持有多仓信号时价格上涨N个价位时减去1次仓; //减多条件
KK:=WW; //开空并平所有多单条件
KKK:=持有空头信号时价格反弹开仓价N个价位时加仓1次; //加多条件
PK:=MM; //平空条件
JK:=持有空头信号时价格下跌N个价位时减去1次仓; //加空条件
交易语句不会写,请帮助一下
INPUT:N(20,1,100,1),P(3,1,100,1);//P是开仓以及加仓百分比
MM:=CROSS(MA(C,5),MA(C,10));
WW:=CROSS(MA(C,10),MA(C,5));
G20:=HHV(H,ENTERBARS+2)-CLOSE>N*MINDIFF;//高点回落20个最小变动价位
D20:=CLOSE-LLV(L,ENTERBARS+2)>N*MINDIFF;//低点回升20个最小变动价位
KD:=MM;
/////////////////多头部分
if kd then //开多仓
begin
sellshort(holding>0,holding,market);
buy(holding=0,P%,market);
end
KKD:=HHV(H,ENTERBARS+2)-CLOSE>N*MINDIFF and holding>0;
加多:buy(KKD,P%,market);//加多仓
PD:=WW;
sell(PD and holding>0,holding,market);//多头全平
JD:=holding>0 and CLOSE-LLV(L,ENTERBARS+2)>N*MINDIFF;
减多:sell(JD,holding/2,market);//多头减仓
///////////空头部分
KK:=WW;
if kk then //开空仓
begin
sell(holding<0,holding,market);
buyshort(holding=0,P%,market);
end
KKK:=CLOSE-LLV(L,ENTERBARS+2)>N*MINDIFF and holding>0;
加空:buyshort(KKK,P%,market);//加空仓
PK:=MM;
sellshort(Pk and holding<0,holding,market);//平空仓
JK:=holding<0 and HHV(H,ENTERBARS+2)-CLOSE>N*MINDIFF; //减空仓
减空:sellshort(JK,holding/2,market);
1.开仓以及加仓 均按照参数P控制的百分百进行。默认是3% 可自行进行调整。 N也设置成参数了,可自行进行参数调整。
2.平仓是半仓 向下取整的的。如11手 半仓按照5手平
3.G20 D20计算位置是在开仓代码之前 ,如果开仓K价格波动就达到20点,那么是无法触发平仓的。因此调整到加减仓位置 直接进行计算。不使用这2个变量。
4. ENTERBARS+2 调整成这样是为了照顾开仓K价格波动达到20点的情况。如果不需要考虑开仓K的情况,需额外再调整下。
[此贴子已经被作者于2019/11/7 9:36:43编辑过]
请把我想表达的意思写全了加载后看一下再发,谢谢,MM:
MM:=CROSS(MA(C,5),MA(C,10));WW:=CROSS(MA(C,10),MA(C,5));
sell(1,holding/2,marketr);
数量用持仓除以2就行了
MM:=CROSS(A,B);
WW:=CROSS(B,A);
G20:=HHV(H,ENTERBARS)-CLOSE>N*MINDIFF;//高点回落20个最小变动价位
D20:=CLOSE-LLV(L,ENTERBARS)>N*MINDIFF;//低点回升20个最小变动价位
KD:=MM; //开多并平所有空单条件
if kd and holding<=0 then
begin
sellshort(1,holding,marketr);
buy(1,1,marketr);
end
KKD:=持有多头信号时价格回落开仓价N个价位时加仓1次; //加多条件
if kdd then
begin
buy(1,1,marketr);
end
PD:=WW; //平多条件
if pd then
begin
sell(1,holding,marketr);
end
JD:=持有多仓信号时价格上涨N个价位时减去1次仓; //减多条件
if jd then
begin
sell(1,holding/2,marketr);
end
具体开平的条件请自行完成了,比如pd jd这些都填写完成的话就可以了