커뮤니티

해당 봉 위치

프로필 이미지
너무조아
2026-07-10 11:47:06
94
글번호 232775
답변완료

아래 조건의 해당봉 위치에 황금종 그림과 풍경소리가 나도록 하고 싶은데 잘 안됩니다.

실행이 잘 될 수 있도록 수식을 수정해 주시면 감사하겠습니다.


// ============================================================

// 진입 후보 '황금 종' 알림 지표 (수렴 / 쌍바닥 / 쌍봉)

// 차트 봉 위/아래에 황금 종 ?? + 소리

// 로직 = sac_semiauto.py 파이썬 알림과 동일 (LRL 3선 12/60/104 + OHLC + 거래량)

//

// ★플랫폼 확인 필요(컴파일 오류 시 알려주세요): 아래 표시★ 붙은 함수는


// - LRL(Close, N)

// - SwingLowBar / SwingHighBar (스윙 극점 찾기)

// - Text_New / Text_SetColor / Text_SetStyle (황금 종 그리기)

// - PlaySound / Alert (소리)

// ============================================================


Input:

ConvStd(2.5), // 수렴: 3선 표준편차 임계

SwingW(3), // 스윙 극점 강도(반폭)

LookBack(60), // 쌍바닥/쌍봉 되돌아보기 봉수

LevelTol(25), // 두 극점 높이차 허용(P)

Prom(18), // 사이 반등/하락 최소 깊이(P)

VolMult(1.2), // 거래량 배수(평균 대비)

VolLen(60); // 거래량 평균 길이


Var:

v1(0), v2(0), v3(0), v1p(0), v2p(0), v3p(0),

mean3(0), sd3(0), avgVol(0),

sig(0), pat(""),

b1(0), b2(0), lo1(0), lo2(0), hi1(0), hi2(0), midv(0),

txtID(0), yPos(0), rng(0), sideStr("");


// ── LRL 3선 (var1/2/3 = 12/60/104 선형회귀선) ★ ──

v1 = LRL(Close, 12);

v2 = LRL(Close, 60);

v3 = LRL(Close, 104);

v1p = v1[1]; // 직전 봉 값(사용자 변수는 시계열이라 [1] 인덱싱 가능)

v2p = v2[1];

v3p = v3[1];


avgVol = Average(Volume, VolLen);

rng = High - Low;

sig = 0;

pat = "";


// ── ① 수렴 (3선 std<2.5 + 기울기 동일방향 + V1·V2 크로스) ──

mean3 = (v1 + v2 + v3) / 3;

sd3 = SquareRoot(((v1-mean3)*(v1-mean3) + (v2-mean3)*(v2-mean3) + (v3-mean3)*(v3-mean3)) / 3);

if sd3 < ConvStd then begin

if v1>v1p and v2>v2p and v3>v3p and v1>v2 and v1p<=v2p then begin sig = 1; pat = "수렴"; end;

if v1<v1p and v2<v2p and v3<v3p and v1<v2 and v1p>=v2p then begin sig = -1; pat = "수렴"; end;

end;


// ── ② 쌍바닥(매수): 최근 두 스윙 저점 비슷 + 사이 반등 + 현재 상승 + 거래량 ★ ──

if sig = 0 then begin

b1 = SwingLowBar(1, Low, SwingW, SwingW, LookBack); // 가장 최근 확정 스윙저점(몇 봉 전). (Nth,값,좌봉,우봉,기간)

b2 = SwingLowBar(2, Low, SwingW, SwingW, LookBack); // 그 전 스윙저점

if b1 >= 0 and b2 > b1 then begin

lo1 = Low[b1];

lo2 = Low[b2];

midv = Highest(High, b2); // 사이 반등(대략) 최고

if AbsValue(lo1 - lo2) <= LevelTol

and (midv - MaxList(lo1, lo2)) >= Prom

and Close > lo1 + 2

and Volume >= VolMult * avgVol then begin

sig = 1; pat = "쌍바닥";

end;

end;

end;


// ── ③ 쌍봉(매도): 최근 두 스윙 고점 비슷 + 사이 하락 + 현재 하락 + 거래량 ★ ──

if sig = 0 then begin

b1 = SwingHighBar(1, High, SwingW, SwingW, LookBack); // (Nth,값,좌봉,우봉,기간)

b2 = SwingHighBar(2, High, SwingW, SwingW, LookBack);

if b1 >= 0 and b2 > b1 then begin

hi1 = High[b1];

hi2 = High[b2];

midv = Lowest(Low, b2);

if AbsValue(hi1 - hi2) <= LevelTol

and (MinList(hi1, hi2) - midv) >= Prom

and Close < hi1 - 2

and Volume >= VolMult * avgVol then begin

sig = -1; pat = "쌍봉";

end;

end;

end;


// ── 황금 종 ?? 표시 + 소리 ★ ──

if sig <> 0 then begin

if sig = 1 then begin

yPos = Low - rng * 0.6; // 매수: 봉 아래에 종

sideStr = "매수";

end

else begin

yPos = High + rng * 0.6; // 매도: 봉 위에 종

sideStr = "매도";

end;


txtID = Text_New(Date, Time, yPos, "??");

Text_SetColor(txtID, RGB(255, 215, 0)); // 황금색 (RGB 255,215,0)

Text_SetStyle(txtID, 2, 2); // 가운데 정렬(플랫폼별 다를 수 있음)


