金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3416|回复: 16

请老师帮写出能实盘的代码模块

[复制链接]

58

主题

282

帖子

292

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
发表于 2022-9-23 16:24 | 显示全部楼层 |阅读模式
一、止盈止损   1.单品种止盈止损
      a.当单品种盈利大于10%时(对比保证金),改品种止盈。
      b.当单品种亏损大于-5%时(对比保证金),该品种止损。
二、总收益止盈止损
   1.一天分为三时段,夜盘、早盘、午盘
   2.当总盈利大于1%时(动态权益对比上一个时段收盘时的权益),启动移动止盈
      a.盈利1%后,1%是平仓底线。
      b.当盈利持续增加时,超过1%的部分,回撤达到50%时平仓。
   3.当总亏损达到-2%时,止损平仓
   4.在触发止盈止损后,该时段内不再开仓。
   5.下一个时段开始后,继续开仓运行策略。
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-9-23 16:43 | 显示全部楼层

//盈利
if (close-TAVGENTERPRICEEX2('' ,'' , 0))*tbuyholding(1)*MULTIPLIER>close*tbuyholding(1)*MULTIPLIER*TACCOUNT(41)*0.1 then
begin
        tsell(1,tbuyholding(1),mkt);
END
//亏损
if (TAVGENTERPRICEEX2('' ,'' , 0)-close)*tbuyholding(1)*MULTIPLIER>close*tbuyholding(1)*MULTIPLIER*TACCOUNT(41)*0.05 then
begin
        tsell(1,tbuyholding(1),mkt);
END

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-9-23 17:36 | 显示全部楼层
cond:tsellholding(1)>0 or tbuyholding(1)>0;
GLOBALVARIABLE:flag:=0;
if (currenttime>210000 or currenttime<050000) then EXTGBDATASET('夜盘权益',TACCOUNT( 6));
if (currenttime>090000 and currenttime<120000) then EXTGBDATASET('早盘权益',TACCOUNT( 6));
if (currenttime>120000 and currenttime<150000) then EXTGBDATASET('午盘权益',TACCOUNT( 6));


if (currenttime>090000 and currenttime<120000) then
begin
        if TACCOUNT( 6)>EXTGBDATA('早盘权益')*1.01 then flag:=1;
        //超过1平仓底线
        if flag=1 and TACCOUNT( 6)<EXTGBDATA('早盘权益')*(1-0.01) then
        BEGIN
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('早盘',1);
        end
        //记录最大权益
        if flag=1 and TACCOUNT( 6)>EXTGBDATA('权益最大') then EXTGBDATASET('权益最大',TACCOUNT( 6));
        if TACCOUNT( 6)<EXTGBDATA('权益最大')*0.95 then
        begin
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('早盘',1);       
        end
        //总亏损-2
        if TACCOUNT( 6)<EXTGBDATA('早盘权益')*(1-0.02) then
        BEGIN
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('早盘',1);
        end
end

//盘中休息时分进行初始化
if  (currenttime>120000 and currenttime<130000) then
begin
        EXTGBDATASET('权益最大',0);
        flag:=0;
end
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-9-23 17:37 | 显示全部楼层
这段还不确定正确与否,这个需求2有点复杂,需要品种之间联动,策略之间联动

这个对于pel而言不是很好写。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

58

主题

282

帖子

292

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2022-9-23 20:59 | 显示全部楼层
老大,第二个需求,总收益的移动止盈漏了
回复

使用道具 举报

58

主题

282

帖子

292

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2022-9-23 21:22 | 显示全部楼层
资深技术02 发表于 2022-9-23 17:37
这段还不确定正确与否,这个需求2有点复杂,需要品种之间联动,策略之间联动

这个对于pel而言不是很好写 ...

你能不能帮我测试一下,对全局变量 我实在有点整不明白,有点搞崩溃的感觉
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-9-23 22:32 | 显示全部楼层
本帖最后由 资深技术02 于 2022-9-23 23:17 编辑

其实全局变量就是要给变量做记录作用
需求2的难点不是不懂全局变量,而是弄那么多变量用来记录后非常容易搞混,这边也需要花比较多时间才好理清整个逻辑的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

0

主题

95

帖子

95

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2022-9-26 09:33 | 显示全部楼层
您的需求,技术人员正在编写调试中,请您耐心等待一下
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-9-26 10:20 | 显示全部楼层
本帖最后由 资深技术02 于 2022-9-26 10:24 编辑

//盈利
if (close-TAVGENTERPRICEEX2('' ,'' , 0))*tbuyholding(1)*MULTIPLIER>close*tbuyholding(1)*MULTIPLIER*TACCOUNT(41)*0.1 then
begin
        tsell(1,tbuyholding(1),mkt);
