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 的数值,
谢谢帮助
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编辑过]
以下是引用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 dobeginm2:=ma(c,20-i);m3:=ma(c,30-i); if m2=m3 then mark:=i;endshow:mark;
谢谢帮助,我表达得不精确,不是m2=m3,正好相等的可能性几乎没有,是m2,m3交叉的意思;如果不存在交叉就输出0,这样的情况怎么写,谢谢!
[此贴子已经被作者于2021/3/29 9:37:16编辑过]
后面一种写法就是取绝对值最小,也就是差值最小的位置的。 我也觉得相等不可能,所以才提供了后面的那种方式。
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 只能输出最后一个。没办法都计算出来。
这样试下。
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.