金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
12
返回列表 发新帖
楼主: 106198

自定义套利交易问题

[复制链接]

39

主题

87

帖子

87

积分

Rank: 4

等级: 专业版

注册:
2024-11-13
曾用名:
 楼主| 发表于 2025-10-14 18:38 | 显示全部楼层
{************************************************************************************************************************
* 版本:1.0
* 修订时间:2023.11.16
*
* 模型仅供投资者参考学习,依此入市,风险自负!
* 投资者应该结合自身经验进一步完善策略,并充分评估市场风险后再考虑是否使用。
************************************************************************************************************************}

//中间变量
INPUT:M(50,5,300,30),N(1.25,0.1,10,0.1),SS(1,1,10000,1),K1(0.5,0.1,1,0.1),K2(0.75,0.1,1,0.1);
//0表示仓位是在趋势模式下下单  1表示在震荡模式下下单
VARIABLE:flag:=0;

MID :  MA(CLOSE,M);//布林中轨
UPPER:MID + N*STD(CLOSE,M);//布林上轨
LOWER:MID - N*STD(CLOSE,M);//布林下轨
今开:=CALLSTOCK(STKLABEL,VTOPEN,6,0);
//0-100 取值越大,说明趋势越强,CMI<20震荡模式,反之为趋势
CMI:=ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(L,30))*100;
//关键价的计算,国外常称作中枢价格(PIVOT POINT)
关键价:(HIGH+LOW+CLOSE)/3;
ATR10:=MA(TR,10);
3日均低价:=MA(L,3);
3日均高价:=MA(H,3);
手数:=SS;

//交易条件

趋买市开多平空条件:=C>MAX(今开+K1*ATR10,3日均低价);
趋买市开空平多条件:=C<MIN(今开-K2*ATR10,3日均高价);

趋卖市开多平空条件:=C>MAX(今开+K2*ATR10,3日均低价);
趋卖市开空平多条件:=C<MIN(今开-K1*ATR10,3日均高价);


趋势开多条件:=C>UPPER;
趋势开空条件:=C<LOWER;
趋势平多条件:=C<MID;
趋势平空条件:=C>MID;
震荡多单平仓条件:=C<=ENTERPRICE-3*ATR10;
震荡空单平仓条件:=C>=ENTERPRICE+3*ATR10;

//交易系统
IF CMI<20 THEN BEGIN {震荡模式}
   IF C<关键价 and 趋买市开多平空条件=1 THEN BEGIN
                   趋买市平空:SELLSHORT(HOLDING<0,手数,MARKET);
                   趋买市开多:BUY(HOLDING=0,手数,MARKET);
                   flag:=1;
   END
   
   IF C<关键价 and 趋买市开空平多条件=1 THEN BEGIN
                   趋买市平多:SELL(HOLDING>0,手数,MARKET);
                   趋买市开空:BUYSHORT(HOLDING=0,手数,MARKET);
                   flag:=1;
   END
   
   IF C>关键价 and 趋卖市开多平空条件=1 THEN BEGIN
                   趋卖市平空:SELLSHORT(趋卖市开多平空条件 AND HOLDING<=0,手数,MARKET);
                   趋卖市开多:BUY(趋卖市开多平空条件 AND HOLDING<=0,手数,MARKET);
                   flag:=1;
   END
   IF C>关键价 and 趋卖市开空平多条件=1 THEN BEGIN
                   趋卖市平多:SELL(HOLDING>0,手数,MARKET);
                   趋卖市开空:BUYSHORT(HOLDING=0,手数,MARKET);
                   flag:=1;
   END   
   
END
IF CMI>=20 THEN BEGIN {趋势模式}
        //处理原震荡模式下持有的仓位
        IF flag=1 and (震荡多单平仓条件=1 or 震荡空单平仓条件=1) THEN BEGIN
            震荡多单平仓:SELL(HOLDING>0,手数,MARKET);
            震荡空单平仓:SELLSHORT(HOLDING<0,手数,MARKET);
            flag:=0;
    END
   
    IF flag=0 THEN BEGIN
                趋势平空:SELLSHORT(趋势平空条件 AND HOLDING<0,手数,MARKET);
                趋势平多:SELL(趋势平多条件 AND HOLDING>0,手数,MARKET);
                趋势开多:BUY(趋势开多条件 AND HOLDING<=0,手数,MARKET);
                趋势开空:BUYSHORT(趋势开空条件 AND HOLDING>=0,手数,MARKET);
        END
