金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 4666|回复: 25

转换函数

[复制链接]

23

主题

88

帖子

88

积分

等级: 免费版

注册:
2023-8-24
曾用名:
发表于 2024-3-2 15:15 | 显示全部楼层 |阅读模式
CROSS(C,HH),BK(1);
TRADE_AGAIN(2);//老师好,这个是文华的再次加仓函数,怎么替换成我们的呢?谢谢

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-3-4 08:49 | 显示全部楼层
没有对应的函数。

我们加仓都是自己控制逻辑去实现。通常是判断仓位来限制更多的信号触发。 或者是全局变量记录开仓的次数。
可参考的范例:https://www.weistock.com/bbs/for ... &extra=page%3D2


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

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-3-4 08:51 | 显示全部楼层
没有加仓函数,加仓在金字塔中同样适用buy这类开仓函数即可。

例如:
//条件成立时,增加仓位控制范围。

if 其他条件 and holding>0 and holding<2 then begin
buy()
end
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

23

主题

88

帖子

88

积分

等级: 免费版

注册:
2023-8-24
曾用名:
 楼主| 发表于 2024-3-5 13:56 | 显示全部楼层
VARIABLE:NUM=0;                            // 全局变量,来控制同条件加仓次数
CS:=3;                                              //限定最多加仓3次
MA5:=MA(CLOSE, 5);
MA20:=MA(CLOSE, 20);
COND1:=CROSS(MA5,MA20);
COND2:=CROSS(MA20,MA5);

IF 条件3 AND HOLDING>0 THEN SELL(1,1,MARKET);     //平仓
IF 条件4 and COND1 AND HOLDING=0 THEN   BUY(1,1,MARKET);         //首次开仓
IF COND1 AND HOLDING>0 AND NUM<CS THEN             //加仓3次
BEGIN
    BUY(1,1,MARKET);
    NUM:=NUM+1;.
END
IF CLOSETIME(0) - CURRENTTIME<60 THEN NUM:=0;             // 距离170000收盘前60秒停止加仓

老师麻烦看下,上面改的对不? 首次开仓之后,以同条件再加仓三次。收盘前60秒不加仓。

补充内容 (2024-3-5 13:57):
NUM<CS ,老师这个表示小于3次,还会加到3次吗?

补充内容 (2024-3-5 14:02):
老师,中途有减仓,用if和仓位控制比较复杂,所以用全局会简单些。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-3-5 14:02 | 显示全部楼层
本帖最后由 技术009 于 2024-3-5 14:04 编辑

//如果是1分钟周期直接这样就行了
if time=185900 then num:=CS ;      

1.时间不能直接减,你上面那个写法直接减是完全错误的。
2.全局变量你要停止的时候,你应该直接加到最大。
3.最后,你没有设置重置 num:=0 的情况。这意味这,你历史信号只要开仓过三次,后续就永远无法加仓了。
你应该在全平时候 直接重置num的值为0。

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

使用道具 举报

23

主题

88

帖子

88

积分

等级: 免费版

注册:
2023-8-24
曾用名:
 楼主| 发表于 2024-3-5 14:08 | 显示全部楼层
多谢老师;

//如果是1分钟周期直接这样就行了
if time=185900 then num:=CS ;  

1分钟以上周期怎么写呢?老师;

对啦,上面加仓写的对吗?

另外,老师,盈利1%止盈,亏损1%止损,怎么写,谢谢
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-3-5 14:18 | 显示全部楼层
[PEL] 复制代码
variable:num:=0;                            // 全局变量,来控制同条件加仓次数
cs:=3;                                              //限定最多加仓3次
ma5:=ma(close, 5);
ma20:=ma(close, 20);
cond1:=cross(ma5,ma20);
cond2:=cross(ma20,ma5);

if cond2 and holding>0 then
begin 
sell(1,1,market);//平仓
num:=0;     
end 

if cond1 and cond1 and holding=0 then   buy(1,1,market);         //首次开仓

//7.0版本该函数有效
time_min1:callstock('',vttime,1,0);
tcon:time_min1<=185900;//最后一分钟不执行加仓,即59分到结束的1分钟

if cond1 and holding>0 and num<cs and tcon then             //加仓3次
begin
    buy(1,1,market);
    num:=num+1;
end


if c/avgenterprice>=1.01 and holding>0 then 
begin
多止盈:sell(1,holding,market);
num:=0;	
end 

if c/avgenterprice<=0.99 and holding>0 then 
begin
多止损:sell(1,holding,market);
num:=0;	
end 
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

23

主题

88

帖子

88

积分

等级: 免费版

注册:
2023-8-24
曾用名:
 楼主| 发表于 2024-3-5 14:21 | 显示全部楼层
3.最后,你没有设置重置 num:=0 的情况。这意味这,你历史信号只要开仓过三次,后续就永远无法加仓了。
你应该在全平时候 直接重置num的值为0。

老师,不知道怎么写?能帮忙写出来吗?多谢
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-3-5 14:22 | 显示全部楼层
看7楼代码。
3.最后,你没有设置重置 num:=0 的情况。这意味这,你历史信号只要开仓过三次,后续就永远无法加仓了。
你应该在全平时候 直接重置num的值为0。” 这个不用管了,以7楼代码为准。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

23

主题

88

帖子

88

积分

等级: 免费版

注册:
2023-8-24
曾用名:
 楼主| 发表于 2024-3-5 14:23 | 显示全部楼层
多谢老师
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-1 18:32 , Processed in 0.125845 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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