이것은 2 막대기 스윙 차트에 대한 제 Amibroker 코드입니다. 가격이 한 막대의 이전 스윙보다 낮 으면 두 막대 이동으로 처리해야한다는 조건을 추가해야합니다. 내가 가지고있는 문제는 오늘날의 낮은 가격에 대해 점검 할 마지막 스윙 저가 변수를 들고있다. 문제의 줄을 대문자로 주석 처리했습니다. 내가 생각한 것은 작동하지만 스윙 차트에는 상태가 나타나지 않는다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까? 고마워요.Amibroker 코드에 조건 추가하기
_SECTION_BEGIN("2 day swing");
upBar = H>Ref(H,-1);
dnBar = L<Ref(L,-1);
HighBarPrice=LowBarPrice=Null;
inLong=inShort=upCount=dnCount=fupbar=fdnbar=0;
for(i=1; i<BarCount; i++)
{
if(inLong==0 AND inShort==0)
{
if(upBar[i])
{
upCount=upCount+1;
if(upCount==2)
{
fupbar[i] = 1;
inLong=1;
dnCount=0;
}
}
if(dnBar[i])
{
dnCount=dnCount+1;
if(dnCount==2)
{
fdnbar[i] = 1;
inShort=1;
upCount=0;
}
}
if(inLong==1)
{
if(dnBar[i])
{
dnCount=dnCount+1;
if(L[i]<LowBarPrice) {dnCount=2;} //THIS IS THE PROBLEM
if(dnCount==2)
{
fdnbar[i]=1;
inShort=1;
if(upBar[i])
{
upCount=1;
}
else
{
upCount=0;
}
continue;
}
}
if(upBar[i]) {HighBarPrice=H[i];}
if(upBar[i] AND NOT dnBar[i]){ dnCount=0;}
}
if(inShort==1)
{
if(upBar[i])
{
upCount=upCount+1;
if(H[i]>HighBarPrice) {upCount=2;}
if(upCount==2)
{
fupbar[i]=1;
inLong=1;
if(dnBar[i])
{
dnCount=1;
}
else
{
dnCount=0;
}
continue;
}
}
if(dnBar[i]) {LowBarPrice=L[i];}// DOWN BAR IN SHORT SWING SHOULD GIVE NEW LOW
if(dnBar[i] AND NOT upBar[i]){ upCount=0;}
}
}
// Swing chart drawn here
_SECTION_END();
, 실제로 내부까지 계산되지 않습니다 아래로 마지막 스윙의 저를 필요로 배열 인덱싱 "섹션 아래 루프 (fdnbar) 때 우리가 그것을 트리거하는 2 낮은 막대 있습니다. 나는 진술을 결코 작동하지 것입니다 귀하의 요점을 볼 수 있습니다.이 질문을 나는 배열을 사용하여 및 "for 루프를 사용하여 쓸 수있게 된 이후 "그러나 당신의 도움과 링크에 대해서도 감사합니다 (매우 유익한). – Albert
PlotText와 같은 것들을 사용하기 위해 Amibroker 루핑 만 사용하는 것이 낫습니다. 그렇지 않으면, 배열을 그대로 사용하여 거의 모든 것을 달성 할 수 있습니다. - Iif와 ValueWhen가 매우 올 것입니다. 앤디. – Sethmo011