커뮤니티

수식변환 부탁드립니다.

프로필 이미지
하루삼프로
2023-08-19 14:04:47
920
글번호 171661
답변완료
안녕하세요 항상 도움을 주셔서 감사드립니다. 파인스크립 수식을 예스 수식으로 부탁 드려봅니다. 종목검색식.지표식,시스템식 부탁합니다. 매번 부탁을 해서 송구 스럽습니다. 항상 가정에 건승과 건강이 함께 하시길 빕니다. 1. // Inputs // sl_type = input.string('%', options=['%', 'ATR', 'Absolute']) sl_perc = input.float(500, title='% SL') atr_length = input(500, title='ATR Length') atr_mult = input.float(500, title='ATR Mult') sl_absol = input.float(500, title='Absolute SL') // BACKTESTING RANGE // From Date Inputs fromDay = input.int(defval=1, title='From Day', minval=1, maxval=31) fromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12) fromYear = input.int(defval=2016, title='From Year', minval=1970) // To Date Inputs toDay = input.int(defval=1, title='To Day', minval=1, maxval=31) toMonth = input.int(defval=1, title='To Month', minval=1, maxval=12) toYear = input.int(defval=2100, title='To Year', minval=1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = time >= startDate and time <= finishDate // CALCULATIONS // // SL values sl_val = sl_type == 'ATR' ? atr_mult * ta.atr(atr_length) : sl_type == 'Absolute' ? sl_absol : close * sl_perc / 100 // Init Variables pos = 0 trailing_sl = 0.0 // Signals long_signal = nz(pos[1]) != 1 and high > nz(trailing_sl[1]) short_signal = nz(pos[1]) != -1 and low < nz(trailing_sl[1]) // Calculate SL trailing_sl := short_signal ? high + sl_val : long_signal ? low - sl_val : nz(pos[1]) == 1 ? math.max(low - sl_val, nz(trailing_sl[1])) : nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : nz(trailing_sl[1]) // Position var pos := long_signal ? 1 : short_signal ? -1 : nz(pos[1]) // PLOTINGS // plot(trailing_sl, linewidth=2, color=pos == 1 ? color.green : color.red) // STRATEGY // if time_cond and pos != 1 strategy.entry('long', strategy.long, stop=trailing_sl) if time_cond and pos != -1 strategy.entry('short', strategy.short, stop=trailing_sl) ---------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- 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)
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-08-21 11:27:37

