金字塔决策交易系统

标题: 如何以白天早盘开始为时间线拿到截止目前时间段K线的最高价和最低价 [打印本页]

作者: LHZB    时间: 2024-11-8 15:58
标题: 如何以白天早盘开始为时间线拿到截止目前时间段K线的最高价和最低价
如何以白天早盘开始为时间线拿到截止目前时间段K线的最高价和最低价

作者: 技术008    时间: 2024-11-8 15:59
hhv(high,todaybar)
llv(low,todaybar)
作者: LHZB    时间: 2024-11-8 16:24
技术008 发表于 2024-11-8 15:59
hhv(high,todaybar)
llv(low,todaybar)

这个是以晚上为当天开始的,有没有以白天早盘开始计算的最高价和最低价
作者: 技术008    时间: 2024-11-8 16:25
bars:barslast(time=090100);
hhv(high,bars)
llv(low,bars)
作者: LHZB    时间: 2024-11-8 17:01
技术008 发表于 2024-11-8 16:25
bars:barslast(time=090100);
hhv(high,bars)
llv(low,bars)

怎么保留上一个周期运算的结果
作者: 技术008    时间: 2024-11-8 17:02
什么交上一周期计算结果
作者: LHZB    时间: 2024-11-8 17:05
技术008 发表于 2024-11-8 17:02
什么交上一周期计算结果

比如说我这个周期赋值一个参数为0,然后计算出了一个结果赋值给他,但是下次代码触发这个结果还是0又要重新算
作者: 技术008    时间: 2024-11-8 17:06
variable:n=0;

if c>o then n:=n+1;

n就是
作者: LHZB    时间: 2024-11-8 17:21
技术008 发表于 2024-11-8 17:06
variable:n=0;

if c>o then n:=n+1;

如何在if语句中使用ref
作者: 技术008    时间: 2024-11-8 17:22
temp:=ref(c,1);
if cond then a:=temp;

放外面就行了
作者: LHZB    时间: 2024-11-8 17:39
技术008 发表于 2024-11-8 17:22
temp:=ref(c,1);
if cond then a:=temp;

代码能设置止盈止损吗
作者: LHZB    时间: 2024-11-8 17:40
技术008 发表于 2024-11-8 17:22
temp:=ref(c,1);
if cond then a:=temp;

代码能设置止盈止损吗
作者: 技术008    时间: 2024-11-8 17:52
看功能模块范例这里都有例子
作者: LHZB    时间: 2024-11-8 18:00
技术008 发表于 2024-11-8 17:52
看功能模块范例这里都有例子

highest:hhv(high,TODAYBAR());
lowest:llv(close,TODAYBAR());
variable:KD=0;
variable:KK=0;
hh:HOLDING();

}
//当前计算机机器码不是预设的机器码时,则停止运行公式。【一般放在策略顶部】
if high<highest then GOTO QUITLINE;

for i=1 to DATACOUNT() do BEGIN //满足条件再触发
        a:=ref(low,i);
        b:=ref(low,i+1);
        os:=ref(close,i);
        if a<b THEN
                BEGIN
                        KK:=os;
                        cs:os;
                        break;
                END   
        else
                CONTINUE;
END

QUITLINE@ EXIT;

if HOLDING()=0 THEN //每个周期都触发
        BEGIN
                BUYSHORT(close<=KK,1,MARKETR);
                s:1;
        END
我这个代码是不是exit之后不会触发后面的开仓操作了
作者: LHZB    时间: 2024-11-8 19:15
技术008 发表于 2024-11-8 17:22
temp:=ref(c,1);
if cond then a:=temp;

if high>highest or TODAYBAR<=1 then
        BEGIN
        for i=1 to DATACOUNT() do BEGIN
                a:=ref(low,i);
                b:=ref(low,i+1);
                os:ref(close,i);
                if i>=2 and a<b THEN
                        BEGIN
                                KK:=os;
                                mm:i;
                                break;
                        END    //一定要明显转折
                else
                        CONTINUE;
        END
