欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 求教开仓后减仓 是否编写正确

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2699人关注过本帖树形打印复制链接

主题:求教开仓后减仓 是否编写正确

帅哥哟,离线,有人找我吗?
arutema
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:191 积分:0 威望:0 精华:0 注册:2015/11/21 21:26:35
求教开仓后减仓 是否编写正确  发帖心情 Post By:2018/7/4 15:10:11    Post IP:182.34.16.251[只看该作者]

这个是在金字塔里的修改的   目的是实现开仓2手,满足翻转信号全平,赚5条减1手,剩下1手满足赚50跳或 信号翻转平仓,求教是否编写正确 如有错误麻烦给修改下

 

INPUT:P2(5,2,100,1){止盈幅度};
VARIABLE:MAXPROFIT=0,{有仓位时最大获利幅度}VMIN = 090000;{用于隔夜高开或低开时间差}                
WIN1:=0;                                                           
WIN2:=0;//止盈、止损、回撤控制
 VARIABLE:ss=2;
 VARIABLE:ss1=-2;
////////////////////////////////////////////////////////////////////////
//账户信息:
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
可用现金:CASH(0),PRECISION0,LINETHICK0;
胜率:PERCENTWIN,LINETHICK0;
交易次数:TOTALTRADE,LINETHICK0;
////////////////////////////////////////////////////////////////////////
//主程序
/////////////////
//信号模块:该模块主用于多空头及平仓信号的量化
{示例如下:开多:当MA10上穿MA20时,发出买入开仓交易指令; 平空:当MA10
上穿MA5时,发出卖出平仓交易指令;平多:当MA5上穿MA10时,发出买入平仓交
易指令;开空:当MA10下穿MA20时,发出开空交易指令;}
MA5: MA(CLOSE,5),PRECISION0,;                                                  
MA10:MA(CLOSE,10),PRECISION0,;                                                 
MA20:MA(CLOSE,20),PRECISION0,;                                                 
                                                                   
开多:=CROSS(MA10,MA20);                                            
平多:=CROSS(MA5,MA10);                                             
开空:=CROSS(MA20,MA10);                                            
平空:=CROSS(MA10,MA5);                                             
交易时间:=TIME>VMIN AND TIME<150000;
                             
                                                                   
////////////////
//图表日内交易模块:
 
  IF HOLDING=0 THEN BEGIN
     //多头开仓
     IF 交易时间 AND 开多 THEN BEGIN
         BUY(1,ss,LIMITR,CLOSE);
         MAXPROFIT:=0;
     END
     
     //空头开仓
     IF 交易时间 AND 开空 THEN BEGIN
         BUYSHORT(1,ss1,LIMITR,CLOSE);
         MAXPROFIT:=0;
     END
 END
 
 IF HOLDING=ss THEN BEGIN
     //多头平仓
     IF 平多 THEN
         SELL(1,HOLDING,LIMITR,CLOSE);
         end
        
         IF HOLDING=ss THEN BEGIN
     //多头平1手
     IF (C-ENTERPRICE)>p2 THEN
         SELL(1,1,LIMITR,CLOSE);
         ss=ss-1;
         end
          
         IF HOLDING=ss THEN BEGIN
     //多头平剩下1手
     IF (C-ENTERPRICE)>50*MINDIFF or 平多   THEN
         SELL(1,holding,LIMITR,CLOSE);
         end
        
 
     //多头收盘平仓
     IF NOT(交易时间) THEN
         SELL(1,HOLDING,LIMITR,CLOSE); 
         
 
   
 
 IF HOLDING=ss1 THEN BEGIN
     //空头平仓
     IF 平多 THEN
         SELL(1,HOLDING,LIMITR,CLOSE);
         end
        
         IF HOLDING=ss1 THEN BEGIN
     //空头平1手
     IF (ENTERPRICE-c)>p2 THEN
         SELL(1,1,LIMITR,CLOSE);
         ss1=ss-1;
         end
          
         IF HOLDING=ss1 THEN BEGIN
     //空头平剩下1手
     IF (C-ENTERPRICE)>50*MINDIFF or 平多   THEN
         SELL(1,holding,LIMITR,CLOSE);
         end
        
 
     //空头收盘平仓
     IF NOT(交易时间) THEN
         SELLSHORT(1,HOLDING,LIMITR,CLOSE);


 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/7/4 15:28:42    Post IP:180.169.30.6[只看该作者]

 “赚5条减1手”这是什么意思?只要当前盈利五点,无论多空均减持一手仓位?


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/7/4 16:09:58    Post IP:180.169.30.6[只看该作者]

 我以多头为例,做了一点点修改:
 IF HOLDING=ss THEN BEGIN
     //多头平仓
     IF 平多 THEN
         SELL(1,HOLDING,LIMITR,CLOSE);
         end
       
         IF HOLDING=1 THEN BEGIN
     //多头平1手
     IF (C-ENTERPRICE)>p2 THEN
         SELL(1,1,LIMITR,CLOSE);
         end
         
         IF HOLDING=1 THEN BEGIN
     //多头平剩下1手
     IF (C-ENTERPRICE)>50*MINDIFF   THEN
         SELL(1,holding,LIMITR,CLOSE);
         end

