以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]请老师帮忙写一下这个模型代码  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=74718)

--  作者:cxysword
--  发布时间:2015/1/20 13:17:18
--  [求助]请老师帮忙写一下这个模型代码
本人才开始学习用金字塔编程,之前有一点编程基础,看了教学视频后,抄写了下面的MACD交易程序,但是有几个问题想请老师帮忙完善一下程序,以便学习,谢谢!
1、CROSS(DIFF,DEA)和cross(DEA,DIFF)这里相交之后,但是信号经常不稳定,如何让相交30秒之后才确定下单呢;
2、止损和止盈
    A、进多时
   ①、以进场的价格如何设置50个价位的止损
   ②、当布林带的MID>MA移动平均线的MA3时,以进场的价格设置100个价位止盈;
   ③、当布林带的MIDMA移动平均线的MA3时以进场的价格设置50个价位止盈;
    B、进空时
   ①、以进场的价格如何设置50个价位的止损
   ②、当布林带的MIDMA移动平均线的MA3时,以进场的价格设置100个价位止盈;
   ③、当布林带的MIDMA移动平均线的MA3时以进场的价格设置50个价位止盈;

谢谢老师帮忙!!!
===============以下是抄写的程序================
input:p(26,20,88,6),s(12,5,15,1),m(9,2,15,1);
DIFF: EMA(CLOSE,S) - EMA(CLOSE,P);
DEA: EMA(DIFF,M);
MACD: 2*(DIFF-DEA), COLORSTICK;

//建立多头进场条件
Long:=CROSS(DIFF,DEA);

if Long then
begin
sellshort(holding<0,holding,THISCLOSE);
buy(Long,1,THISCLOSE);
end

//建立空头进场条件
Short:=cross(DEA,DIFF);

if Short then
begin
sell(holding>0,holding,THISCLOSE);
BUYSHORT(short,1,THISCLOSE);
end

持仓:holding,linethick0;
资金:asset,noaxis;
可用现金:cash(0),linethick0;

--  作者:jinzhe
--  发布时间:2015/1/20 13:37:19
--  
处理中,请稍等
--  作者:cxysword
--  发布时间:2015/1/20 13:54:08
--  
谢谢老师!
--  作者:pyd
--  发布时间:2015/1/20 14:28:36
--  

1,交易-》图表程序化交易里 用走完一根k模式

2,引用多少周期布林mid?例子里引用5分钟周期的mid,如果是其他周期可以根据stkindi函数说明自己改下

input:p(26,20,88,6),s(12,5,15,1),m(9,2,15,1);
DIFF: EMA(CLOSE,S) - EMA(CLOSE,P);
DEA: EMA(DIFF,M);
MACD: 2*(DIFF-DEA), COLORSTICK;
ma3:ma(c,3);
mid:=stkindi(\'\',\'boll.mid\',0,2);//引用5分钟周期的mid,如果是其他周期可以根据stkindi函数说明自己改下
//建立多头进场条件
Long:=CROSS(DIFF,DEA);

if Long then
begin
sellshort(holding<0,holding,THISCLOSE);
buy(Long,1,THISCLOSE);
end


//建立空头进场条件
Short:=cross(DEA,DIFF);


if Short then
begin
sell(holding>0,holding,THISCLOSE);
BUYSHORT(short,1,THISCLOSE);
end
//50个价位止损
if enterprice-l>=50*mindiff then sell(holding>0,holding,market);
if h-enterprice>=50*mindiff then sellshort(holding<0,holding,market);
//mid>ma3时100个价位止盈
if mid>ma3 then begin
if h-enterprice>=100*mindiff then sell(holding>0,holding,market);
if ENTERPRICE-l>=100*mindiff then sellshort(holding<0,holding,market);
end
//mid<ma3时50个价位止盈
if mid<ma3 then begin
if h-enterprice>=50*mindiff then sell(holding>0,holding,market);
if ENTERPRICE-l>=50*mindiff then sellshort(holding<0,holding,market);

end

 

持仓:holding,linethick0;
资金:asset,noaxis;
可用现金:cash(0),linethick0;


--  作者:cxysword
--  发布时间:2015/1/20 14:50:21
--  
老师,为什么用THISCLOSE时,进场的价格不是及时价格,总是进了很不好的价位
--  作者:pyd
--  发布时间:2015/1/20 14:53:14
--  
thisclose是对手价,很好的价位成交你可以用限价
--  作者:cxysword
--  发布时间:2015/1/20 15:27:44
--  
thisclose总是用K线的收盘价成交,有用及时价格成交的吗?market就是用下个K线的开盘价成交的图片点击可在新窗口打开查看
--  作者:jinzhe
--  发布时间:2015/1/20 15:39:25
--  

不是的,这两个价格解释,一般有两个部分 组成:实际交易和模拟测评

thisclose实际交易是对手加下单,模拟测评按照当前k线收盘价计算

market实际交易是市价下单,模拟测评按照次周期开盘价计算

你的理解只是后半部分,而且理解的也不对。这仅仅指的是下单价位,而不是什么立即下单,走完k线下单


--  作者:cxysword
--  发布时间:2015/1/21 10:38:05
--  
老师,我申请了一个模拟交易盘测试了一下,用thisclose或market时,为什么还是必须等下个周期出来的时候才进入或者平仓呢?
在下面这个止损和止盈的时候,图形里出现信号了,但是模拟交易盘里一直也是等到下个周期出来的时候才下单成交,这是为什么呢?
//50个价位止损

if enterprice-l>=50*mindiff then sell(holding>0,holding,market);
if h-enterprice>=50*mindiff then sellshort(holding<0,holding,market);
//mid>ma3时100个价位止盈
if mid>ma3 then begin 
if h-enterprice>=100*mindiff then sell(holding>0,holding,market);
if ENTERPRICE-l>=100*mindiff then sellshort(holding<0,holding,market);
end
//mid<ma3时50个价位止盈
if mid<ma3 then begin
if h-enterprice>=50*mindiff then sell(holding>0,holding,market);
if ENTERPRICE-l>=50*mindiff then sellshort(holding<0,holding,market);

end

--  作者:jinzhe
--  发布时间:2015/1/21 10:43:58
--  
因为你用的是走完k线的下单模式,这个和代码没有任何关系,也不要再考虑代码要怎么写