END
我这个要循环往前找位置怎么办,只能放里面了
作者: 技术008    时间: 2024-11-11 09:02
不要去适用循环,软件本身就是每个k都在循环了
上面图上有止盈止损和回撤止盈代码,建议看那个
作者: LHZB    时间: 2024-11-11 11:24
技术008 发表于 2024-11-11 09:02
不要去适用循环,软件本身就是每个k都在循环了
上面图上有止盈止损和回撤止盈代码,建议看那个

这个代码可以设置每个k线周期的结算价触发吗,如果同时跑多个品种,多个品种同时触发,能不能只触发一个品种
作者: 技术008    时间: 2024-11-11 11:26
这个不好控制的,本身图表和图表之间策略就是各自独立运行的
后台你可以用一个ex的全局变量进行控制,整个软件内所有地方都受这一个控制
图表的不好这么控制的
作者: LHZB    时间: 2024-11-11 15:29
技术008 发表于 2024-11-11 09:02
不要去适用循环,软件本身就是每个k都在循环了
上面图上有止盈止损和回撤止盈代码,建议看那个

但是我要从当前k线往前找一个价位怎么办
作者: 技术008    时间: 2024-11-11 15:30
ref(c,1)
表示上一个
作者: LHZB    时间: 2024-11-11 15:31
技术008 发表于 2024-11-11 15:30
ref(c,1)
表示上一个

我的意思是从当前k线开始,往前找多个k线的数据,然后从里面选一个合适的价格
作者: 技术008    时间: 2024-11-11 15:32
这个你要具体怎么找呢,你得知道前面多少个周期要
作者: LHZB    时间: 2024-11-11 15:33
技术008 发表于 2024-11-11 15:32
这个你要具体怎么找呢,你得知道前面多少个周期要

比如从当前k线开始,往前找如果ref(low,2)<=ref(low,1)则继续往前,直到ref(low,n+1)>ref(low,n)
作者: 技术008    时间: 2024-11-11 15:34
b:sumbars(ref(low,2)<=ref(low,1),1)
ref(close,b)

