以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  请老师帮助一下,谢谢  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=172899)

--  作者:100016292
--  发布时间:2019/11/6 11:28:38
--  请老师帮助一下,谢谢
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次仓;             //加空条件


交易语句不会写,请帮助一下

--  作者:FireScript
--  发布时间:2019/11/6 13:24:31
--  
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编辑过]

--  作者:100016292
--  发布时间:2019/11/6 13:47:22
--  
请把我想表达的意思写全了加载后看一下再发,谢谢,MM: MM:=CROSS(MA(C,5),MA(C,10));
WW:=CROSS(MA(C,10),MA(C,5));
--  作者:100016292
--  发布时间:2019/11/6 13:50:19
--  
手数为百分比,减仓为开仓数的50%
--  作者:yukizzc
--  发布时间:2019/11/6 14:31:32
--  
sell(1,holding/2,marketr);
数量用持仓除以2就行了

--  作者:100016292
--  发布时间:2019/11/6 17:20:03
--  
请把以上代码加载到图上看一下,没有信号
--  作者:100016292
--  发布时间:2019/11/6 17:20:49
--  
能不能写完整呀
--  作者:yukizzc
--  发布时间:2019/11/6 17:25:59
--  

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


--  作者:yukizzc
--  发布时间:2019/11/6 17:26:39
--  
具体开平的条件请自行完成了,比如pd jd这些都填写完成的话就可以了
--  作者:100016292
--  发布时间:2019/11/6 20:14:31
--  
我靠,又是只写一半,空的呢?