답변완료
부탁드립니다
###3분봉 1분봉 에 사용하고싶습니다
1,
input : ATrPeriod2(11),factor2(2.0);
var : src2(0),ATrv2(0),upperband2(0),lowerBand2(0),direction2(0),superTrend2(0);
var : prevupperband2(0),prevlowerBand2(0),prevsupertrend2(0);
src2 = (h+l)/2;
atrv2 = atr(atrPeriod2);
upperBand2 = src2 + factor2 * atrv2;
lowerBand2 = src2 - factor2 * atrv2;
prevLowerBand2 = iff(IsNan(lowerBand2[1])==False,lowerBand2[1],0);
prevUpperBand2 = iff(IsNan(upperBand2[1])==false,upperBand2[1],0);
lowerBand2 = iff(lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 , lowerBand2 , prevLowerBand2);
upperBand2 = iff(upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 , upperBand2 , prevUpperBand2);
prevsupertrend2 = iff(IsNan(SuperTrend2[1])==false,SuperTrend2[1],0);
if isnan(atrv2[1]) == true Then
direction2 = 1;
else if SuperTrend2[1] == UpperBand2[1] Then
direction2 = iff(close > upperBand2 , -1 , 1);
else
direction2 = iff(close < lowerBand2 , 1 , -1);
superTrend2 = iff(direction2 == -1 , lowerBand2 , upperBand2);
if direction2 < 0 Then
Plot3(superTrend2,"upTrend2",Black);
Else
NoPlot(3);
2,
input : ATrPeriod3(12),factor3(3.0);
var : src3(0),ATrv3(0),upperband3(0),lowerBand3(0),direction3(0),superTrend3(0);
var : prevupperband3(0),prevlowerBand3(0),prevsupertrend3(0);
src3 = (h+l)/2;
atrv3 = atr(atrPeriod3);
upperBand3 = src3 + factor3 * atrv3;
lowerBand3 = src3 - factor3 * atrv3;
prevLowerBand3 = iff(IsNan(lowerBand3[1])==False,lowerBand3[1],0);
prevUpperBand3 = iff(IsNan(upperBand3[1])==false,upperBand3[1],0);
lowerBand3 = iff(lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 , lowerBand3 , prevLowerBand3);
upperBand3 = iff(upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 , upperBand3 , prevUpperBand3);
prevsupertrend3 = iff(IsNan(SuperTrend3[1])==false,SuperTrend3[1],0);
if isnan(atrv3[1]) == true Then
direction3 = 1;
else if prevsupertrend3 == prevUpperBand3 Then
direction3 = iff(close > upperBand3 , -1 , 1);
else
direction3 = iff(close < lowerBand3 , 1 , -1);
superTrend3 = iff(direction3 == -1 , lowerBand3 , upperBand3);
if direction3 < 0 Then
Plot5(superTrend3,"upTrend3",BlacK);
Else
NoPlot(5);
if direction3 > 0 Then
Plot6(superTrend3,"downTrend3",GreeN);
Else
NoPlot(6);
### 수정할 부분이 있다면 3분 1분봉 용으로 사용하고싶습니다
2023-08-22
933
글번호 171759
지표
답변완료
83425번 2항 문의사항 입니다.
83425번
2번항에 해당되는 파인스크립 을 예스 수식으로 변환 부탁드립니다 에서
변환해주신 수식 적용하니 지표가 트레이딩뷰차트랑 예스차트랑 다르게 표기 됩니다.
파일 첨부 하오니 검토 부탁 드리겠습니다.
아래: 파인스크립트 수식 83425번 2번항
atr_length = input(500)
start = input(500)
increment = input(500)
maximum = input(500)
entry_bars = input(500, title='Entry on Nth trend bar')
atr = ta.atr(atr_length)
atr := na(atr) ? ta.tr : atr
psar = 0.0 // PSAR
af = 0.0 // Acceleration Factor
trend_dir = 0 // Current direction of PSAR
ep = 0.0 // Extreme point
trend_bars = 0
sar_long_to_short = trend_dir[1] == 1 and close <= psar[1] // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1] // PSAR switches from short to long
trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long
// Calculate trend direction
trend_dir := barstate.isfirst[1] and close[1] > open[1] ? 1 : barstate.isfirst[1] and close[1] <= open[1] ? -1 : sar_long_to_short ? -1 : sar_short_to_long ? 1 : nz(trend_dir[1])
trend_bars := sar_long_to_short ? -1 : sar_short_to_long ? 1 : trend_dir == 1 ? nz(trend_bars[1]) + 1 : trend_dir == -1 ? nz(trend_bars[1]) - 1 : nz(trend_bars[1])
// Calculate Acceleration Factor
af := trend_change ? start : trend_dir == 1 and high > ep[1] or trend_dir == -1 and low < ep[1] ? math.min(maximum, af[1] + increment) : af[1]
// Calculate extreme point
ep := trend_change and trend_dir == 1 ? high : trend_change and trend_dir == -1 ? low : trend_dir == 1 ? math.max(ep[1], high) : math.min(ep[1], low)
// Calculate PSAR
psar := barstate.isfirst[1] and close[1] > open[1] ? low[1] : barstate.isfirst[1] and close[1] <= open[1] ? high[1] : trend_change ? ep[1] : trend_dir == 1 ? psar[1] + af * atr : psar[1] - af * atr
plot(psar, style=plot.style_cross, color=trend_dir == 1 ? color.green : color.red, linewidth=2)
// Strategy
strategy.entry('Long', strategy.long, when=trend_bars == entry_bars)
strategy.entry('Short', strategy.short, when=trend_bars == -entry_bars)
---------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------
아래: 변환해주신 수식 입니다.
2-1 지표
input : atr_length(500),start(500),increment(500),maximum(500),entry_bars(500);
var : atrv(0),psar(0),af(0),trend_dir(0),ep(0),trend_bars(0);
var : sar_long_to_short(False),sar_short_to_long(False);
var : trend_change(False);
atrv = atr(atr_length);
atrv = iff(IsNan(atrv) == true ,TrueRange , atrv);
psar = 0.0; // PSAR
af = 0.0; // Acceleration Factor
trend_dir = 0; // Current direction of PSAR
ep = 0.0; // Extreme point
trend_bars = 0;
sar_long_to_short = trend_dir[1] == 1 and close <= psar[1]; // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1]; // PSAR switches from short to long
trend_change = sar_long_to_short or sar_short_to_long;
// Calculate trend direction
trend_dir = iff(close[1] > open[1] , 1 ,
IFf(close[1] <= open[1] , -1 ,
IFf(sar_long_to_short , -1 ,
iff(sar_short_to_long , 1 , iff(isnan(trend_dir[1])==False,trend_dir[1],0)))));
trend_bars = iff(sar_long_to_short , -1 ,
IFf(sar_short_to_long , 1 ,
iff(trend_dir == 1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0)+ 1 ,
IFf( trend_dir == -1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0) - 1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0) ))));
// Calculate Acceleration Factor
af = iff(trend_change , start ,
iff(trend_dir == 1 and high > ep[1] or trend_dir == -1 and low < ep[1] , min(maximum, af[1] + increment) , af[1]));
// Calculate extreme point
ep = iff(trend_change and trend_dir == 1 , high ,
iff(trend_change and trend_dir == -1 , low ,
iff(trend_dir == 1 , max(ep[1], high) , min(ep[1], low))));
// Calculate PSAR
psar = iff(close[1] > open[1] , low[1] ,
IFf(close[1] <= open[1] , high[1] ,
IFf(trend_change , ep[1] ,
IFf(trend_dir == 1 , psar[1] + af * atrv , psar[1] - af * atrv))));
plot1(psar,"psar",iff(trend_dir == 1 , green , red));
2-2 시스템
input : atr_length(500),start(500),increment(500),maximum(500),entry_bars(500);
var : atrv(0),psar(0),af(0),trend_dir(0),ep(0),trend_bars(0);
var : sar_long_to_short(False),sar_short_to_long(False);
var : trend_change(False);
atrv = atr(atr_length);
atrv = iff(IsNan(atrv) == true ,TrueRange , atrv);
psar = 0.0; // PSAR
af = 0.0; // Acceleration Factor
trend_dir = 0; // Current direction of PSAR
ep = 0.0; // Extreme point
trend_bars = 0;
sar_long_to_short = trend_dir[1] == 1 and close <= psar[1]; // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1]; // PSAR switches from short to long
trend_change = sar_long_to_short or sar_short_to_long;
// Calculate trend direction
trend_dir = iff(close[1] > open[1] , 1 ,
IFf(close[1] <= open[1] , -1 ,
IFf(sar_long_to_short , -1 ,
iff(sar_short_to_long , 1 , iff(isnan(trend_dir[1])==False,trend_dir[1],0)))));
trend_bars = iff(sar_long_to_short , -1 ,
IFf(sar_short_to_long , 1 ,
iff(trend_dir == 1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0)+ 1 ,
IFf( trend_dir == -1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0) - 1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0) ))));
// Calculate Acceleration Factor
af = iff(trend_change , start ,
iff(trend_dir == 1 and high > ep[1] or trend_dir == -1 and low < ep[1] , min(maximum, af[1] + increment) , af[1]));
// Calculate extreme point
ep = iff(trend_change and trend_dir == 1 , high ,
iff(trend_change and trend_dir == -1 , low ,
iff(trend_dir == 1 , max(ep[1], high) , min(ep[1], low))));
// Calculate PSAR
psar = iff(close[1] > open[1] , low[1] ,
IFf(close[1] <= open[1] , high[1] ,
IFf(trend_change , ep[1] ,
IFf(trend_dir == 1 , psar[1] + af * atrv , psar[1] - af * atrv))));
IF trend_bars == entry_bars TheN
Buy();
IF trend_bars == -entry_bars TheN
Sell();
2-3 종목검색
input : atr_length(500),start(500),increment(500),maximum(500),entry_bars(500);
var : atrv(0),psar(0),af(0),trend_dir(0),ep(0),trend_bars(0);
var : sar_long_to_short(False),sar_short_to_long(False);
var : trend_change(False);
atrv = atr(atr_length);
atrv = iff(IsNan(atrv) == true ,TrueRange , atrv);
psar = 0.0; // PSAR
af = 0.0; // Acceleration Factor
trend_dir = 0; // Current direction of PSAR
ep = 0.0; // Extreme point
trend_bars = 0;
sar_long_to_short = trend_dir[1] == 1 and close <= psar[1]; // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1]; // PSAR switches from short to long
trend_change = sar_long_to_short or sar_short_to_long;
// Calculate trend direction
trend_dir = iff(close[1] > open[1] , 1 ,
IFf(close[1] <= open[1] , -1 ,
IFf(sar_long_to_short , -1 ,
iff(sar_short_to_long , 1 , iff(isnan(trend_dir[1])==False,trend_dir[1],0)))));
trend_bars = iff(sar_long_to_short , -1 ,
IFf(sar_short_to_long , 1 ,
iff(trend_dir == 1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0)+ 1 ,
IFf( trend_dir == -1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0) - 1 , iff(isnan(trend_bars[1])==False,trend_bars[1],0) ))));
// Calculate Acceleration Factor
af = iff(trend_change , start ,
iff(trend_dir == 1 and high > ep[1] or trend_dir == -1 and low < ep[1] , min(maximum, af[1] + increment) , af[1]));
// Calculate extreme point
ep = iff(trend_change and trend_dir == 1 , high ,
iff(trend_change and trend_dir == -1 , low ,
iff(trend_dir == 1 , max(ep[1], high) , min(ep[1], low))));
// Calculate PSAR
psar = iff(close[1] > open[1] , low[1] ,
IFf(close[1] <= open[1] , high[1] ,
IFf(trend_change , ep[1] ,
IFf(trend_dir == 1 , psar[1] + af * atrv , psar[1] - af * atrv))));
IF trend_bars == entry_bars TheN
find(1);
즐거운 하루되세요
2023-08-22
1587
글번호 171757
지표