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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 求助:简单循环的写法

   

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


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

主题:求助:简单循环的写法

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


加好友 发短信
等级:论坛游侠 帖子:144 积分:450 威望:0 精华:0 注册:2011/3/10 9:42:21
求助:简单循环的写法  发帖心情 Post By:2021/3/28 10:24:03    Post IP:115.227.102.183[只看该作者]

N2:=20;
N3:=30;
M2:=MA(CLOSE,20-i);
M3:=MA(CLOSE,30-i);
i不超过20 i=1 to 20;
i 执行到多少,m2-m3=0{m2均线与M3均线相等,或者差额最小,两条均线最接近}
求i 的数值,

谢谢帮助


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


加好友 发短信
等级:论坛游侠 帖子:144 积分:450 威望:0 精华:0 注册:2011/3/10 9:42:21
  发帖心情 Post By:2021/3/28 10:31:36    Post IP:115.227.102.183[只看该作者]

i 执行到多少,m2-m3=0{m2均线与M3均线相等,如果没有相等的可能性,那就输出无解,这样简单点

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


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

 mark:=0;
for i=1 to 20 do
begin
m2:=ma(c,20-i);
m3:=ma(c,30-i);    
if m2=m3 then mark:=i;
end

show:mark;

或者
VARIABLE:x[20]:=0;
for i=1 to 20 do
begin
m2:=ma(c,20-i);
m3:=ma(c,30-i);   
x[i]:=abs(m2-m3);
end

show:MFAMAX(x ,20);//这种可以找到绝对值最小位置的I值。



写倒是没啥吧,就是遍历下所以I情况下的均线值,再做个对比。但是这种循环运行起来会很卡的。
[此贴子已经被作者于2021/3/29 9:37:16编辑过]


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


加好友 发短信
等级:论坛游侠 帖子:144 积分:450 威望:0 精华:0 注册:2011/3/10 9:42:21
  发帖心情 Post By:2021/3/29 10:20:20    Post IP:115.227.102.183[只看该作者]

以下是引用FireScript在2021/3/29 9:36:51的发言:
 mark:=0;
for i=1 to 20 do
begin
m2:=ma(c,20-i);
m3:=ma(c,30-i);    
if m2=m3 then mark:=i;
end

show:mark;

或者
VARIABLE:x[20]:=0;
for i=1 to 20 do
begin
m2:=ma(c,20-i);
m3:=ma(c,30-i);   
x[i]:=abs(m2-m3);
end

show:MFAMAX(x ,20);//这种可以找到绝对值最小位置的I值。



写倒是没啥吧,就是遍历下所以I情况下的均线值,再做个对比。但是这种循环运行起来会很卡的。




 mark:=0;
for i=1 to 20 do
begin
m2:=ma(c,20-i);
m3:=ma(c,30-i);    
if m2=m3 then mark:=i;
end

show:mark;
谢谢帮助,我表达得不精确,不是m2=m3,正好相等的可能性几乎没有,是m2,m3交叉的意思;如果不存在交叉就输出0,这样的情况怎么写,谢谢!
[此贴子已经被作者于2021/3/29 9:37:16编辑过]


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


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

后面一种写法就是取绝对值最小,也就是差值最小的位置的。 我也觉得相等不可能,所以才提供了后面的那种方式。


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


加好友 发短信
等级:论坛游侠 帖子:144 积分:450 威望:0 精华:0 注册:2011/3/10 9:42:21
  发帖心情 Post By:2021/3/29 13:12:00    Post IP:115.227.102.183[只看该作者]

VARIABLE:x[20]:=0;
for i=1 to 20 do
begin
m2:=ma(c,20-i);
m3:=ma(c,30-i);   
x[i]:=abs(m2-m3);/////修改成m2与m3一旦金叉或者死叉 就停止计算
end

show:i;   //m2与m3一旦金叉或者死叉的I值。

FireScript老师再出手相助,谢谢!

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


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

  mark:=0;
for i=1 to 20 do
begin
m2:=ma(c,20-i);
m3:=ma(c,30-i);    
if cross(m2,m3) then mark:=i;
end

show:mark;
判断条件改下就行了。但是如果有多个满足条件的I  只能输出最后一个。没办法都计算出来。


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


加好友 发短信
等级:论坛游侠 帖子:144 积分:450 威望:0 精华:0 注册:2011/3/10 9:42:21
  发帖心情 Post By:2021/3/29 14:00:01    Post IP:115.227.102.183[只看该作者]

想要输出第一个交叉时的 i 怎么办?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/29 14:02:52    Post IP:58.246.57.26[只看该作者]

 这样试下。

 mark:=0;
for i=1 to 20 do
begin
m2:=ma(c,20-i);
m3:=ma(c,30-i);  
 
if cross(m2,m3) then  begin
mark:=i;
BREAK;
end
end

show:mark;

如果不存在金叉的 mark值为0.


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


加好友 发短信
等级:论坛游侠 帖子:144 积分:450 威望:0 精华:0 注册:2011/3/10 9:42:21
  发帖心情 Post By:2021/3/29 20:28:48    Post IP:115.227.102.183[只看该作者]

谢谢FireScript老师!

 回到顶部