커뮤니티

지표수식 검토 부탁드립니다.

프로필 이미지
charlesj
2026-01-21 12:32:52
82
글번호 229949

첨부 이미지

아래 내용의 수식으로 지표 적용시 의도한 내용으로 지표가 표시되지 않습니다.

제 의도는,

조건이 완성되면 2일전의 L값에 라인을 표시하고 그 값을 유지하면서 5일동안 표시된 후 사라지도록 의도하고 작성하였으나

일자가 변동되면 해당일 L값으로 변동되어 표시되고 있고, 신호 수식도 최초 완성된 일자의 2일전 L값에만 표시되도록 하고 싶은데

잘 안되고 있습니다.

원인이 무엇이고  필요한 부분을 수정 부탁드립니다.


var: Ln1_Flag(0), Ln1_Count(0), Ln1_Cross(0);

var: Ln2_Flag(0), Ln2_Count(0), Ln2_Cross(0);


// Ln1 조건: 2봉전 고가 < 현재 저가, 최근 3봉 연속 양봉

Ln1_Flag = iff(H[2] < L and C[2] > O[2] and C[1] > O[1] and C > O, 1, 0);


// 새로운 Ln1 신호 발생

if Ln1_Flag = 1 then begin

    Value1 = L;

    Ln1_Count = -2;  // -2부터 시작 (2일 전부터 표시)

end;


// 카운트 증가

if Ln1_Count >= -2 then begin

    if Ln1_Count < 2 then begin

        Ln1_Count = Ln1_Count + 1;

    end

    else begin

        Ln1_Count = -999;  // 5일 완료 후 비활성화

        Value1 = 0;

    end;

end;


// Ln1 라인 표시 (-2 ~ 2봉 동안, 총 5일) - 레드

if Ln1_Count >= -2 then begin

    if Ln1_Count <= 2 then

        Plot1(Value1, "Ln1 Line", Red);

end

else

    Plot1(NoValue);


// Ln1 크로스업 신호 체크

Ln1_Cross = iff(CrossUp(C, Value1) and Value1 > 0, 1, 0);


if Ln1_Cross = 1 then

    Plot3(Value1, "Ln1 Signal", Red);

else

    Plot3(NoValue);


// Ln2 조건: 현재 고가 < 2봉전 저가, 최근 3봉 연속 음봉

Ln2_Flag = iff(H < L[2] and C[2] < O[2] and C[1] < O[1] and C < O, 1, 0);


// 새로운 Ln2 신호 발생

if Ln2_Flag = 1 then begin

    Value2 = L[2];

    Ln2_Count = -2;  // -2부터 시작 (2일 전부터 표시)

end;


// 카운트 증가

if Ln2_Count >= -2 then begin

    if Ln2_Count < 2 then begin

        Ln2_Count = Ln2_Count + 1;

    end

    else begin

        Ln2_Count = -999;  // 5일 완료 후 비활성화

        Value2 = 0;

    end;

end;


// Ln2 라인 표시 (-2 ~ 2봉 동안, 총 5일) - 블루

if Ln2_Count >= -2 then begin

    if Ln2_Count <= 2 then

        Plot2(Value2, "Ln2 Line", Blue);

end

else

    Plot2(NoValue);


// Ln2 크로스업 신호 체크

Ln2_Cross = iff(CrossUp(C, Value2) and Value2 > 0, 1, 0);


if Ln2_Cross = 1 then

    Plot4(Value2, "Ln2 Signal", Blue);

else

    Plot4(NoValue);  


부탁드립니다.

지표
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2026-01-21 18:00:24

안녕하세요 예스스탁입니다. 1 plot은 현재봉보다 과거봉에 그리게 지정할 수 없습니다. 조건만족하면 2개봉부터 그리고 이후 5개봉까지 선을 연장하시려면 추세선으로 작성해 주셔야 합니다. 2 if Ln1_Flag = 1 then begin 예스랭귀지에서 =은 저장연산자입니다. 같다라고 비교하실 떄는 ==을 사용하셔야 합니다. if Ln1_Flag == 1 then begin 3 추세선을 이용해 조건만족시 2개봉전부터 그리고 이후 5개봉까지 그려지게 수정해 드립니다. 5개봉이 가기전에 새로 조건이 만족하면 해당 시점부터 다시 그리게 됩니다. var : Ln1_Flag(0), Ln1_Count(0), Ln1_Cross(0); var : Ln2_Flag(0), Ln2_Count(0), Ln2_Cross(0); // Ln1 조건: 2봉전 고가 < 현재 저가, 최근 3봉 연속 양봉 Ln1_Flag = iff(H[2] < L and C[2] > O[2] and C[1] > O[1] and C > O, 1, 0); var : TL1(0),TL2(0); // 새로운 Ln1 신호 발생 if Ln1_Flag == 1 then { Value1 = L; value11 = Index; TL1 = TL_new(sdate[2],stime[2],value1,sDate,sTime,value1); TL_SetColor(TL1,Blue); TL_SetDrawMode(TL1,0); } Else { if value1 > 0 and Index <= value11+5 Then TL_SetEnd(TL1,sDate,sTime,value1); } Ln1_Cross = iff(CrossUp(C, Value1) and Value1 > 0, 1, 0); if Ln1_Cross == 1 then Plot3(Value1, "Ln1 Signal", Red); else NoPlot(3); // Ln2 조건: 현재 고가 < 2봉전 저가, 최근 3봉 연속 음봉 Ln2_Flag = iff(H < L[2] and C[2] < O[2] and C[1] < O[1] and C < O, 1, 0); // 새로운 Ln2 신호 발생 if Ln2_Flag = 1 then { Value2 = L[2]; Value21 = Index; TL2 = TL_new(sdate[2],stime[2],value2,sDate,sTime,value2); TL_SetColor(TL2,Red); TL_SetDrawMode(TL2,0); } Else { if value2 > 0 and Index <= value21+5 Then TL_SetEnd(TL2,sDate,sTime,value2); } // Ln2 크로스업 신호 체크 Ln2_Cross = iff(CrossUp(C, Value2) and Value2 > 0, 1, 0); if Ln2_Cross == 1 then Plot4(Value2, "Ln2 Signal", Blue); else Plot4(NoValue); 즐거운 하루되세요
프로필 이미지

charlesj

2026-01-21 20:20:47

수정해 주신대로 해봐도 제대로 생성이 안됩니다. 제가 바라는건 조건 완성일 2일전 해당 L값에 라인을 5일동안 같은 값으로 그어주는것 입니다.
하지만 수정해 주신 수식으로는 적용되지 않습니다. 제가 바라는건 조건 완성되면(당일) 2일전 L값에 라인이 최초 생성되고 그 값이 5일간 유지(그림화면 검정색 라인으로 그림)된 후 그 이후는 나타나지 않게 하는것입니다.
신호는 라인밑에 한번만 원 또는 삼각형 형태로 표시되게 해 주세요.

프로필 이미지

charlesj

2026-01-21 20:32:44

위 내용중 라인생성 조건에 대해 말씀 드리면,
Ln1은 조건 완성일(당일) L값에 라인이 시작되어 5일간(오늘부터 5일간) 유지되게 하고,
Ln2는 조건 완성일(당일) 2일전의 L값에 라인이 시작하여 5일간(내일,모레까지) 유지된 후 5일 이후에는 나타나지 않도록 해주세요. 첨부한 그림의 맨처음 검정라인이 Ln1 조건, 두번째 라인이 Ln2 조건 입니다.