커뮤니티

다시 도움 부탁드립니다.

프로필 이미지
도전74
2026-03-30 12:30:46
81
글번호 231330
답변완료

제미나이를 통해 어려번 수정했는데 완벽하게 구현을 못하는 듯 싶어 도움 부탁드립니다.

볼린저 시가기준(4:4)와 종가기준(20:2) 하나 또는 둘다 돌파하는 종목에 신호를 표시하려고 하는데요.

상한선 돌파신호는 괜찮은 듯 싶은데.. 하단선 돌파하거나 터치 한 종목을 정확히 식별을 못하는거 같아요.

특히 시가기준(4:4)를 정확히 구현을 못하는지 어느것은 되고 어느것은 표시를 못 합니다.

차트상 분명히 두개 밴드 하단선(특히 시가기준 4:4)에 닿았는데 하나만 닿은 것처럼 표시됩니다.

제미나이 통해 만든 수식은 아래와 같습니다.


input : P1(4), D1(4), P2(20), D2(2);

input : 위치간격(1.5);


var : BB1_UP(0), BB1_DN(0), BB2_UP(0), BB2_DN(0);


// 1. 볼린저 밴드 계산

BB1_UP = ma(O, P1) + D1 * std(O, P1); // 시가 기준 상단

BB1_DN = ma(O, P1) - D1 * std(O, P1); // 시가 기준 하단

BB2_UP = ma(C, P2) + D2 * std(C, P2); // 종가 기준 상단

BB2_DN = ma(C, P2) - D2 * std(C, P2); // 종가 기준 하단


// 2. 신호 출력


// --- [상방 영역: 캔들 위] ---

if C >= BB1_UP and C >= BB2_UP Then

Plot1(H + (H * (위치간격/100)), "상방_TwoB", Red);

Else if C >= BB1_UP or C >= BB2_UP Then

Plot2(H + (H * (위치간격/100)), "상방_OneB", Blue);



// --- [하방 영역: 캔들 아래] ---


// 핵심 수정: 1번 캔들처럼 어느 하나라도 "터치(L <= DN)"하고

// 동시에 다른 하나도 만족하면 무조건 TwoB(빨강)가 뜨도록 조건을 대폭 완화했습니다.


if (L <= BB1_DN and L <= BB2_DN) Then

{

// [1번 지점 해결] 저가(L)가 두 하단선에 모두 닿거나 뚫으면 무조건 빨간색

// 2번처럼 위로 말아올린 캔들을 빼고 싶다면 아래 종가 조건을 추가합니다.

if C < BB1_DN or C < BB2_DN Then

Plot3(L - (L * (위치간격/100)), "하방_TwoB", Red);

}

Else if (L <= BB1_DN or L <= BB2_DN) Then

{

// [OneB] 하나만 터치하거나 이탈했을 때

// 역시 2번처럼 완전히 회복한 캔들은 제외하기 위해 종가 필터를 넣었습니다.

if C < BB1_DN or C < BB2_DN Then

Plot4(L - (L * (위치간격/100)), "하방_OneB", Blue);

}

검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-03-30 16:53:08

안녕하세요 예스스탁입니다. 저가가 2개의 하단밴드 이하이면 빨강, 2개봉 1개만 이하이면 파랑으로 표시되게 수정해 드립니다. input : P1(4), D1(4), P2(20), D2(2); input : 위치간격(1.5); var : BB1_UP(0), BB1_DN(0), BB2_UP(0), BB2_DN(0); // 1. 볼린저 밴드 계산 BB1_UP = ma(O, P1) + D1 * std(O, P1); // 시가 기준 상단 BB1_DN = ma(O, P1) - D1 * std(O, P1); // 시가 기준 하단 BB2_UP = ma(C, P2) + D2 * std(C, P2); // 종가 기준 상단 BB2_DN = ma(C, P2) - D2 * std(C, P2); // 종가 기준 하단 // 2. 신호 출력 // --- [상방 영역: 캔들 위] --- if C >= BB1_UP and C >= BB2_UP Then Plot1(H + (H * (위치간격/100)), "상방_TwoB", Red); Else if C >= BB1_UP or C >= BB2_UP Then Plot2(H + (H * (위치간격/100)), "상방_OneB", Blue); if (L <= BB1_DN and L <= BB2_DN) Then Plot3(L - (L * (위치간격/100)), "하방_TwoB", Red); Else if (L <= BB1_DN or L <= BB2_DN) Then Plot4(L - (L * (위치간격/100)), "하방_OneB", Blue); 즐거운 하루되세요