金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

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

语言转换

[复制链接]

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2024-4-23 13:01 | 显示全部楼层
这个要看转换后的开平仓条件的,只有成立了才会有信号,可以把开平仓条件的值输出到图表上,看是否成立的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-4-23 13:12 | 显示全部楼层
103982 发表于 2024-4-23 11:47
但是在TB 上是有交易信号,我把它转换金字塔 就不行了,

可以整理下转化后的开平仓条件的逻辑。即9楼中提及到的两个条件。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

18

主题

60

帖子

70

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2024-4-23 15:14 | 显示全部楼层
是的,代码已经写在上面了,
回复

使用道具 举报

18

主题

60

帖子

70

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2024-4-23 15:15 | 显示全部楼层
Params
        //默认螺纹888 1小时
        Numeric Length(20);                //周期               
        Numeric Offset(2);                //标准差倍数  
        Numeric X(2); //过滤均线的Length倍数, 范围及步长:1-5,1
        Numeric TRS(75);//移动止损止盈幅度 参数范围及步长: 5-200,5
        Numeric Fund(20000); //投入保证金;
Vars
        Numeric Lots(0);
        Series<Numeric> ma1;
        Series<Numeric> UpLine;                //上轨
        Series<Numeric> DownLine;                //下轨
        Series<Numeric> MidLine;        //中间线
        Series<Numeric> Band;
       
        Series<Numeric> cond1;
        Series<Numeric> cond2;
        Series<Numeric> cond3;
        Series<Numeric> cond4;

        Series<Numeric> kcond1;
        Series<Numeric> kcond2;
        Series<Numeric> kcond3;
        Series<Numeric> kcond4;
        Series<Numeric> BB;
        Series<Numeric> WIDTH;
        Plot plt1;
        Plot plt2;
       
        //出场变量
        Series<Numeric> MyPrice;//开仓价格
        Series<Numeric> MyPrice2;//开仓价格
        Series<Numeric> HighAfterEntry;//开仓后出现的最高价
        Series<Numeric> LowAfterEntry;//开仓后出现的最低价
        Series<Numeric> liQKA;
        Series<Numeric> DliqPoint;
        Series<Numeric> KliqPoint;
        Series<Numeric> barcoutN;
        Series<Numeric> bar_entry_count;
        Series<Numeric> kaicang_kg;

