Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共10 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
zhangcharlie 发表于:2021/3/28 10:24:03
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 的数值,

谢谢帮助

2楼
zhangcharlie 发表于:2021/3/28 10:31:36
i 执行到多少,m2-m3=0{m2均线与M3均线相等,如果没有相等的可能性,那就输出无解,这样简单点
3楼
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情况下的均线值,再做个对比。但是这种循环运行起来会很卡的。
[此贴子已经被作者于2021/3/29 9:37:16编辑过]
4楼
zhangcharlie 发表于:2021/3/29 10:20:20
以下是引用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编辑过]

5楼
FireScript 发表于:2021/3/29 10:28:20
后面一种写法就是取绝对值最小,也就是差值最小的位置的。 我也觉得相等不可能,所以才提供了后面的那种方式。
6楼
zhangcharlie 发表于:2021/3/29 13:12:00
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老师再出手相助,谢谢!
7楼
FireScript 发表于:2021/3/29 13:18:04
  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  只能输出最后一个。没办法都计算出来。
8楼
zhangcharlie 发表于:2021/3/29 14:00:01
想要输出第一个交叉时的 i 怎么办?
9楼
FireScript 发表于:2021/3/29 14:02:52
 这样试下。

 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.
10楼
zhangcharlie 发表于:2021/3/29 20:28:48
谢谢FireScript老师!
共10 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03516 s, 3 queries.