답변완료
작성해준 수식 구현이 안되요..오류가 뭐가 있을까요?
나스닥(e-mini 나스닥-100) 10분봉과/일봉을 설정한후 아래 수식을 넣어서 구현하면
거래가 안되네요..
뭐가 잘못되었는지 알려주시면 감사하겠습니다.
===========================================================
안녕하세요
예스스탁입니다.
input : left(5),right(5);
var : i1(0,Data1),l1(0,Data1),h1(0,Data1);
var : SLv(0,data1),SLi(0,Data1),SLh(0,data1),dd(0,Data1);
var : mav(0,Data2);
i1 = Data1(Index);
l1 = Data1(l);
h1 = Data1(h);
mav = Data2(ma(C,5));
if data1(SwingLowBar(1,l1,left,right,left+right)) != -1 Then
{
SLv = l1[right];
SLi = i1[right];
SLh = h1;
}
if SLh > 0 and h1 > slh Then
slh = h1;
if MarketPosition == 0 and
sli > 0 and Index > sli+300 and Index <= sli+1000 and
mav > mav[1] and
L > SLv*1.001 Then
Buy("b",AtLimit,Slv*1.001);
if MarketPosition == 1 Then
{
dd = sLh[BarsSinceEntry]-slv[BarsSinceEntry];
if MaxEntries == 1 Then
{
Buy("bb",AtLimit,LatestEntryPrice-dd);
ExitLong("bp1",AtLimit,LatestEntryPrice+(dd*0.5));
}
if MaxEntries == 2 Then
{
ExitLong("bp2",AtLimit,LatestEntryPrice+(dd*0.75));
ExitLong("bx",AtStop,LatestEntryPrice-(dd*1));
}
}
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 해외선물 수식 부탁드림니다. ( 역추세 매매)
>
해외선물(나스닥)
data1 분봉 10분봉
data2 일봉
[1] 1차 매수 진입 조건(1계약)
data1의 1000봉에서 전저점이 1000봉 에서 300봉사이에서 전저점의 0.1%근접시 매수진입
(data1의 1000봉에서 전저점이 300봉 에서 1봉 사이에서는 전저점의 0.1%근접시에도 매수진입 X)
data2 5일봉 이동평균선 우상향시 매수 활성화
[2] 2차 매수 진입 조건(1계약)
1차 매수후 D의 틱수(전저점과 전저점이후에 최고점의 차이틱수) 만큼 하락시 추가 매수
[3] 청산 조건
(1) 1차 진입후 청산시 :
1차 매수후 D의 틱수(전저점과 전저점이후에 최고점의 차이틱수)의 50% 도달시 청산
(2) 1차,2차 진입후 청산시 :
2차 매수후 2차 매수한 시점에서 D의 틱수(전저점과 전저점이후에 최고점의 차이틱수)의 75% 도달시 전량청산(2계약) --약 수익
(3) 1차 2차 진입후 손절시:
2차 매수한 시점에서 D의 틱수만큼 더 떨어졌을때 전량(2계약) 손절
번거롭더라도 그림을 참조해서 수식 좀 부탁드리겠습니다. / 감사드림니다.
2020-10-05
925
글번호 142861
시스템
답변완료
문의드립니다.
안녕하세요 연휴는 잘 보내셨나요?
제가 어떻게 한번 해보려고 했는데 랭귀지 해석이 안 되어서
이렇게 지표 변환을 부탁드립니다.
아래 게시물을 보니 RSI 밴드 지표가 있어서 제가 사용하는 보조지표를
캔들과 같이 볼 수 있도록 RSI 밴드처럼 바꾸고 싶습니다.
제가 사용하는 지표와 참고용으로 RSI밴드 수식도 같이 올립니다.
참고로 제가 원하는건 중심선, 상단선, 하단선입니다.
변환 부탁드리며 미리 감사합니다.
===============================
제가 사용하는 지표
===============================
input : st_mult(2),st_period(14),len(20);
var : price(0),up_lev(0),dn_lev(0),upz(0),downv(0);
var : trur(0),plus(0),minus(0),sum(0),adxv(0);
var : di(0),x(0),zz(0);
price = (H+L)/2;
up_lev = price - (st_mult * atr(st_period));
dn_lev = price + (st_mult * atr(st_period));
if CurrentBar >= 1 then
{
upz = up_lev-up_lev[1];
downv = -(dn_lev-dn_lev[1]);
trur = (TrueRange + (len - 1) * trur) / len;
var1 = iff(upz > downv and upz > 0 , upz , 0);
var11 = (var1 + (len - 1) * var11) / len;
plus = var11/trur;
var2 = iff(downv > upz and downv > 0 , downv , 0);
var22 = (var2 + (len - 1) * var22) / len;
minus = var22/trur;
sum = plus + minus;
var3 = abs(plus - minus) / iff(sum == 0 , 1 , sum);
adxv = (var3 + (len - 1) * adxv) / len;
di = plus - minus;
x=adxv-di*100;
zz=x/-1;
plot1(zz,"시그널");
plot2(20,"상단");
plot3(-20,"하단");
plot4(0,"중심");
===============================
RSI밴드지표
===============================
Input : Length(14),UpLevel(70),DnLevel(30), NxtYn(0);
var : oUpBand(0),oDnBand(0),oMidLine(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0);
If CurrentBar == 1 AND Length > 0 Then
Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1
Begin
UpAmt = C[Counter] - C[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
End
Else If CurrentBar > 1 AND Length > 0 Then
Begin
UpAmt = C[0] - C[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length;
DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length;
End;
If UpAvg + DownAvg <> 0 Then
Value1 = 100 * UpAvg / (UpAvg + DownAvg);
Else
Value1 = 0;
If nxtYn == 1 Then // 다음 봉 여부가 1일 경우
{
If Value1 > UpLevel Then // 상단밴드
oUpBand = (((UpLevel - 100) / UpLevel * UpAvg) + DownAvg) * (Length - 1) + C;
Else
oUpBand = ((UpLevel / (100 - UpLevel) * DownAvg) - UpAvg) * (Length - 1) + C;
If Value1 > DnLevel Then // 하단밴드
oDnBand = (((DnLevel - 100) / DnLevel * UpAvg) + DownAvg) * (Length - 1) + C;
Else
oDnBand = ((DnLevel / (100 - DnLevel) * DownAvg) - UpAvg) * (Length - 1) + C;
MidLevel = (UpLevel + DnLevel) / 2; // 중간라인
If Value1 > MidLevel Then
oMidLine = (((MidLevel - 100) / MidLevel * UpAvg) + DownAvg) * (Length - 1) + C;
Else
oMidline = ((MidLevel / (100 - MidLevel) * DownAvg) - UpAvg) * (Length - 1) + C;
}
Else
{
If Value1[1] > UpLevel Then
oUpBand = (((UpLevel - 100) / UpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1];
Else
oUpBand = ((UpLevel / (100 - UpLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1];
If Value1[1] > DnLevel Then
oDnBand = (((DnLevel - 100) / DnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1];
Else
oDnBand = ((DnLevel / (100 - DnLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1];
MidLevel = (UpLevel + DnLevel) / 2;
If Value1[1] > MidLevel Then
oMidLine = (((MidLevel - 100) / MidLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1];
Else
oMidline = ((MidLevel / (100 - MidLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1];
}
Plot1(oUpBand);
Plot2(oMidLine);
Plot3(oDnBand);
2020-10-05
829
글번호 142860
지표
답변완료
문의드립니다.
아래수식을 예스로 부탁합니다.
rsiSource = input(title="RSI Source", type=input.source, defval=close)
rsiLength = input(title="RSI Length", type=input.integer, defval=7)
rsiOverbought = input(title="RSI Overbought", type=input.integer, defval=70, minval=51, maxval=100)
rsiOvesold = input(title="RSI Oversold", type=input.integer, defval=30, minval=1, maxval=49)
// RSI value based on inbuilt RSI
rsiValue = rsi(rsiSource, rsiLength)
// Get the current state
isOverbought = rsiValue >= rsiOverbought
isOversold = rsiValue <= rsiOvesold
// State of the last extreme 0 for initialization, 1 = overbought, 2 = oversold
var laststate = 0
// Highest and Lowest prices since the last state change
var hh = low
var ll = high
// Labels
var label labelll = na
var label labelhh = na
// Swing lines
var line line_up = na
var line line_down = na
var last_actual_label_hh_price = 0.0
var last_actual_label_ll_price = 0.0
// FUNCTIONS
obLabelText() =>
if(last_actual_label_hh_price < high)
"HH"
else
"LH"
//plot(last_actual_label_hh_price)
osLabelText() =>
if(last_actual_label_ll_price < low)
"HL"
else
"LL"
// Create oversold or overbought label
createOverBoughtLabel(isIt) =>
if(isIt)
label.new(x=bar_index, y=na ,yloc=yloc.abovebar, style=label.style_label_down, color=color.red, size=size.tiny, text=obLabelText())
else
label.new(x=bar_index, y=na ,yloc=yloc.belowbar, style=label.style_label_up, color=color.green, size=size.tiny, text=osLabelText())
// Move the oversold swing and label
moveOversoldLabel() =>
label.set_x(labelll, bar_index)
label.set_y(labelll, low)
label.set_text(labelll, osLabelText())
line.set_x1(line_down, bar_index)
line.set_y1(line_down, low)
moveOverBoughtLabel() =>
label.set_x(labelhh, bar_index)
label.set_y(labelhh, high)
label.set_text(labelhh, obLabelText())
line.set_x1(line_up, bar_index)
line.set_y1(line_up, high)
// We go from oversold straight to overbought NEW DRAWINGS CREATED HERE
if(laststate == 2 and isOverbought)
hh := high
labelhh := createOverBoughtLabel(true)
last_actual_label_ll_price := label.get_y(labelll)
labelll_ts = label.get_x(labelll)
labelll_price = label.get_y(labelll)
line_up := line.new(x1=bar_index, y1=high, x2=labelll_ts, y2=labelll_price, width=1)
// We go from overbought straight to oversold NEW DRAWINGS CREATED HERE
if(laststate == 1 and isOversold)
ll := low
labelll := createOverBoughtLabel(false)
last_actual_label_hh_price := label.get_y(labelhh)
labelhh_ts = label.get_x(labelhh)
labelhh_price = label.get_y(labelhh)
line_down := line.new(x1=bar_index, y1=high, x2=labelhh_ts, y2=labelhh_price, width=1)
// If we are overbought
if(isOverbought)
if(high >= hh)
hh := high
moveOverBoughtLabel()
laststate := 1
// If we are oversold
if(isOversold)
if(low <= ll)
ll := low
moveOversoldLabel()
laststate := 2
// If last state was overbought and we are overbought
if(laststate == 1 and isOverbought)
if(hh <= high)
hh := high
moveOverBoughtLabel()
//If we are oversold and the last state was oversold, move the drawings to the lowest price
if(laststate == 2 and isOversold)
if(low <= ll)
ll := low
moveOversoldLabel()
// If last state was overbought
if(laststate == 1)
if(hh <= high)
hh := high
moveOverBoughtLabel()
// If last stare was oversold
if(laststate == 2)
if(ll >= low)
ll := low
moveOversoldLabel()
2020-10-05
856
글번호 142857
지표
답변완료
재문의
1.매번 감사드립니다
작성해준 지표(69392)에 (H+L+O)/3를 추가 해서 지표를 띄우니 표시가 안돼요
좀 봐주세요
#==========================================#
Input : Length(13),UpLevel(70),DnLevel(30), NxtYn(0);
var : oUpBand(0),oDnBand(0),oMidLine(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0);
#==========================================#
Var :CC(0);
CC = (H+L+O)/3;
#==========================================#
If CurrentBar == 1 AND Length > 0 Then
Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1
Begin
UpAmt = CC[Counter] - CC[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
End
Else
IF CurrentBar > 1 AND Length > 0 Then
Begin
UpAmt = CC[0] - CC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length;
DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length;
End;
If UpAvg + DownAvg <> 0 Then
Value1 = 100 * UpAvg / (UpAvg + DownAvg);
Else
Value1 = 0;
If nxtYn == 1 Then // 다음 봉 여부가 1일 경우
{
If Value1 > UpLevel Then // 상단밴드
oUpBand = (((UpLevel - 100) / UpLevel * UpAvg) + DownAvg) * (Length - 1) + CC;
Else
oUpBand = ((UpLevel / (100 - UpLevel) * DownAvg) - UpAvg) * (Length - 1) + CC;
If Value1 > DnLevel Then // 하단밴드
oDnBand = (((DnLevel - 100) / DnLevel * UpAvg) + DownAvg) * (Length - 1) + CC;
Else
oDnBand = ((DnLevel / (100 - DnLevel) * DownAvg) - UpAvg) * (Length - 1) + CC;
MidLevel = (UpLevel + DnLevel) / 2; // 중간라인
If Value1 > MidLevel Then
oMidLine = (((MidLevel - 100) / MidLevel * UpAvg) + DownAvg) * (Length - 1) + CC;
Else
oMidline = ((MidLevel / (100 - MidLevel) * DownAvg) - UpAvg) * (Length - 1) + CC;
}
Else
{
If Value1[1] > UpLevel Then
oUpBand = (((UpLevel - 100) / UpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1];
Else
oUpBand = ((UpLevel / (100 - UpLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1];
If Value1[1] > DnLevel Then
oDnBand = (((DnLevel - 100) / DnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1];
Else
oDnBand = ((DnLevel / (100 - DnLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1];
MidLevel = (UpLevel + DnLevel) / 2;
If Value1[1] > MidLevel Then
oMidLine = (((MidLevel - 100) / MidLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1];
Else
oMidline = ((MidLevel / (100 - MidLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1];
}
Plot1(oUpBand,"몸통", RGb(225,220,0));
Plot2(oMidLine);
Plot3(oDnBand,"몸통", BLACK);
2.그럼 즐거운 하루 되세요.
2020-10-05
778
글번호 142838
지표
답변완료
수식부탁드립니다
수고많으십니다.
아래 조건을 수식으로 부탁드립니다.
--- 매수 기준 ---
1. 일봉기준으로
2. 시가보다 10틱 아래면 매수
3. 만약 매수진입 후 MACD(10,20,9)조건으로 매도 사인이 나오면 매도(청산)
4. 만약 3번 조건이 2번 조건보다 먼저 나오면 매매 성립 안됨, 즉 3번의 매도가 안됨
5. 2번 조건이 성립되어 매수 후 3번 조건이 안되어 계속 홀딩될 경우 새벽 5시 30분에 청산
--- 매도 기준 ----
1. 일봉기준으로
2. 시가보다 10틱 위면 매도
3. 만약 매수진입 후 MACD(10,20,9)조건으로 매수 사인이 나오면 매수(청산)
4. 만약 3번 조건이 2번 조건보다 먼저 나오면 매매 성립 안됨, 즉 3번의 매수가 안됨
5. 2번 조건이 성립되어 매도 후 3번 조건이 안되어 계속 홀딩될 경우 새벽 5시 30분에 청산
2020-10-05
728
글번호 142824
시스템