END
//亏损
if (TAVGENTERPRICEEX2('' ,'' , 0)-close)*tbuyholding(1)*MULTIPLIER>close*tbuyholding(1)*MULTIPLIER*TACCOUNT(41)*0.05 then
begin
        tsell(1,tbuyholding(1),mkt);
END
cond:tsellholding(1)>0 or tbuyholding(1)>0;
//需求2
GLOBALVARIABLE:flag1:=0,flag2:=0,flag3:=0;
if EXTGBDATA('夜盘权益')=0 or EXTGBDATA('早盘权益')=0 or EXTGBDATA('午盘权益')=0 then exit;
if todaybar=1 then
BEGIN
        flag1:=0;
        flag2:=0;
        flag3:=0;
        EXTGBDATASET('早盘',0);
        EXTGBDATASET('午盘',1);
        EXTGBDATASET('夜盘',1);
        EXTGBDATASET('早盘权益最大',TACCOUNT( 6));
        EXTGBDATASET('午盘权益最大',TACCOUNT( 6));
        EXTGBDATASET('夜盘权益最大',TACCOUNT( 6));
end
if (currenttime>210000 or currenttime<050000) then EXTGBDATASET('夜盘权益',TACCOUNT( 6));
if (currenttime>090000 and currenttime<120000) then EXTGBDATASET('早盘权益',TACCOUNT( 6));
if (currenttime>120000 and currenttime<150000) then EXTGBDATASET('午盘权益',TACCOUNT( 6));


if (currenttime>090000 and currenttime<120000) then
begin
        if TACCOUNT( 6)>EXTGBDATA('夜盘权益')*(1+0.01) then flag1:=1;
        //超过1平仓底线
        if flag1=1 and TACCOUNT( 6)<EXTGBDATA('夜盘权益')*(1-0.01) then
        BEGIN
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('早盘',1);
        end
        //记录最大权益
        if flag1=1 and TACCOUNT( 6)>EXTGBDATA('早盘权益最大') then EXTGBDATASET('早盘权益最大',TACCOUNT( 6));
        //回撤50%
        if flag1=1 and TACCOUNT( 6)<EXTGBDATA('早盘权益最大')*0.95 then
        begin
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('早盘',1);      
        end
        //总亏损-2
        if TACCOUNT( 6)<EXTGBDATA('夜盘权益')*(1-0.02) then
        BEGIN
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('早盘',1);
        end
end



if (currenttime>120000 and currenttime<150000) then
begin
        if TACCOUNT( 6)>EXTGBDATA('早盘权益')*(1+0.01) then flag2:=1;
        //超过1平仓底线
        if flag2=1 and TACCOUNT( 6)<EXTGBDATA('早盘权益')*(1-0.01) then
        BEGIN
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('午盘',1);
        end
        //记录最大权益
        if flag2=1 and TACCOUNT( 6)>EXTGBDATA('午盘权益最大') then EXTGBDATASET('午盘权益最大',TACCOUNT( 6));
        //回撤50%
        if flag2=1 and TACCOUNT( 6)<EXTGBDATA('午盘权益最大')*0.95 then
        begin
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('午盘',1);      
        end
        //总亏损-2
        if TACCOUNT( 6)<EXTGBDATA('早盘权益')*(1-0.02) then
        BEGIN
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('午盘',1);
        end
end



if (currenttime>210000 or currenttime<050000) then
begin
        if TACCOUNT( 6)>EXTGBDATA('午盘权益')*(1+0.01) then flag3:=1;
        //超过1平仓底线
        if flag3=1 and TACCOUNT( 6)<EXTGBDATA('午盘权益')*(1-0.01) then
        BEGIN
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('夜盘',1);
        end
        //记录最大权益
        if flag3=1 and TACCOUNT( 6)>EXTGBDATA('夜盘权益最大') then EXTGBDATASET('夜盘权益最大',TACCOUNT( 6));
        //回撤50%
        if flag3=1 and TACCOUNT( 6)<EXTGBDATA('夜盘权益最大')*0.95 then
        begin
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('夜盘',1);      
        end
        //总亏损-2
        if TACCOUNT( 6)<EXTGBDATA('午盘权益')*(1-0.02) then
        BEGIN
                tsell(1,0,mkt);
                tsellshort(1,0,mkt);
                EXTGBDATASET('夜盘',1);
        end
end
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-9-26 10:22 | 显示全部楼层
自己的开仓代码中加上EXTGBDATA('午盘')这些个全局变量是否等于1的情况来控制
上面代码是平仓代码,分为三个时间段,每个时间段内平仓后都会设置全局变量为1,你开仓部分自己根据不同时间段去取不同时间段的全局变量来做控制
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 04:53 , Processed in 0.257488 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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