커뮤니티
해당 봉 위치
아래 조건의 해당봉 위치에 황금종 그림과 풍경소리가 나도록 하고 싶은데 잘 안됩니다.
실행이 잘 될 수 있도록 수식을 수정해 주시면 감사하겠습니다.
// ============================================================
// 진입 후보 '황금 종' 알림 지표 (수렴 / 쌍바닥 / 쌍봉)
// 차트 봉 위/아래에 황금 종 ?? + 소리
// 로직 = 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