金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 254|回复: 13

挂单进场后马上设置止盈

[复制链接]

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
发表于 2025-4-7 11:55 | 显示全部楼层 |阅读模式
1、需求:挂单进场后,马上设置挂单止盈(止盈价为N个最小变动价位)

以下是我的代码,看看是否写错?或推荐更好的写法?


[PEL] 复制代码
//进出场
tbuy_:= 做多条件;
if tbuy_ then begin
	tbuy(1,ss,lmt,close);
	tsell(1,tbuyholdingex('','',1),lmt,tenterprice+mindiff*nmindiff);
end


回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-7 13:05 | 显示全部楼层


你应该在平仓语句的条件参数里再判断下可用持仓,这样在确保订单成交情况下,执行平仓。
回复

使用道具 举报

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
 楼主| 发表于 2025-4-7 14:21 | 显示全部楼层
资深技术05 发表于 2025-4-7 13:05
你应该在平仓语句的条件参数里再判断下可用持仓,这样在确保订单成交情况下,执行平仓。

1.不是很懂哦,能简单写段代码吗?

2.我的这种写法,是不是会同时挂出,买和卖两张单子?
回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-7 14:26 | 显示全部楼层
1.
如果你没有其他离场条件得话,这个平仓可以单拎出来。
[PEL] 复制代码
//进出场
tbuy_:= 做多条件;
if tbuy_ then begin
    tbuy(1,ss,lmt,close);
end

if tbuyholdingex('','',1)>0 then tsell(1,tbuyholdingex('','',1),lmt,tenterprice+mindiff*nmindiff);


2.如果你开平都是成对的。没有加仓这种情况 这样是没有问题的。如果有加仓 那逻辑就比较复杂了。
因为不太好针对每笔加仓做一一对应的止盈。
回复

使用道具 举报

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
 楼主| 发表于 2025-4-7 14:46 | 显示全部楼层
资深技术05 发表于 2025-4-7 14:26
1.
如果你没有其他离场条件得话,这个平仓可以单拎出来。
[mw_shl_code=pel,true]//进出场

针对您说的第2点“因为不太好针对每笔加仓做一一对应的止盈”,我表示很奇怪。

在我的理解里,开平都是成对出现的,不管是不是所谓的“加仓”,不应混起来谈。

比如:
突破20日最高点做多,突破25日最高点加仓一次,出场统一为20日均线。

这是一套加仓模型对吧?

那么,再写2套交易系统。第一套:突破20日最高点做多,20日均线出场。第二套,突破25日最高点入场做多,20日均线出场。

这两者有区别吗?没有。
仅它拆分了而已。
回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-7 14:55 | 显示全部楼层
因为:
1.你开仓是限价挂单的,成交时间不能保证的。
2.你平仓是基于上次开仓价成交加点止盈的。

例如你开仓1,2,3  三笔。依序开仓。但是成交顺序取决于行情的情况。这时候要定位到每一笔的成交情况 然后计算各自止盈价格 就比较复杂的。  我描述的复杂情况就是指这种情况。  
回复

使用道具 举报

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
 楼主| 发表于 2025-4-7 15:23 | 显示全部楼层
资深技术05 发表于 2025-4-7 14:55
因为:
1.你开仓是限价挂单的,成交时间不能保证的。
2.你平仓是基于上次开仓价成交加点止盈的。

嗯明白了,确实会变复杂。
假设行情下跌,在后续的越跌越买加仓中,止盈确实会变复杂。

但我还是希望,挂单的,每笔进场对应每笔出场,就算是涨不到止盈,也放在哪里

上面的代码,第二个参数中,这样写没问题吧?
tsell(1,tbuyholdingex('','',1),lmt,tenterprice+mindiff*nmindiff);
回复

使用道具 举报

0

主题

97

帖子

97

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2025-4-7 16:05 | 显示全部楼层
本帖最后由 资深技术07 于 2025-4-7 16:11 编辑

每笔进场对应每笔出场,这个做不到的。持仓栏里,仓位都是混在一起的。
您想想,手动开仓,手动平仓,都做不到我想平那一笔就平哪一笔的。

回复

使用道具 举报

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
 楼主| 发表于 2025-4-7 16:12 | 显示全部楼层

怪事了。我把第个2参数改成ss,情况就不一样了。

假设:ss=1,每次挂单开仓1手,挂单平仓1手
改成这样
tbuy(1,ss,lmt,close);
tsell(1,ss,lmt,tenterprice+mindiff*nmindiff);

我的本意和上面的一样,“每笔进场对应每笔出场”,仅仅只改第2个参数,回测的结果巨大差别。
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-7 16:15 | 显示全部楼层
这个是平2手,和上面全部平仓是两个概念了

你这个不好处理的,除非你只开仓一次那么可以用tenterprice做对应,但是你但凡开仓几次后,就没办法每个单子各自盈利多少平仓了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-1 23:15 , Processed in 0.165258 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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