改的不多,主要就是那个ss赋值那个去掉了(你原先赋值那个语句也是错的,是:= 而不是=)。这样赋值之后,后面开仓会直接出问题,空头也是一样的道理。  还有就是后面开空那个地方:

   //空头平剩下1手
     IF (C-ENTERPRICE)>50*MINDIFF or 平多   THEN //平多的条件?
         SELL(1,holding,LIMITR,CLOSE);
         end
       


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
arutema
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:191 积分:0 威望:0 精华:0 注册:2015/11/21 21:26:35
  发帖心情 Post By:2018/7/4 17:54:47    Post IP:182.34.16.251[只看该作者]

老师按照你的要求 改了 还是不能按照获利5条先减仓一手执行 ,麻烦老师给看看写的对不对

INPUT:P2(5,2,100,1){止盈幅度};
VARIABLE:MAXPROFIT=0,{有仓位时最大获利幅度}VMIN = 090000;{用于隔夜高开或低开时间差}                
WIN1:=0;                                                           
WIN2:=0;//止盈、止损、回撤控制
 VARIABLE:ss=2;
 VARIABLE:ss1=-2;
////////////////////////////////////////////////////////////////////////
//账户信息:
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
可用现金:CASH(0),PRECISION0,LINETHICK0;
胜率:PERCENTWIN,LINETHICK0;
交易次数:TOTALTRADE,LINETHICK0;
//主程序
/////////////////
//信号模块:该模块主用于多空头及平仓信号的量化
{示例如下:开多:当MA10上穿MA20时,发出买入开仓交易指令; 平空:当MA10
上穿MA5时,发出卖出平仓交易指令;平多:当MA5上穿MA10时,发出买入平仓交
易指令;开空:当MA10下穿MA20时,发出开空交易指令;}
MA5: MA(CLOSE,5),PRECISION0,;                                                  
MA10:MA(CLOSE,10),PRECISION0,;                                                 
MA20:MA(CLOSE,20),PRECISION0,;                                                 
                                                                   
开多:=CROSS(MA10,MA20);                                            
平多:=CROSS(MA5,MA10);                                             
开空:=CROSS(MA20,MA10);                                            
平空:=CROSS(MA10,MA5);                                             
交易时间:=TIME>VMIN AND TIME<150000;
                             
                                                                   
////////////////
//图表日内交易模块:
 
  IF HOLDING=0 THEN BEGIN
     //多头开仓
     IF 交易时间 AND 开多 THEN BEGIN
         BUY(1,ss,LIMITR,CLOSE);
         MAXPROFIT:=0;
     END
     
     //空头开仓
     IF 交易时间 AND 开空 THEN BEGIN
         BUYSHORT(1,ss1,LIMITR,CLOSE);
         MAXPROFIT:=0;
     END
 END
 
 IF HOLDING=ss THEN BEGIN
     //多头平仓
     IF 平多 THEN
         SELL(1,HOLDING,LIMITR,CLOSE);
         end
       
         IF HOLDING=1 THEN BEGIN
     //多头平1手
     IF (C-ENTERPRICE)>p2 THEN
         SELL(1,1,LIMITR,CLOSE);
      
         end
         
         IF HOLDING=1 THEN BEGIN
     //多头平剩下1手
     IF (C-ENTERPRICE)>50*MINDIFF   THEN
         SELL(1,holding,LIMITR,CLOSE);
         
         end

        
 
     //多头收盘平仓
     IF NOT(交易时间) THEN
         SELL(1,HOLDING,LIMITR,CLOSE);
   
         
 
  
 
 
 IF HOLDING=ss1 THEN BEGIN
     //空头平仓
     IF 平多 THEN
         SELL(1,HOLDING,LIMITR,CLOSE);
         end
        
         IF HOLDING=-1 THEN BEGIN
     //空头平1手
     IF (ENTERPRICE-c)>p2 THEN
         SELL(1,1,LIMITR,CLOSE); 
        
         end
          
         IF HOLDING=-1 THEN BEGIN
     //空头平剩下1手
     IF (C-ENTERPRICE)>50*MINDIFF or 平空   THEN
         SELL(1,holding,LIMITR,CLOSE);
   
         end
        
 
     //空头收盘平仓
     IF NOT(交易时间) THEN
         SELLSHORT(1,HOLDING,LIMITR,CLOSE); 
        


 回到顶部
