답변완료
윌리엄식 RSI 수식 에러 수정 부탁합니다.
다음은 윌리엄식 RSI 키움 수식입니다.
---------------------------------------------------------------
rsi_r = (C-C(1));
qq=100 - (100/(1+eavg(if(rsi_r>0,rsi_r ,0), shortPeriod) /
eavg(if(rsi_r<0,abs(rsi_r),0), shortPeriod)));
qq1 = eavg(qq,longPeriod);
r_sig = eavg(qq1, signal);
r_osc = qq1 - r_sig;
---------------------------------------------------------------
위 수식을 아래 처럼 if을 예스랭기지에서 해보니 계속 에러만 납니다.
rs_r = C-C[1];
컨디션1 =
if rs_r>0 Then
{
rs_r
}
Else if rs_r<0 Then
{
0
}
컨디션2 =
if rs_r<0 Then
{
abs(rs_r)
}
Else if rs_r<0 Then
{
0
}
qq = 100-(100/(1+Ema(컨디션1, shortPeriod)/Ema(컨디션2, shortPeriod)));
qq1 = ema(qq,longPeriod);
r_sig = ema(qq1, signal);
r_osc = qq1 - r_sig;
뭐가 잘 못 됐는지 고쳐주실 수 있을까요?
2024-10-01
815
글번호 183886
지표
답변완료
프리장에서의 캔들의 크기와 관련 추가사항입니다.
항상 빠르고 친절한 답변에 감사를 드립니다.
작성해 주신 식을 제가 운영하는 로직에 대입해 보았습니다.
처음 식을 적용했을 때는 총손익이 높아지길래 역시 프리장의 캔들의 크기가 본장에서 영향을 미치는 구나 생각을 했었는데 오히려 거래 횟수가 늘어 시뮬레이션의 거래내역을 살펴 봤더니 프리장에서의 실적이 누적되어 있었습니다.
알려주신 식이 프리장의 캔들크기에만 영향을 미치게할 수 없는지요?
참고로 TimeHigh(StartTime,EndTime) 함수를 사용해 봤지만 제대로 적용되는지 알수가 없었습니다.
다음은 운용하고 있는 로직(일부분)에 적용한 내용입니다.
input : THL_Bcan(109), THL_Scan(72);
input : 시간(70000), 시작시간(70000), 종료시간(213000), StartTime(213100),EndTime(055623);
var : Tcond(False);
var : HH(0), LL(0), 프리캔들(0) ;
buySignal = 프리캔들 >= THL_Bcan and
buySignal = 프리캔들 >= THL_Scan and
//프리장캔들
if (sdate != sdate[1] and stime >= 종료시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) Then
{
Tcond = true;
HH = H;
LL = L;
}
if (sdate != sdate[1] and stime >= 종료시간) or
(sdate == sdate[1] and stime >= 종료시간 and stime[1] < 종료시간) Then
{
Tcond = False;
}
if Tcond == true Then
{
if HH > 0 and H > HH Then
HH = H;
if LL > 0 and L < LL Then
LL = L;
}
프리캔들 = (HH - LL);
//본장진입시간
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if Bdate != Bdate[1] Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if Tcond == true Then
{
if buySignal == true Then
Buy("Buy");
if buyExit == true Then
ExitLong("BExit");
if sellSignal == true Then
Sell("Sell");
if sellExit == true Then
ExitShort("SExit");
}
2024-10-01
694
글번호 183885
시스템
답변완료
검색이 왜 안될까요?
코드 1:
// 입력 변수 선언
var: 볼밴하단(0), 볼밴상단(0), 밴드비율(0), 스토캐스틱_긴주기(0), 스토캐스틱_짧은주기(0), 스토캐스틱_긴주기_이평(0);
var: 최고점_화살표(0), 최저점_화살표(0), 거래량_스토캐스틱(0);
var: 스토_긴주기_Z(0), 스토_짧은주기_Z(0); // Z-Score 변환된 값
// 볼린저 밴드 상단 계산 (기간 20, 표준편차 1)
볼밴상단 = BollBandUp(20, 1);
// 볼린저 밴드 상단의 스토캐스틱 변환 (300 기간과 30 기간)
스토캐스틱_긴주기 = (볼밴상단 - Lowest(볼밴상단, 300)) / (Highest(볼밴상단, 300) - Lowest(볼밴상단, 300)) * 100;
스토캐스틱_짧은주기 = (볼밴상단 - Lowest(볼밴상단, 30)) / (Highest(볼밴상단, 30) - Lowest(볼밴상단, 30)) * 100;
// 스토캐스틱 지표 계산 (저가 기준, 40 기간)
거래량_스토캐스틱 = (l - Lowest(l, 40)) / (Highest(l, 40) - Lowest(l, 40)) * 100;
// 스토캐스틱의 이동 평균 (기간 10)
스토캐스틱_긴주기_이평 = Ema(스토캐스틱_긴주기, 10);
// Z-Score 변환 (스토캐스틱 긴주기)
스토_긴주기_Z = (스토캐스틱_긴주기 - Average(스토캐스틱_긴주기, 300)) / Std(스토캐스틱_긴주기, 300);
// Z-Score 변환 (스토캐스틱 짧은주기)
스토_짧은주기_Z = (스토캐스틱_짧은주기 - Average(스토캐스틱_짧은주기, 30)) / Std(스토캐스틱_짧은주기, 30);
// 그래프 출력 (Z-Score 변환된 값)
//plot3(스토_긴주기_Z, "스토-긴주기-Z");
//plot4(스토_짧은주기_Z, "스토-짧은주기-Z");
// 텍스트 화살표 표시 조건: 볼밴 상단이 0에서 특정 패턴 발견
/*
var: 화살표1(0), 화살표2(0);
if countif(스토캐스틱_긴주기 == 0, 5) > 1 && Highest(c, 20)[1] < c then
{
화살표1 = Text_New_Self(sDate, stime, 0, "▲");
Text_SetStyle(화살표1, 2, 2);
Text_SetColor(화살표1, Green);
}
*/
if CrossUp (스토캐스틱_긴주기,0) then Find(1);
코드 2:
// 입력 변수 선언
var: 스토캐스틱_긴주기(0),볼밴상단(0); // 스토캐스틱 긴주기
// 볼린저 밴드 상단 계산 (기간 20, 표준편차 1)
볼밴상단 = BollBandUp(20, 1);
// 볼린저 밴드 상단의 스토캐스틱 변환 (300 기간)
스토캐스틱_긴주기 = (볼밴상단 - Lowest(볼밴상단, 300)) / (Highest(볼밴상단, 300) - Lowest(볼밴상단, 300)) * 100;
// 검색용 조건: 스토캐스틱 긴주기가 0을 상향 돌파할 때
if CrossUp(스토캐스틱_긴주기, 0) then
Find(1);
코드1은 코드2에서 필요한 부분만 남기고 삭제한 버전 입니다.
하지만 검색을 실행시키면 코드1은 검색이 되나 코드2는 검색이 되지 않습니다.
코드2에서 그래프를 출력시키면 그래프는 분명 0선 이하에서 0선 이상으로 움직입니다.
하지만 코드2는 검색이 안되요.. 왜 그런가요?
2024-09-30
780
글번호 183863
검색