답변완료
부탁드립니다
수고하십니다.
아래수식에 추가할수식부탁드립니다.
이평선매수매도식이고 10%씩 증액매수프로그램인데요.
1.만일 전봉 매도 수익율이 n% (20%) 일경우 처음진입금액으로 돌아가시오--추가수식부탁드립니다.
inputs : P1(5),P2(20),RSILength(10), OverSold(30),OverBought(70);
input : 첫진입금액(1000000),A(10);
var : m1(0,Data2),m2(0,Data2), R(0,Data1);
var : TT(0,Data1),T1(0,Data1),entry(0,Data1),mm(0,data1),vol(0,Data1);
m1 = Data2(ma(C,P1));
m2 = Data2(ma(C,P2));
R = data1(RSI(RSILength));
If Data2(m1 > m2) and Crossup(R, OverSold) Then
{
if TotalTrades == 0 Then
mm = 첫진입금액;
Else
mm = mm*(1+A/100);
Buy("B",OnClose,Def,Floor(Floor(mm/C)/10)*10);
}
if data2(crossup(ma(c,5),ma(c,20))) Then
{
if TotalTrades == 0 Then
mm = 첫진입금액;
Else
mm = mm*(1+A/100);
Buy("B2",OnClose,Def,Floor(Floor(mm/C)/10)*10);
}
if Data2(CrossDown(m1,m2)) or Crossup(R, OverBought) Then
Sell("S");
2025-09-30
104
글번호 194410
시스템
답변완료
부틱드립니다
수고하십니다
예스로 부탁드립니다
// This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
// https://creativecommons.org/licenses/by-nc-sa/4.0/
// © Zeiierman {
//@version=6
indicator("AI-Weighted RSI (Zeiierman)", overlay=false, max_lines_count=500, max_labels_count=500, precision = 1)
//~~}
// ~~ Tooltips {
var string t1 = "RSI lookback length computed on the current timeframe."
var string t2 = "Moving Average lookback length computed on RSI."
var string t3 = "Rolling window for correlation learning and z-scoring.."
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Inputs {
rsiLen = input.int(14, "RSI Length", minval=2, group="Rsi Settings", tooltip=t1)
sigLen = input.int(20, "Signal Length", minval=2, group="Rsi Settings", tooltip=t2)
learnLen = input.int(20, "Learning Window", minval=1, group="Learning / Prediction", tooltip=t3)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Per-bar features {
retLog = math.log(close / nz(close[1], close))
rsiVal = ta.rsi(close, rsiLen)
atrPct = ta.atr(200) / close
vol = volume
volLogChg = math.log(vol / nz(vol[1], vol))
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Target (y): prior bar RSI {
y_rsi = rsiVal[1]
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Predictors (X): prior-bar values of each feature (aligned with y) {
x_ret = nz(retLog[1])
x_rsi = nz(rsiVal[1])
x_atrp = nz(atrPct[1])
x_vchg = nz(volLogChg[1])
x_vol = nz(vol[1])
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Utilities {
f_z(src, len) =>
m = ta.sma(src, len)
s = ta.stdev(src, len)
s > 0 ? (src - m) / s : 0
f_corr(a, b, len) =>
ta.correlation(a, b, len)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Top-K indices by value {
f_topk_indices(arr) =>
sz = arr.size()
kk = math.min(5, sz)
tmp = array.new_float(sz, 0.0)
for i = 0 to sz - 1
tmp.set(i, nz(arr.get(i)))
out = array.new_int()
for n = 0 to kk - 1
maxI = 0
maxV = tmp.get(0)
for j = 1 to sz - 1
vj = tmp.get(j)
take = na(maxV) or (not na(vj) and vj > maxV)
if take
maxV := vj
maxI := j
out.push(maxI)
tmp.set(maxI, na)
out
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Feature S e leCTion via correlations {
corrs_abs_ret = math.abs(nz(f_corr(y_rsi, x_ret, learnLen)))
corrs_abs_rsi = math.abs(nz(f_corr(y_rsi, x_rsi, learnLen)))
corrs_abs_atrp = math.abs(nz(f_corr(y_rsi, x_atrp, learnLen)))
corrs_abs_vchg = math.abs(nz(f_corr(y_rsi, x_vchg, learnLen)))
corrs_abs_vol = math.abs(nz(f_corr(y_rsi, x_vol, learnLen)))
corrs = array.from(corrs_abs_ret, corrs_abs_rsi, corrs_abs_atrp, corrs_abs_vchg, corrs_abs_vol)
topIdx = f_topk_indices(corrs)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Z-scored current levels of each predictor series {
xz_ret = nz(f_z(x_ret, learnLen))
xz_rsi = nz(f_z(x_rsi, learnLen))
xz_atrp = nz(f_z(x_atrp, learnLen))
xz_vchg = nz(f_z(x_vchg, learnLen))
xz_vol = nz(f_z(x_vol, learnLen))
featZ = array.from(xz_ret, xz_rsi, xz_atrp, xz_vchg, xz_vol)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Signed “coefficients” ~ correlations on standardized inputs {
coef_ret = nz(f_corr(y_rsi, x_ret, learnLen))
coef_rsi = 1.0 // Hardcoded: always 1, since x_rsi == y_rsi
coef_atrp = nz(f_corr(y_rsi, x_atrp, learnLen))
coef_vchg = nz(f_corr(y_rsi, x_vchg, learnLen))
coef_vol = nz(f_corr(y_rsi, x_vol, learnLen))
coef = array.from(coef_ret, coef_rsi, coef_atrp, coef_vchg, coef_vol)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Prediction from S e leCTed features: sum_i corr_i * z(feature_i) {
f_pred(topIdxArr, coefArr, featArr) =>
s = 0.0
k = topIdxArr.size()
for i = 0 to k - 1
idx = topIdxArr.get(i)
c = coefArr.get(idx)
z = featArr.get(idx)
s += (nz(c) * nz(z))
s
pred_rsi_z = f_pred(topIdx, coef, featZ)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Map z back to RSI level using rolling mean/std of the target {
rsi_mean = ta.sma(y_rsi, learnLen)
rsi_std = ta.stdev(y_rsi, learnLen)
pred_rsi = nz(rsi_mean) + nz(rsi_std) * pred_rsi_z
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Map prediction → “weight” {
rsiWeight = math.max(-2, math.min(2, (50 - nz(pred_rsi)) / 50)) * -1
ma_rsi = ta.sma(rsiWeight,sigLen)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Plots {
rsiPlot = plot(rsiWeight, "AI-Weighted RSI", color=#7E57C2)
rsiMa = plot(ma_rsi, "AI-Weighted RSI Signal Line", color=color.yellow)
rsiUpperBand = hline(0.5, "AI-Weighted RSI Upper Band", color=#787B86)
midline = hline(0, "AI-Weighted RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(-0.5, "AI-Weighted RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="AI-Weighted RSI Background Fill")
midLinePlot = plot(0, color = na, editable = false, display = display.none)
fill(rsiPlot, midLinePlot, 0.5, 0, top_color = color.new(color.lime, 0), bottom_color = color.new(color.lime, 100), title = "Overbought Gradient Fill")
fill(rsiPlot, midLinePlot, 0, -0.5, top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 0), title = "Oversold Gradient Fill")
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
2025-09-30
112
글번호 194396
지표
답변완료
수식으로 된다면 부탁드립니다
// TEWMA - 삼중 지수 가중 이동 평균 지표
Input :
len(50), // 기본 기간
multi(1.75), // 승수
크기(12) ; // 텍스트 크기
Vars :
len2(0), // 계산된 두 번째 기간
TEWMA1(0), // 첫 번째 TEWMA 값
TEWMA2(0), // 두 번째 TEWMA 값
TEWMA(0), // 최종 TERWMA 값
Signal(0), // 트랜드 신호 (-1 : 하락, 1 : 상승)
dir(0), // 방향 변수 (텍스트 신호용)
Long(false), // 상승 조건
Short(false), // 하락 조건
tx(0) ; // 텍스트 객체
// 두 번째 기간 계산 (len * multi를 반올림)
len2 = Round(len * multi, 0);
// TEWMA1 계산: TEMA(WMA(종가, len), len)
var :
wma1(0), ema1_1(0), ema1_2(0), ema1_3(0);
wma1 = wma(C, len) ; // 가중 이동 평균
ema1_1 = Ema(wma1, len) ; // 첫 번째 지수 이동 평균
ema1_2 = Ema(ema1_1, len) ; // 두 번째 지수 이동 평균
ema1_3 = Ema(ema1_2, len) ; // 세 번째 지수 이동 평균
TEWMA1 = 3 * ema1_1 - 3- ema1_2 + ema1_3 ; //TEMA공식
// TEWMA2 계산: TEMA(WMA(종가, len2), len2)
var :
wma2(0), ema2_1(0), ema2_2(0), ema2_3(0);
wma1 = wma(C, len2) ; // 가중 이동 평균
ema2_1 = Ema(wma2, len2) ; // 첫 번째 지수 이동 평균
ema2_2 = Ema(ema2_1, len2) ; // 두 번째 지수 이동 평균
ema2_3 = Ema(ema2_2, len2) ; // 세 번째 지수 이동 평균
TEWMA2 = 3 * ema2_1 - 3 * ema2_2 + ema2_3 ; // TEMA공식
//최종 TEWMA 계산 (두 값의 평균)
TEWMA = (TEWMA1 + TEWMA2) / 2 ;
//트랜드 조건 정의
Long = TEWMA > TEWMA[1] ; // 현재 TEWMA가 이전 값 보다 크면 상승
Short = TEWMA < TEWMA[1] ; // 현재 TEWMA가 이전 값 보다 작으면 하락
// 신호 상태 업데이트
if Long then
{
signal = 1; // 상승 신호
dir = 1 ; // dir 변수도 함께 업데이트
}
if Short then
{
signal = -1; // 하락 신호
dir = -1 ; // dir 변수도 함께 업데이트
}
// 지표 출력 (색상은 차트 설정에서 수동 변경 필요)
Plot1(TEWMA, "TEWMA") ; // 메인 TEWMA 라인
Plot2(TEWMA1, "TEWMA1") ; // 첫 번째 TEWMA 라인
Plot3(TEWMA2, "TEWMA2") ; // 두 번째 TEWMA 라인
// 상승 신호 (이전이 하락에서 상승으로 전환)
if dir == 1 and dir[1] == -1
Then
{
tx = Text_New(sDate, sTime, low, "▲") ;
Text_SetStyle(tx, 2, 0) ;
Text_SetSize(tx, 크기) ;
Text_SetColor(tx, Black) ;
}
// 하락 신호 (이전이 상승에서 하락으로 전환)
if dir == -1 and dir[1] == 1
Then
{
tx = Text_New(sDate, sTime, high, "▼") ;
Text_SetStyle(tx, 2, 1) ;
Text_SetSize(tx, 크기) ;
Text_SetColor(tx, Black) ;
}
/*
// 알림 기능 (Alert 함수 사용)
if Long then
{
Alert("TEWMA Long 신호 발생") ;
}
if Short then
{
Alert("TEWMA Long 신호 발생") ;
}
위 수식을 예스 코인 차트에 적용하면 지표는 크게 나오고 봉 차트는 일자로 나오게
되는데 정상적인 차트로 볼 수가 있나요?
검증 부탁드립니다
2025-09-29
131
글번호 194392
지표