답변완료
보완해주세요
input: 기준배율(1.8), 익절비율(1.01), 손절비율(0.995),
진입선색(cyan), 익절선색(green), 손절선색(red);
var:
기준거래량(0), 중심선(0), 제곱합(0), 분산(0), 표준편차(0), BB상단(0),
ma5(0), ma20(0),
진입가(0), 익절선(0), 손절선(0),
신호발생(false), 매도출력(false),
ID_진입선(0), ID_익절선(0), ID_손절선(0), ID_txt(0);
// === 기준 계산 ===
기준거래량 = average(volume, 20);
중심선 = average(Close, 20);
제곱합 = average(Close * Close, 20);
분산 = 제곱합 - 중심선 * 중심선;
표준편차 = SquareRoot(분산);
BB상단 = 중심선 + 표준편차 * 2;
ma5 = average(Close, 5);
ma20 = average(Close, 20);
// === 매수 신호 ===
if (신호발생 = false) and
(volume > 기준거래량 * 기준배율) and
(Close > BB상단) and
(Close > Open) and
((Close - Open) > (High - Low) * 0.6) and
(ma5 > ma20) then
begin
// 기존 선 삭제
if ID_진입선 <> 0 then TL_Delete(ID_진입선);
if ID_익절선 <> 0 then TL_Delete(ID_익절선);
if ID_손절선 <> 0 then TL_Delete(ID_손절선);
진입가 = Close;
익절선 = 진입가 * 익절비율;
손절선 = 진입가 * 손절비율;
// 진입선
ID_진입선 = TL_New(date, time, 진입가, date, time + 1, 진입가);
TL_SetColor(ID_진입선, 진입선색);
TL_SetSize(ID_진입선, 2);
// 익절선
ID_익절선 = TL_New(date, time, 익절선, date, time + 1, 익절선);
TL_SetColor(ID_익절선, 익절선색);
TL_SetSize(ID_익절선, 2);
// 손절선
ID_손절선 = TL_New(date, time, 손절선, date, time + 1, 손절선);
TL_SetColor(ID_손절선, 손절선색);
TL_SetSize(ID_손절선, 2);
신호발생 = true;
매도출력 = false;
end;
// === 매도 신호 ===
if (신호발생 = true) and (매도출력 = false) then
begin
if (Close >= 익절선) or (Close <= 손절선) then
begin
ID_txt = Text_New(date, time, High, "SELL");
Text_SetColor(ID_txt, red);
매도출력 = true;
end;
end;
// === 상태 초기화 ===
if (매도출력 = true) and
((Close > 진입가 * 1.2) or (Close < 진입가 * 0.9)) then
begin
신호발생 = false;
매도출력 = false;
end;
적용이안됩니다 이유가뭘까요 예스트레이더에 적용되게 부탁드립니다
2025-05-10
261
글번호 190712
지표
답변완료
질문 부탁드립니다
수고가 많으십니다
한가지 여쭤보고 싶은데요,
아래 식에서
aa[0]배열값을 비교하는 조건을 만들고 싶습니다
비교조건은
"다음 만족봉의 aa가 이전 aa보다 15% 이상 크거나, 30% 이상 작다" 입니다
만약 다음봉이 크거나 작지 않으면 조건이 만족할때까지 비교를 하려고 하는데,
다음봉에 나오는 aa 값을 누적해서 평균을 한뒤에 그 다음봉과 비교하려고 합니다
예를들어서 aa1 aa2 aa3 aa4 순서로 다음봉들이 나온다면
aa2가 aa1보다 크거나 작지 않으면 aa2는 건너뛰고
aa1+aa2 값을 평균을 내서 aa3 와 비교를 해서 부합할때만 특정값을 저장하려고 하는데 조건 작성이 가능한지 궁금합니다. 만약에 aa3도 아니라면 건너뛰고(aa1+aa2+aa3)/3 한 값과 aa4 를 비교하려고 합니다
매번 감사드립니다
var : cnt(0), sum1(0), sumi1(0),summ(0),tt(0),hh(0),ll(0),tl(0),tl1(0),n(0);
var: sum2(0),sumi2(0);
var : t(0),StartBarIndex(0),dd(0),d1(0),d2(0),e1(0),e2(0);
Array : ii[50](0),aa[50](0);
var : count(0)
Var33=Money/100000000;
if Bdate != Bdate[1] Then
{
DD = DD+1;
}
if (h>l*1.08) and (d1 == 0 or (d1 > 0 and dd >= d1+5)) Then
{
d1 = dd;
hh = h;
var1 = Index;
Var2 = var1[1];
Var3 = Var2[1];
sum1=0; sumi1=0; sum2=0; sumi2=0;
tl=TL_NEW(sDate,sTime,100,sDate,sTime,999999);
TL_SetSize(tl,0);
TL_SetColor(tl,Black);
For cnt = 1 to (var1-Var2)
{
sum1=sum1+l[cnt];
sumi1=sumi1+1;
}
value1=sum1/sumi1;
For cnt = 49 DownTo 1
{
aa[cnt] = aa[cnt-1];
#ee[cnt]= ee[cnt-1];
}
aa[0] = value1*1;
}
2025-05-12
186
글번호 190709
지표
답변완료
수식 수정 부탁드립니다.
안녕하세요.
예전에 트레일링스탑 청산전략이 포함된 피라미딩 매매전략을 문의한 결과 아래와 같은 수식을 작성해 주셨습니다.
var : HH1(0),HH2(0),HH3(0),HH4(0),HH5(0);
var : EP1(0),EP2(0),EP3(0),EP4(0),EP5(0);
if MarketPosition == 0 Then
{
if BuyCond == True Then Buy("Long1", AtMarket);
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if MaxEntries == 1 Then
{
HH1 = LatestEntryPrice(0);
EP1 = LatestEntryPrice(0);
}
if MaxEntries == 2 Then
{
HH2 = LatestEntryPrice(0);
EP2 = LatestEntryPrice(0);
}
if MaxEntries == 3 Then
{
HH3 = LatestEntryPrice(0);
EP3 = LatestEntryPrice(0);
}
if MaxEntries == 4 Then
{
HH4 = LatestEntryPrice(0);
EP4 = LatestEntryPrice(0);
}
if MaxEntries == 5 Then
{
HH5 = LatestEntryPrice(0);
EP5 = LatestEntryPrice(0);
}
}
if MaxEntries >= 1 and H > HH1 Then
HH1 = H;
if MaxEntries >= 2 and H > HH2 Then
HH2 = H;
if MaxEntries >= 3 and H > HH3 Then
HH3 = H;
if MaxEntries >= 4 and H > HH4 Then
HH4 = H;
if MaxEntries >= 5 and H > HH5 Then
HH5 = H;
if MaxEntries == 1 and BuyCond == True Then Buy("Long2", AtMarket);
if MaxEntries == 2 and BuyCond == True Then Buy("Long3", AtMarket);
if MaxEntries == 3 and BuyCond == True Then Buy("Long4", AtMarket);
if MaxEntries == 4 and BuyCond == True Then Buy("Long5", AtMarket);
if MaxEntries >= 1 and HH1-ATR > EP1 Then ExitLong("TStop1", Atstop, HH1 - ATR, "Long1");
if MaxEntries >= 2 and HH1-ATR > EP2 Then ExitLong("TStop2", Atstop, HH2 - ATR, "Long2");
if MaxEntries >= 3 and HH1-ATR > EP3 Then ExitLong("TStop3", Atstop, HH3 - ATR, "Long3");
if MaxEntries >= 4 and HH1-ATR > EP4 Then ExitLong("TStop4", Atstop, HH4 - ATR, "Long4");
if MaxEntries >= 5 and HH1-ATR > EP5 Then ExitLong("TStop5", Atstop, HH5 - ATR, "Long5");
}
Else
{
HH1 = 0;
HH2 = 0;
HH3 = 0;
HH4 = 0;
HH5 = 0;
EP1 = 0;
EP2 = 0;
EP3 = 0;
EP4 = 0;
EP5 = 0;
}
청산전략에서 트레일링 스탑을 적용하되, 반드시 청산가가 진입가보다 높은 경우에만
적용되도록 요청을 드렸는데, 간혹 진입가보다 더 낮은 가격에서 청산되는
경우가 발생하고 있습니다.
그래서, 아래와 같이 변경을 해보았으나, 그래도 진입가보다 더 낮은 가격에서 청산되는
경우가 있었습니다.
아래의 수식이 아닌 100% 진입가보다 높은 가격에서 청산되는 수식을 부탁드리겠습니다.
감사합니다.
if MaxEntries >= 1 and HH1-ATR > EP1*1.1 Then ExitLong("TStop1", Atstop, HH1 - ATR, "Long1");
if MaxEntries >= 2 and HH1-ATR > EP2*1.1 Then ExitLong("TStop2", Atstop, HH2 - ATR, "Long2");
if MaxEntries >= 3 and HH1-ATR > EP3*1.1 Then ExitLong("TStop3", Atstop, HH3 - ATR, "Long3");
if MaxEntries >= 4 and HH1-ATR > EP4*1.1 Then ExitLong("TStop4", Atstop, HH4 - ATR, "Long4");
if MaxEntries >= 5 and HH1-ATR > EP5*1.1 Then ExitLong("TStop5", Atstop, HH5 - ATR, "Long5");
2025-05-10
236
글번호 190707
시스템
답변완료
지표전환 요청
study("Divergence Histogram for many indicator", overlay=false, max_bars_back = 4000)
lrb = input(5, title="Pivot Point Period", minval = 1)
mindiv = input(1, title="Minimum #Num of Divergence for Alert", minval = 1)
chcut = input(false, title = "Check Cut-Through in indicators")
// RSI
rsi = rsi(close, 14)
// MACD
[macd, signal, deltamacd] = macd(close, 12, 26, 9)
// Momentum
moment = mom(close, 10)
// CCI
cci = cci(close, 10)
// OBV
Obv = obv // cum(change(close) > 0 ? volume : change(close) < 0 ? -volume : 0 * volume)
// Stoch
stk = sma(stoch(close, high, low, 14), 3)
// DIOSC
DI = change(high) - (-change(low))
trur = rma(tr, 14)
diosc = fixnan(100 * rma(DI, 14) / trur)
// volume weighted macd
maFast = vwma(close, 12)
maSlow = vwma(close, 26)
vwmacd = maFast - maSlow
// Chaikin money flow
Cmfm = ((close-low) - (high-close)) / (high - low)
Cmfv = Cmfm * volume
cmf = sma(Cmfv, 21) / sma(volume,21)
// Moneyt Flow Index
Mfi = mfi(close, 14)
float top = na
float bot = na
top := pivothigh(lrb, lrb)
bot := pivotlow(lrb, lrb)
topc = 0, botc = 0
topc := top ? lrb : nz(topc[1]) + 1
botc := bot ? lrb : nz(botc[1]) + 1
// Negative Divergence (checking possible higher highs(lb=0))
newtop = pivothigh(lrb, 0) // check only left side
emptyh = true
if not na(newtop) and newtop > high[topc] // there must not close price higher than the line between last PH and current high
diff = (newtop - high[topc]) / topc
hline = newtop - diff // virtual line to check there is no close price higher than it
for x = 1 to topc -1
if close[x] > hline
emptyh := false
break
hline := hline - diff
else
emptyh := false
// check cut-through in indicators
nocut1(indi, len)=>
_ret = true
diff = (indi - nz(indi[len])) / len
ln = indi - diff
for x = 1 to len -1
if nz(indi[x]) > ln
_ret := false
break
ln := ln - diff
_ret
rsiokn = nocut1(rsi, topc)
macdokn = nocut1(macd, topc)
deltamacdokn = nocut1(deltamacd, topc)
momentokn = nocut1(moment, topc)
cciokn = nocut1(cci, topc)
obvokn = nocut1(obv, topc)
stkokn = nocut1(stk, topc)
dioscokn = nocut1(diosc, topc)
vwmacdokn = nocut1(vwmacd, topc)
cmfokn = nocut1(cmf, topc)
mfiokn = nocut1(Mfi, topc)
negadiv(indi, isok)=>
_ret = (emptyh and not na(newtop) and indi[topc] > indi and (not chcut or isok))
// Positive Divergence (checking possible Lower lows(lb=0))
newbot = pivotlow(lrb, 0) // check only left side
emptyl = true
if not na(newbot) and newbot < low[botc] // there must not close price lower than the line between last PL and current low
diff = (newbot - low[botc]) / botc
lline = newbot - diff // virtual line to check there is no close price lower than it
for x = 1 to botc -1
if close[x] < lline
emptyl := false
break
lline := lline - diff
else
emptyl := false
// check cut-through in indicators
nocut2(indi, len)=>
_ret = true
diff = (indi - nz(indi[len])) / len
ln = indi - diff
for x = 1 to len -1
if nz(indi[x]) < ln
_ret := false
break
ln := ln - diff
_ret
rsiokp = nocut2(rsi, botc)
macdokp = nocut2(macd, botc)
deltamacdokp = nocut2(deltamacd, botc)
momentokp = nocut2(moment, botc)
cciokp = nocut2(cci, botc)
obvokp = nocut2(obv, botc)
stkokp = nocut2(stk, botc)
dioscokp = nocut2(diosc, botc)
vwmacdokp = nocut2(vwmacd, botc)
cmfokp = nocut2(cmf, botc)
mfiokp = nocut2(Mfi, botc)
posidiv(indi, isok)=>
_ret = (emptyl and not na(newbot) and indi[botc] < indi and (not chcut or isok))
indi1 = iff(posidiv(rsi, rsiokp), 1, iff(negadiv(rsi, rsiokn), -1, 0))
indi2 = iff(posidiv(macd, macdokp), 1, iff(negadiv(macd, macdokn), -1, 0))
indi3 = iff(posidiv(deltamacd, deltamacdokp), 1, iff(negadiv(deltamacd, deltamacdokn), -1, 0))
indi4 = iff(posidiv(moment, momentokp), 1, iff(negadiv(moment, momentokn), -1, 0))
indi5 = iff(posidiv(cci, cciokp), 1, iff(negadiv(cci, cciokn), -1, 0))
indi6 = iff(posidiv(Obv, obvokp), 1, iff(negadiv(Obv, obvokn), -1, 0))
indi7 = iff(posidiv(stk, stkokp), 1, iff(negadiv(stk, stkokn), -1, 0))
indi8 = iff(posidiv(diosc, dioscokp), 1, iff(negadiv(diosc, dioscokn), -1, 0))
indi9 = iff(posidiv(vwmacd, vwmacdokp), 1, iff(negadiv(vwmacd, vwmacdokn), -1, 0))
indi10 = iff(posidiv(cmf, cmfokp), 1, iff(negadiv(cmf, cmfokn), -1, 0))
indi11 = iff(posidiv(Mfi, mfiokp), 1, iff(negadiv(Mfi, mfiokn), -1, 0))
totaldiv = indi1 + indi2 + indi3 + indi4 + indi5 + indi6 + indi7 + indi8 + indi9 + indi10 + indi11
hline(0, color = color.gray, linestyle = hline.style_dotted)
plot(abs(totaldiv), color = totaldiv > 0 ? color.new(color.lime, 0) :totaldiv < 0 ? color.new(color.red, 0) : na, style = plot.style_columns, linewidth = 6)
if totaldiv != 0
label.new(x = bar_index, y = abs(totaldiv), text = tostring(abs(totaldiv)), color = color.new(color.white, 100), textcolor = totaldiv < 0 ? color.red : color.lime)
alertcondition(totaldiv >= mindiv, title='Positive Divergence', message='Positive Divergence')
alertcondition(totaldiv <= -mindiv, title='Negative Divergence', message='Negative Divergence')
파인스크립트지표입니다 실력이 부족해서 예스랭귀지로 전환요청 부탁드립니다
-다른 모델에서 타주기참조로 전환이 어렵다 답변받았는데 가능하다면 5분봉에서라도 가능하다면 돌아가게 가능할지요 부탁드려봅니다
2025-05-10
348
글번호 190706
지표