PlaySound("C:\DNN_model\chime.wav"); // '띵~똥' 종소리

Alert(pat + " " + sideStr + " 후보");

end;




지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-07-10 14:24:37

안녕하세요 예스스탁입니다. 1 if문에서 2개 값을 비교해 같다라는 표현을 하실 경우에는 == 을 사용하셔야 합니다. if sig == 1 then 2 PlaySound("C:\DNN_model\chime.wav"); PlaySound는 지정한 경로의 지정한 wav파일을 구동합니다. 위 지정하신 경로에 지정한 이름의 wav파일이 있으면 조건만족시 구동되게 되므로 해당 부분은 직접 확인해 보셔야 합니다. 3 수식에 텍스트 함수로 ??로만 표시가 되어 있어 ▲표시로 변경해 드립니다. 종 기호는 저희가 어떤 기호인지 알수 없습니다. 4 Input: ConvStd(2.5), // 수렴: 3선 표준편차 임계 SwingW(3), // 스윙 극점 강도(반폭) LookBack(60), // 쌍바닥/쌍봉 되돌아보기 봉수 LevelTol(25), // 두 극점 높이차 허용(P) Prom(18), // 사이 반등/하락 최소 깊이(P) VolMult(1.2), // 거래량 배수(평균 대비) VolLen(60); // 거래량 평균 길이 Var: v1(0), v2(0), v3(0), v1p(0), v2p(0), v3p(0), mean3(0), sd3(0), avgVol(0), sig(0), pat(""), b1(0), b2(0), lo1(0), lo2(0), hi1(0), hi2(0), midv(0), txtID(0), yPos(0), rng(0), sideStr(""); // ── LRL 3선 (var1/2/3 = 12/60/104 선형회귀선) ★ ── v1 = LRL(Close, 12); v2 = LRL(Close, 60); v3 = LRL(Close, 104); v1p = v1[1]; // 직전 봉 값(사용자 변수는 시계열이라 [1] 인덱싱 가능) v2p = v2[1]; v3p = v3[1]; avgVol = Average(Volume, VolLen); rng = High - Low; sig = 0; pat = ""; // ── ① 수렴 (3선 std<2.5 + 기울기 동일방향 + V1·V2 크로스) ── mean3 = (v1 + v2 + v3) / 3; sd3 = SquareRoot(((v1-mean3)*(v1-mean3) + (v2-mean3)*(v2-mean3) + (v3-mean3)*(v3-mean3)) / 3); if sd3 < ConvStd then begin if v1>v1p and v2>v2p and v3>v3p and v1>v2 and v1p<=v2p then begin sig = 1; pat = "수렴"; end; if v1<v1p and v2<v2p and v3<v3p and v1<v2 and v1p>=v2p then begin sig = -1; pat = "수렴"; end; end; // ── ② 쌍바닥(매수): 최근 두 스윙 저점 비슷 + 사이 반등 + 현재 상승 + 거래량 ★ ── if sig == 0 then begin b1 = SwingLowBar(1, Low, SwingW, SwingW, LookBack); // 가장 최근 확정 스윙저점(몇 봉 전). (Nth,값,좌봉,우봉,기간) b2 = SwingLowBar(2, Low, SwingW, SwingW, LookBack); // 그 전 스윙저점 if b1 >= 0 and b2 > b1 then begin lo1 = Low[b1]; lo2 = Low[b2]; midv = Highest(High, b2); // 사이 반등(대략) 최고 if AbsValue(lo1 - lo2) <= LevelTol and (midv - MaxList(lo1, lo2)) >= Prom and Close > lo1 + 2 and Volume >= VolMult * avgVol then begin sig = 1; pat = "쌍바닥"; end; end; end; // ── ③ 쌍봉(매도): 최근 두 스윙 고점 비슷 + 사이 하락 + 현재 하락 + 거래량 ★ ── if sig == 0 then begin b1 = SwingHighBar(1, High, SwingW, SwingW, LookBack); // (Nth,값,좌봉,우봉,기간) b2 = SwingHighBar(2, High, SwingW, SwingW, LookBack); if b1 >= 0 and b2 > b1 then begin hi1 = High[b1]; hi2 = High[b2]; midv = Lowest(Low, b2); if AbsValue(hi1 - hi2) <= LevelTol and (MinList(hi1, hi2) - midv) >= Prom and Close < hi1 - 2 and Volume >= VolMult * avgVol then begin sig = -1; pat = "쌍봉"; end; end; end; // ── 황금 종 ?? 표시 + 소리 ★ ── if sig <> 0 then begin if sig == 1 then begin yPos = Low - rng * 0.6; // 매수: 봉 아래에 종 sideStr = "매수"; end else begin yPos = High + rng * 0.6; // 매도: 봉 위에 종 sideStr = "매도"; end; TL_New(sdate,sTime,0,sDate,sTime,9999999999); txtID = Text_New(Date, Time, yPos, "▲"); Text_SetColor(txtID, RGB(255, 215, 0)); // 황금색 (RGB 255,215,0) Text_SetStyle(txtID, 2, 2); // 가운데 정렬(플랫폼별 다를 수 있음) PlaySound("C:\DNN_model\chime.wav"); // '띵~똥' 종소리 Alert(pat + " " + sideStr + " 후보"); end; 즐거운 하루되세요