커뮤니티

논리값(참/거짓)이나 논리표현식이 와야 합니다.

프로필 이미지
뮬란
2026-07-09 17:55:03
62
글번호 232762
답변완료

안녕하세요...


아래 수식으로 전략차트를 실행하면 문제없이 잘 되는데

시뮬레이션차트에 실행하면


"논리값(참/거짓)이나 논리표현식이 와야 합니다."

라고 오류 메세지가 뜨는데요...


수정 부탁드립니다.

감사합니다.



input : 수량(1);

input : Periods(10);

input : Multiplier(3.0);

input : changeATR(true);

input : showsignals(true);

input : highlighting(true);

var : src(0),alpha(0),atr1(0),atr2(0),atrv(0);

var : up(0),up1(0),dn(0),dn1(0);

var : trend(0),tx(0);


src = (h+l)/2;

alpha = 1/Periods;

atr1 = iff(IsNan(atr1[1]) == true,ma(TrueRange, Periods), alpha * TrueRange + (1 - alpha) * iff(IsNan(atr1[1])==true,0,atr1[1]));

atr2 = ma(TrueRange, Periods);

atrv = iff(changeATR == true, atr1, atr2);


up = src-(Multiplier*atrv);

up1 = iff(isnan(up[1]) == true,up,up[1]);

up = iff(close[1] > up1 , max(up,up1), up);

dn = src+(Multiplier*atrv);

dn1 = iff(isnan(dn[1])==true,dn,dn[1]);

dn = iff(close[1] < dn1 , min(dn, dn1) , dn);


trend = 1;

trend = iff(isnan(trend[1]) == true,trend,trend[1]);

trend = iff(trend == -1 and close > dn1 , 1 , iff(trend == 1 and close < up1 , -1 , trend));




//----------------------------------------------------------------------------


if trend == 1

Then

{Buy("b",OnClose,Def,수량);}


if MarketPosition == 1

and c < (EntryPrice-200*PriceScale)

Then

{ExitLong("bs",OnClose);}


if MarketPosition == 1 and

c > (EntryPrice+200*PriceScale)

Then

{ExitLong("bx",OnClose);}





시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-07-10 13:41:02

안녕하세요 예스스탁입니다. input : changeATR(true); input : showsignals(true); input : highlighting(true); 시뮬레이션 차트는 input변수에 대한 최적화 기능이 있어 모든 input변수가 숫자형이어야 합니다. 1과 0으로 지정되게 수정해 드립니다. 다만 올리신 수식에서 showsignals, highlighting은 사용하는 부분이 없습니다. 만약 올리신 수식에 해당 변수가 사용된 부분이 생략된 상태라면
수식내에서 showsignals == true는 showsignals == 1과 같이 조건을 변경해 주셔야 합니다.
input : 수량(1); input : Periods(10); input : Multiplier(3.0); input : changeATR(1);//1:true,0:False input : showsignals(1);//1:true,0:False input : highlighting(1);//1:true,0:False var : src(0),alpha(0),atr1(0),atr2(0),atrv(0); var : up(0),up1(0),dn(0),dn1(0); var : trend(0),tx(0); src = (h+l)/2; alpha = 1/Periods; atr1 = iff(IsNan(atr1[1]) == true,ma(TrueRange, Periods), alpha * TrueRange + (1 - alpha) * iff(IsNan(atr1[1])==true,0,atr1[1])); atr2 = ma(TrueRange, Periods); atrv = iff(changeATR == 1, atr1, atr2); up = src-(Multiplier*atrv); up1 = iff(isnan(up[1]) == true,up,up[1]); up = iff(close[1] > up1 , max(up,up1), up); dn = src+(Multiplier*atrv); dn1 = iff(isnan(dn[1])==true,dn,dn[1]); dn = iff(close[1] < dn1 , min(dn, dn1) , dn); trend = 1; trend = iff(isnan(trend[1]) == true,trend,trend[1]); trend = iff(trend == -1 and close > dn1 , 1 , iff(trend == 1 and close < up1 , -1 , trend)); //---------------------------------------------------------------------------- if trend == 1 Then {Buy("b",OnClose,Def,수량);} if MarketPosition == 1 and c < (EntryPrice-200*PriceScale) Then {ExitLong("bs",OnClose);} if MarketPosition == 1 and c > (EntryPrice+200*PriceScale) Then {ExitLong("bx",OnClose);} 즐거운 하루되세요