帅哥哟,离线,有人找我吗?
arutema
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:191 积分:0 威望:0 精华:0 注册:2015/11/21 21:26:35
  发帖心情 Post By:2018/7/4 18:19:26    Post IP:182.34.16.251[只看该作者]

是这根意思 开2手 一手 只要赚到5个点  就减1手

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/7/5 9:23:15    Post IP:180.169.30.6[只看该作者]

 
图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

其中T是开仓时候的价格:3828,最新是3836 已经成功触发平一手操作了。

我改了多头部分,空头你模仿修改下即可。


INPUT:P2(5,2,100,1){止盈幅度};
VARIABLE:MAXPROFIT=0,{有仓位时最大获利幅度}VMIN = 090000;{用于隔夜高开或低开时间差}               
WIN1:=0;                                                          
WIN2:=0;//止盈、止损、回撤控制
 VARIABLE:ss=2;
 VARIABLE:ss1=-2;
////////////////////////////////////////////////////////////////////////
//账户信息:
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
可用现金:CASH(0),PRECISION0,LINETHICK0;
胜率:PERCENTWIN,LINETHICK0;
交易次数:TOTALTRADE,LINETHICK0;
//主程序
/////////////////
//信号模块:该模块主用于多空头及平仓信号的量化
{示例如下:开多:当MA10上穿MA20时,发出买入开仓交易指令; 平空:当MA10
上穿MA5时,发出卖出平仓交易指令;平多:当MA5上穿MA10时,发出买入平仓交
易指令;开空:当MA10下穿MA20时,发出开空交易指令;}
MA5:=MA(CLOSE,5),PRECISION0,;                                                 
MA10:=MA(CLOSE,10),PRECISION0,;                                                
MA20:=MA(CLOSE,20),PRECISION0,;                                                
                                                                  
开多:=CROSS(MA10,MA20);                                           
平多:=CROSS(MA5,MA10);                                            
开空:=CROSS(MA20,MA10);                                           
平空:=CROSS(MA10,MA5);                                            
交易时间:=TIME>VMIN AND TIME<150000;
                                                                                             
////////////////
//图表日内交易模块:
IF HOLDING=0 THEN BEGIN
//多头开仓
IF 交易时间 AND 开多 THEN BEGIN
BUY(1,ss,LIMITR,CLOSE);
MAXPROFIT:=0;
END   
//空头开仓
IF 交易时间 AND 开空 THEN BEGIN
BUYSHORT(1,ss1,LIMITR,CLOSE);
MAXPROFIT:=0;
END
END
T:ref(c,BARSLAST(holding=2 and 开多));//回溯开仓时的价格

IF HOLDING=ss THEN BEGIN
//多头平仓
IF 平多 THEN
SELL(1,HOLDING,LIMITR,CLOSE);
end
      
IF HOLDING=2 THEN BEGIN
//多头平1手
IF (C-ENTERPRICE)>p2 THEN
多头平一手1:SELL(1,1,LIMITR,CLOSE);    
END     
IF HOLDING=1 THEN BEGIN
//多头平剩下1手
IF (C-T)>50*MINDIFF   THEN
多头平一手2:SELL(1,holding,LIMITR,CLOSE);       
end

      
//多头收盘平仓
IF NOT(交易时间) THEN
SELL(1,HOLDING,LIMITR,CLOSE);
IF HOLDING=ss1 THEN BEGIN
//空头平仓
IF 平多 THEN
SELL(1,HOLDING,LIMITR,CLOSE);
end
       
IF HOLDING=-1 THEN BEGIN
//空头平1手
IF (ENTERPRICE-c)>p2 THEN
SELL(1,1,LIMITR,CLOSE);        
end
         
IF HOLDING=-1 THEN BEGIN
//空头平剩下1手
IF (C-ENTERPRICE)>50*MINDIFF or 平空   THEN
SELL(1,holding,LIMITR,CLOSE); 
end
       
//空头收盘平仓
IF NOT(交易时间) THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE);
        


命数如织,当如磐石。
 回到顶部