안녕하세요 예스스탁입니다. 1-1 지표 input : sl_type("%"); input : sl_perc(500),atr_length(500),atr_mult(500),sl_absol(500); input : startDate(20160101); input : finishDate(21000101); var : time_cond(False),sl_val(0),pos(0),trailing_sl(0); var : nz1(0),nz2(0); var : long_signal(False),short_signal(False); time_cond = sDate >= startDate and sDate <= finishDate; // SL values sl_val = iff(sl_type == "ATR" , atr_mult * atr(atr_length) ,IFf( sl_type == "Absolute" , sl_absol , close * sl_perc / 100)); // Init Variables pos = 0; trailing_sl = 0.0; nz1 = IFF(IsNan(pos[1])==False,pos[1],0); nz2 = IFF(IsNan(trailing_sl[1])==False,trailing_sl[1],0); // Signals long_signal = nz1 != 1 and high > nz2; short_signal = nz1 != -1 and low < nz2; // Calculate SL trailing_sl = iff(short_signal , high + sl_val , IFf( long_signal , low - sl_val , IFf(nz1 == 1 , max(low - sl_val, nz2) , IFF(nz1 == -1 , min(high + sl_val, nz2) , nz2)))); // Position var pos = iff(long_signal , 1 ,IFf( short_signal , -1 , nz1)); // PLOTINGS // plot1(trailing_sl,"trailing_sl",iff(pos == 1 , green,red)); 1-2 시스템 input : sl_type("%"); input : sl_perc(500),atr_length(500),atr_mult(500),sl_absol(500); input : startDate(20160101); input : finishDate(21000101); var : time_cond(False),sl_val(0),pos(0),trailing_sl(0); var : nz1(0),nz2(0); var : long_signal(False),short_signal(False); time_cond = sDate >= startDate and sDate <= finishDate; // SL values sl_val = iff(sl_type == "ATR" , atr_mult * atr(atr_length) ,IFf( sl_type == "Absolute" , sl_absol , close * sl_perc / 100)); // Init Variables pos = 0; trailing_sl = 0.0; nz1 = IFF(IsNan(pos[1])==False,pos[1],0); nz2 = IFF(IsNan(trailing_sl[1])==False,trailing_sl[1],0); // Signals long_signal = nz1 != 1 and high > nz2; short_signal = nz1 != -1 and low < nz2; // Calculate SL trailing_sl = iff(short_signal , high + sl_val , IFf( long_signal , low - sl_val , IFf(nz1 == 1 , max(low - sl_val, nz2) , IFF(nz1 == -1 , min(high + sl_val, nz2) , nz2)))); // Position var pos = iff(long_signal , 1 ,IFf( short_signal , -1 , nz1)); if time_cond and pos != 1 Then Buy(); if time_cond and pos != -1 Then Sell(); 1-3 종목검색 input : sl_type("%"); input : sl_perc(500),atr_length(500),atr_mult(500),sl_absol(500); input : startDate(20160101); input : finishDate(21000101); var : time_cond(False),sl_val(0),pos(0),trailing_sl(0); var : nz1(0),nz2(0); var : long_signal(False),short_signal(False); time_cond = sDate >= startDate and sDate <= finishDate; // SL values sl_val = iff(sl_type == "ATR" , atr_mult * atr(atr_length) ,IFf( sl_type == "Absolute" , sl_absol , close * sl_perc / 100)); // Init Variables pos = 0; trailing_sl = 0.0; nz1 = IFF(IsNan(pos[1])==False,pos[1],0); nz2 = IFF(IsNan(trailing_sl[1])==False,trailing_sl[1],0); // Signals long_signal = nz1 != 1 and high > nz2; short_signal = nz1 != -1 and low < nz2; // Calculate SL trailing_sl = iff(short_signal , high + sl_val , IFf( long_signal , low - sl_val , IFf(nz1 == 1 , max(low - sl_val, nz2) , IFF(nz1 == -1 , min(high + sl_val, nz2) , nz2)))); // Position var pos = iff(long_signal , 1 ,IFf( short_signal , -1 , nz1)); if time_cond and pos != 1 Then Find(1); 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); 즐거운 하루되세요 > 하루삼프로 님이 쓴 글입니다. > 제목 : 수식변환 부탁드립니다. > 안녕하세요 항상 도움을 주셔서 감사드립니다. 파인스크립 수식을 예스 수식으로 부탁 드려봅니다. 종목검색식.지표식,시스템식 부탁합니다. 매번 부탁을 해서 송구 스럽습니다. 항상 가정에 건승과 건강이 함께 하시길 빕니다. 1. // Inputs // sl_type = input.string('%', options=['%', 'ATR', 'Absolute']) sl_perc = input.float(500, title='% SL') atr_length = input(500, title='ATR Length') atr_mult = input.float(500, title='ATR Mult') sl_absol = input.float(500, title='Absolute SL') // BACKTESTING RANGE // From Date Inputs fromDay = input.int(defval=1, title='From Day', minval=1, maxval=31) fromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12) fromYear = input.int(defval=2016, title='From Year', minval=1970) // To Date Inputs toDay = input.int(defval=1, title='To Day', minval=1, maxval=31) toMonth = input.int(defval=1, title='To Month', minval=1, maxval=12) toYear = input.int(defval=2100, title='To Year', minval=1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = time >= startDate and time <= finishDate // CALCULATIONS // // SL values sl_val = sl_type == 'ATR' ? atr_mult * ta.atr(atr_length) : sl_type == 'Absolute' ? sl_absol : close * sl_perc / 100 // Init Variables pos = 0 trailing_sl = 0.0 // Signals long_signal = nz(pos[1]) != 1 and high > nz(trailing_sl[1]) short_signal = nz(pos[1]) != -1 and low < nz(trailing_sl[1]) // Calculate SL trailing_sl := short_signal ? high + sl_val : long_signal ? low - sl_val : nz(pos[1]) == 1 ? math.max(low - sl_val, nz(trailing_sl[1])) : nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : nz(trailing_sl[1]) // Position var pos := long_signal ? 1 : short_signal ? -1 : nz(pos[1]) // PLOTINGS // plot(trailing_sl, linewidth=2, color=pos == 1 ? color.green : color.red) // STRATEGY // if time_cond and pos != 1 strategy.entry('long', strategy.long, stop=trailing_sl) if time_cond and pos != -1 strategy.entry('short', strategy.short, stop=trailing_sl) ---------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- 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)