END
//注意先平后开原则

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值



你好老师,帮我把上面的图表策略修改成后台策略,我用固定间隔交易限制只开一手。
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-15 09:32 | 显示全部楼层
以下代码供参考
[PEL] 复制代码
//中间变量
input:m(50,5,300,30),n(1.25,0.1,10,0.1),ss(1,1,10000,1),k1(0.5,0.1,1,0.1),k2(0.75,0.1,1,0.1);
//0表示仓位是在趋势模式下下单  1表示在震荡模式下下单
globalvariable:flag:=0;

mid :  ma(close,m);//布林中轨
upper:mid + n*std(close,m);//布林上轨
lower:mid - n*std(close,m);//布林下轨
今开:=callstock(stklabel,vtopen,6,0);
//0-100 取值越大,说明趋势越强,cmi<20震荡模式,反之为趋势
cmi:=abs(close-ref(close,29))/(hhv(high,30)-llv(l,30))*100;
//关键价的计算,国外常称作中枢价格(pivot point)
关键价:(high+low+close)/3;
atr10:=ma(tr,10);
3日均低价:=ma(l,3);
3日均高价:=ma(h,3);
手数:=ss;

//交易条件

趋买市开多平空条件:=c>max(今开+k1*atr10,3日均低价);
趋买市开空平多条件:=c<min(今开-k2*atr10,3日均高价);

趋卖市开多平空条件:=c>max(今开+k2*atr10,3日均低价);
趋卖市开空平多条件:=c<min(今开-k1*atr10,3日均高价);


趋势开多条件:=c>upper;
趋势开空条件:=c<lower;
趋势平多条件:=c<mid;
趋势平空条件:=c>mid;
震荡多单平仓条件:=c<=tenterprice-3*atr10;
震荡空单平仓条件:=c>=tenterprice+3*atr10;

多持仓:tbuyholdingex('','',2);
空持仓:tsellholdingex('','',2);

//交易系统
if cmi<20 then begin {震荡模式}
   if c<关键价 and 趋买市开多平空条件=1 then begin
                   趋买市平空:tsellshort(空持仓>0,手数,mkt);
                   趋买市开多:tbuy(多持仓=0,手数,mkt);
                   flag:=1;
   end
   
   if c<关键价 and 趋买市开空平多条件=1 then begin
                   趋买市平多:tsell(多持仓>0,手数,mkt);
                   趋买市开空:tbuyshort(空持仓=0,手数,mkt);
                   flag:=1;
   end
   
   if c>关键价 and 趋卖市开多平空条件=1 then begin
                   趋卖市平空:tsellshort(趋卖市开多平空条件 and 空持仓>0,手数,mkt);
                   趋卖市开多:tbuy(趋卖市开多平空条件 and 多持仓=0,手数,mkt);
                   flag:=1;
   end
   if c>关键价 and 趋卖市开空平多条件=1 then begin
                   趋卖市平多:tsell(多持仓>0,手数,mkt);
                   趋卖市开空:tbuyshort(空持仓=0,手数,mkt);
                   flag:=1;
   end   
   
end
if cmi>=20 then begin {趋势模式}
        //处理原震荡模式下持有的仓位
        if flag=1 and (震荡多单平仓条件=1 or 震荡空单平仓条件=1) then begin
            震荡多单平仓:tsell(多持仓>0,手数,mkt);
            震荡空单平仓:tsellshort(空持仓>0,手数,mkt);
            flag:=0;
    end
   
    if flag=0 then begin
                趋势平空:tsellshort(趋势平空条件 and 空持仓>0,手数,mkt);
                趋势平多:tsell(趋势平多条件 and 多持仓>0,手数,mkt);
                趋势开多:tbuy(趋势开多条件 and 多持仓>=0,手数,mkt);
                趋势开空:tbuyshort(趋势开空条件 and 空持仓>=0,手数,mkt);
        end
end
回复

使用道具 举报

39

主题

87

帖子

87

积分

Rank: 4

等级: 专业版

注册:
2024-11-13
曾用名:
 楼主| 发表于 2025-10-16 23:46 | 显示全部楼层
你好老师,帮我写一个自定义套利持仓同步的后台策略。
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-17 09:15 | 显示全部楼层
请参考我们提供的范例的思路 即可:

https://www.weistock.com/bbs/for ... &extra=page%3D2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-11-27 13:09 , Processed in 0.142591 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表