Events
        //此处实现事件函数
       
        //初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
        OnInit()
        {
                //与数据源有关
                Range[0:DataCount-1]
                {
                        //=========数据源相关设置==============
                        AddDataFlag(Enum_Data_RolloverBackWard());        //设置后复权

                        AddDataFlag(Enum_Data_RolloverRealPrice());        //设置映射真实价格

                        AddDataFlag(Enum_Data_AutoSwapPosition());        //设置自动换仓

                        //AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());        //设置忽略换仓信号计算
                        plt1.figure(0);
                        plt2.figure(0);
                }

        }

        //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
        OnBar(ArrayRef<Integer> indexs)
        {
                //计算手数,FUND是投入的保证金,最低下单一手
                Lots = Max(1, Round(Fund/(O*ContractUnit*BigPointValue* MarginRatio/rollover), 0));
                //布林通道计算
                ma1 = AverageFC(Close,Length*X);
                MidLine = AverageFC(Close,Length);
                Band = StandardDev(Close,Length,2);
                UpLine = MidLine + Offset * Band;
                DownLine = MidLine - Offset * Band;
               
                cond1=IIF(MidLine>MidLine[1] and C>MidLine,MidLine,cond1);  // 根据条件判断更新cond1的值
                cond2=IIF(UpLine>UpLine[1] and H>UpLine ,UpLine,cond2);  // 根据条件判断更新cond2的值
                cond3=IIF(DownLine<DownLine[1] and L<DownLine ,DownLine,cond3);  // 根据条件判断更新cond3的值
                cond4=IIF(ma1>ma1[1] and C>ma1 ,ma1,cond4);  // 根据条件判断更新cond4的值
               
                kcond1=IIF(MidLine<MidLine[1] and C<MidLine,MidLine,kcond1);  // 根据条件判断更新kcond1的值
                kcond2=IIF(UpLine>UpLine[1] and H>UpLine ,UpLine,kcond2);  // 根据条件判断更新kcond2的值
                kcond3=IIF(DownLine<DownLine[1] and L<DownLine ,DownLine,kcond3);  // 根据条件判断更新kcond3的值
                kcond4=IIF(ma1<ma1[1] and C<ma1 ,ma1,kcond4);  // 根据条件判断更新kcond4的值
               
                PlotNumeric("MidLine",cond1,cond1,White);
                PlotNumeric("UpLine",cond2,cond2,red);
                PlotNumeric("DownLine",cond3,cond3,Green);
回复

使用道具 举报

18

主题

60

帖子

70

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2024-4-23 15:16 | 显示全部楼层
BB=((C-DownLine)/(UpLine-DownLine)); //布林极限(BB)=(收盘价-布林下轨价格)/(布林上轨价格-布林下轨价格)
               
                WIDTH=((UpLine-DownLine)/MidLine)*100;//极限宽,WIDTH=(布林上轨值-布林下轨值)/布林平均值,
                plt1.line("BB",BB); //画线
                plt2.line("WIDTH",WIDTH);

               
                if(cond1[1]>cond1[2] and cond2[1]>cond2[2]  and cond3[1] >= cond3[2] and cond4[1]>cond4[2] and BB[1]>0.5)
                {
                        if(MarketPosition!=1 and H>=cond2[1])
                        {
                                Buy(Lots,max(open,cond2[1])); // 如果满足开多条件,则买入
                                LowAfterEntry = EntryPrice;//保存多头开仓价格;
                                kaicang_kg=1;   // 标记已开仓
                                bar_entry_count=0;  // 重置连续未开仓的Bar计数
                                barcoutN=0; //重置liQKA系数的计算
                                liQKA = 1;
                        }
                }
               
                if(kcond1[1]<kcond1[2] and kcond3[1]<kcond3[2]  and kcond2[1] <= kcond2[2] and kcond4[1]<kcond4[2]  and BB[1]<0.5)
                {
                        if(MarketPosition!=-1 and L<=kcond3[1])
                        {
                                SellShort(Lots,min(open,kcond3[1])); // 如果满足开空条件,则卖空
                                HighAfterEntry = EntryPrice;//保存空头开仓价格;
                                kaicang_kg=1;   // 标记已开仓
                                bar_entry_count=0;  // 重置连续未开仓的Bar计数
                                barcoutN=0; //重置liQKA系数的计算
                                liQKA = 1;
                        }
                }
       
                if(kaicang_kg[1] ==1) // 如果在本周期内有开仓操作
                {
                        bar_entry_count=bar_entry_count+1; // 将开仓计数器加一
                }
                Else
                {
                        bar_entry_count=0; // 如果没有开仓,则将开仓计数器重置为 0
                }
               
            //移动出场
            If(MarketPosition == 0)   // 自适应参数默认值;
            {
                    liQKA = 1;
                    barcoutN=0;
            }Else if(bar_entry_count>barcoutN)                                         //当有持仓的情况下,liQKA会随着持仓时间的增加而逐渐减小,即止损止盈幅度乘数的减少。
            {
                    liQKA = liQKA - 0.1;
                    liQKA = Max(liQKA,0.3);
                    barcoutN=bar_entry_count;
            }
           
            Commentary("kaicang_kg[1]"+text(kaicang_kg[1]));
                Commentary("bar_entry_count"+text(bar_entry_count));
                Commentary("barcoutN"+text(barcoutN));
                Commentary("liQKA"+text(liQKA));
            // 记录开仓后的最高点和最低点
                If(bar_entry_count > 0)
                {
                        HighAfterEntry = Min(HighAfterEntry,High); // 空头止损,更新最低的最高价
                        LowAfterEntry = Max(LowAfterEntry,Low);    // 多头止损,更新最高的最低价
                }
               
            if(MarketPosition>0)
            {
                        DliqPoint = LowAfterEntry - (Open*TRS/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
            }
            if(MarketPosition<0)
            {
                        KliqPoint = HighAfterEntry + (Open*TRS/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
            }
   
            If(KliqPoint[1]>0 and MarketPosition<0)PlotNumeric("KliqPoint[1]",KliqPoint[1]);
            if(DliqPoint[1]>0 and MarketPosition>0)PlotNumeric("DliqPoint[1]",DliqPoint[1]);
           
            // 持有多单时
            If(MarketPosition >0 And bar_entry_count >0  And Low <= DliqPoint[1] and DliqPoint[1]>0 and DliqPoint[1]>0  and bar_entry_count>0)
            {
           
                            Sell(0,Min(Open,DliqPoint[1]));
                            DliqPoint=0;
                            kaicang_kg=0;
            }
           
            // 持有空单时
            If(MarketPosition <0 And bar_entry_count >0  And High >= KliqPoint[1] and KliqPoint[1]>0 and KliqPoint[1]>0  and bar_entry_count>0)
            {       
                   
                            BuyToCover(0,Max(Open,KliqPoint[1]));
                            KliqPoint=0;
                            kaicang_kg=0;
            }
           
           
       
        }
回复

使用道具 举报

18

主题

60

帖子

70

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2024-4-23 15:17 | 显示全部楼层
这两个是TB 的代码。你看一下
我把它转换金字塔 就不行了,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 08:18 , Processed in 0.102052 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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