作者: LHZB    时间: 2024-11-11 15:56
技术008 发表于 2024-11-11 15:34
b:sumbars(ref(low,2)

像这个我要去b的后一个K线周期收盘价怎么取,直接减1好像不行

作者: 技术008    时间: 2024-11-11 15:57
b:sumbars(ref(low,2)<=ref(low,1),1)
ref(close,b-1)
作者: LHZB    时间: 2024-11-11 16:02
技术008 发表于 2024-11-11 15:57
b:sumbars(ref(low,2)

这函数不对啊,触发一次ref(low,2)<=ref(low,1)就退出了,最多就只有到1
作者: 技术008    时间: 2024-11-11 16:03
你要找到满足两次的就把1改成2,
这个函数就是往前找符合条件到指定次数,返回距离现在周期

作者: LHZB    时间: 2024-11-11 16:06
技术008 发表于 2024-11-11 16:03
你要找到满足两次的就把1改成2,
这个函数就是往前找符合条件到指定次数,返回距离现在周期

不是次数满足,而是条件满足,就是往前判断ref(low,2)<=ref(low,1),如果是就加一,继续往前判断,直到ref(low,2)>ref(low,1)
作者: 技术008    时间: 2024-11-11 16:07
sumbars(ref(low,2)>ref(low,1),1)

那就直接找符合这个条件不就好了
作者: LHZB    时间: 2024-11-11 16:07
技术008 发表于 2024-11-11 16:03
你要找到满足两次的就把1改成2,
这个函数就是往前找符合条件到指定次数,返回距离现在周期

就是找满足这个条件的周期与当前k线的距离,不知道是多少次数,就是找满足这个条件的次数
作者: 技术008    时间: 2024-11-11 16:07

sumbars(ref(low,2)>ref(low,1),1)

那就直接找符合这个条件不就好了
作者: LHZB    时间: 2024-11-11 16:09
技术008 发表于 2024-11-11 16:07
sumbars(ref(low,2)>ref(low,1),1)

那就直接找符合这个条件不就好了

我试过了他返回60多个周期明显不对啊,逻辑应该是对的但是返回值不对
作者: 技术008    时间: 2024-11-11 16:10
那就不清楚了,这个就是找符合条件一次到现在周期
作者: LHZB    时间: 2024-11-11 16:13
技术008 发表于 2024-11-11 16:10
那就不清楚了,这个就是找符合条件一次到现在周期

highest:hhv(high,TODAYBAR());
lowest:llv(close,TODAYBAR());
variable:KD=0;
variable:KK=0;
hh:HOLDING();

}
//当前计算机机器码不是预设的机器码时,则停止运行公式。【一般放在策略顶部】
if high<highest then GOTO QUITLINE;

for i=1 to DATACOUNT() do BEGIN //满足条件再触发
        a:=ref(low,i);
        b:=ref(low,i+1);
        os:=ref(close,i);
        if a<b THEN
                BEGIN
                        KK:=os;
                        cs:os;
                        break;
                END   
        else
                CONTINUE;
END

QUITLINE@ EXIT;

if HOLDING()=0 THEN //每个周期都触发
        BEGIN
                BUYSHORT(close<=KK,1,MARKETR);
                s:1;
        END
我这个代码是不是exit之后不会触发后面的开仓操作了
作者: 技术008    时间: 2024-11-11 16:14
是的
作者: LHZB    时间: 2024-11-11 16:33
技术008 发表于 2024-11-11 16:14
是的

highest:hhv(high,TODAYBAR());
lowest:llv(low,TODAYBAR());
开空前转折:sumbars(ref(low,2)>ref(low,1),1);
开空价位预备:ref(close,开空前转折);
VARIABLE:开空价位=0;

if high=HIGHEST THEN
        BEGIN
                开空价位=开空价位预备;
                m:开空价位;
        END
BUYSHORT(close<=开空价位 and holding()=0,1,MARKETR);
有什么办法能让开空价位能一直保留到之后的周期吗,每次量化启动是0
作者: LHZB    时间: 2024-11-11 16:38
技术008 发表于 2024-11-11 16:34
前面不是回复过了吗,通过这个全局变量来控制
初始0,后面就根据自己条件赋值时多少就是多少

我代码里面是这样写的,但是用m显示出来他一直是0啊
作者: 技术008    时间: 2024-11-11 16:40
图表的全局变量就是从第一根初始化然后开始,每次都是从第一根计算最后的

https://www.weistock.com/docs/PE ... 8F%98%E9%87%8F.html

可以看下上面关于variable的介绍
作者: LHZB    时间: 2024-11-11 16:45
技术008 发表于 2024-11-11 16:40
图表的全局变量就是从第一根初始化然后开始,每次都是从第一根计算最后的

https://www.weistock.com/doc ...

无法直接赋值给他吗比如我这里的  “开空价位=开空价位预备”
作者: 技术008    时间: 2024-11-11 16:48
金字塔了里面赋值时:=不是=

刚才链接里有入门教程,建议可以稍微看下
基本语法建议先看完
作者: LHZB    时间: 2024-11-11 17:07
技术008 发表于 2024-11-11 16:48
金字塔了里面赋值时:=不是=

刚才链接里有入门教程,建议可以稍微看下

像这种是每次k线结束才会触发,那要是止盈止损用代码表示是不是也是得等k线结束时才能触发
作者: 技术008    时间: 2024-11-11 17:22
轮询还是走完k不是代码控制的,由程序化运行模式选轮询还是走完k决定




欢迎光临 金字塔决策交易系统 (https://www.weistock.com/BBS/) Powered by Discuz! X3.4