답변완료
문의 드립니다.
안녕하세요 아래지표를 예스로 변환부탁드립니다.
감사합니다.
=====================================
PRC_Volume SuperTrend AI
//PRC_Volume SuperTrend AI
//version = 0
//29.02.24
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
///////////////////////////////////////////////////////////////////////
//inputs
// ~~ Input settings for K and N values
k = 3 // Neighbors 1 to 100
m = 10 // Data
n = max(k,m)
//// ~~ Input settings for prediction values
KNNPriceLen = 20 // Price Trend 2 - 500 step 10
KNNSTlen = 100 // Prediction Trend 2 - 500 step 10
aisignals = 1 // Boolean AI Trend Signals
//// ~~ Define SuperTrend parameters
len = 10 // Length
factor = 3.0 // step 0.1
maSrc = 0 // MaType
// ~~ Calculate the SuperTrend based on the user's choice
vwma = average[len,maSrc](close*volume)/average[len,maSrc](volume)
atr = averagetruerange[len](close)
upperband = vwma + factor*atr
lowerband = vwma - factor*atr
if barindex < len then
upperband = close
lowerband = close
direction = 1
else
//Redefine upperband
if upperband < upperband[1] or close[1] > upperband[1] then
upperband = upperband
else
upperband = upperband[1]
endif
//Redefine lowerband
if lowerband > lowerband[1] or close[1] < lowerband[1] then
lowerdband = lowerband
else
lowerband = lowerband[1]
endif
//Define upperband
prevSupertrend = mysuperTrend[1]
if prevSupertrend = upperband[1] then
if close > upperband then
direction = -1
else
direction = 1
endif
else
if close < lowerband then
direction = 1
else
directon = -1
endif
endif
endif
if direction = -1 then
mysupertrend = lowerband
else
mysupertrend = upperband
endif
// ~~ Collect data points and their corresponding labels
myprice = WeightedAverage[KNNPriceLen](close)
sT = WeightedAverage[kNNSTlen](mysupertrend)
for i=0 to n-1 do
$data[i]=mysupertrend[i]
if myprice[i] > sT[i] then
$labels[i] = 1
else
$labels[i] = 0
endif
next
// ~~ Classify the current data point
currentsuperTrend = mysuperTrend
//label = knn_weighted(data, labels, k, current_superTrend)
// Compute distances from the current point to all other points
n1 = lastset($data)
for i = 0 to n1-1 do
$distances[i] = abs(currentsuperTrend[i]-$data[i])
$indices[i] = i
next
// Sort distances and corresponding indices in ascending order
// Bubble sort method
for i=0 to n1-2 do
for j=0 to n1-i-2 do
if $distances[j]>$distances[j+1] then
tempDist = $distances[j]
$distances[j]=$distances[j+1]
$distances[j+1]=tempDist
tempindex = $indices[j]
$indices[j]=$indices[j+1]
$indices[j+1]=tempindex
endif
next
next
// Compute weighted sum of labels of the k nearest neighbors
weightedsum=0
totalweight=0
for i=0 to k-1 do
myindex = $indices[i]
labeli = $labels[i]
weighti = 1 / ($distances[i]+pow(10,-6) )
weightedsum = weighti*labeli+weightedsum
totalweight = weighti+totalweight
next
label = floor(weightedsum / totalweight,2)
// ~~ Plot
if label = 1 then
r=0
g=250
b=0
elsif label = 0 then
r=250
g=0
b=0
else
r=0
g=0
b=250
endif
middleprice = (open+close)/2
colorbetween(middleprice,mysupertrend,r,g,b,40)
// ~~ Ai Super Trend Signals
starttrendup = label = 1 and label[1]<>1 and aisignals
starttrenddn = label = 0 and label[1]<>0 and aisignals
TrendUp = direction = -1 and direction[1] = 1 and label = 1 and aisignals
TrendDn = direction = 1 and direction[1] = -1 and label = 0 and aisignals
if starttrendup or starttrenddn then
drawpoint(barindex,currentsuperTrend,2)coloured(r,g,b)
elsif Trendup then
drawtext("▲",barindex,currentsuperTrend)coloured(r,g,b)
elsif Trenddn then
drawtext("▼",barindex,currentsuperTrend)coloured(r,g,b)
endif
return currentsuperTrend as "SuperTrend" coloured(r,g,b)style(line,2)
2024-11-17
772
글번호 185343
지표
답변완료
손익여부를 알고 싶습니다!!
안녕하세요 관리자님!!
날씨가 많이 추워졌습니다ㅜㅜ
아래 지표는 관리자님이 만들어 주신 지표로 실거래시 많이 사용하고 있습니다
다름이 아니오라
아래 지표를 차트에 구현하면 첨부한 그림과 같이
상,하단에 선이 각각 3개씩(plot15~plot20) 총6개의 선이 구현됩니다
각각의 선을 상향돌파/하향돌파시 역거래를 하려고 하는데요
거래에 대한 실익을 먼저 확인하려고 지표를 문의드립니다!!
질문이 부족하더라도 양해하시고 적절한 지표 부탁드립니다
#검색할조건#
거래시간: 08~20시
각각의 선을 돌파시: 일정랏으로 역방향 진입
수익목표: 50핍
손절제한은 없음
익절이 안되고 손실시 익일 아침에 장시작후 바로 청산조건
-아래-
input : nday(2);
var : OO(0),HH(0),LL(0),cnt(0);
OO = DayOpen(nday);
HH = DayHigh(1);
LL = DayLow(1);
for cnt = 1 to nday
{
if DayHigh(cnt) > hh Then
hh = DayHigh(cnt);
if DayLow(cnt) < ll Then
ll = DayLow(cnt);
}
if OO > 0 then
{
var1 = C/OO*100-100;
plot1(var1,"시가");
}
if HH > 0 then
{
var2 = (C/HH*100-100);
plot2(var2,"고가");
}
if LL > 0 then
{
var3 = C/LL*100-100;
plot3(var3,"저가");
plot4(0,"0선");
plot5(-var2,"-고가");
plot6(-var3,"-저가");
plot7(var3-var2,"저가-고가");
plot8(var2-var3,"고가-저가");
plot9(0.5,"0.5선");
plot10(-0.5,"-0.5선");
plot11(1.0,"1.0선");
plot12(-1.0,"-1.0선");
plot13(2.0,"2.0선");
plot14(-2.0,"-2.0선");
plot15(HH*1.005,"저0.5선");
plot16(HH*1.01,"저1.0선");
plot17(HH*1.02,"저2선");
plot18(LL*0.995,"고-0.5선");
plot19(LL*0.99,"고-1.0선");
plot20(LL*0.98,"고-2선");
}
2024-11-17
568
글번호 185341
검색
답변완료
문의드립니다
Input:전환비율(5),Per(5);
Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""),TL1(0),Text1(0),ADXV1(0);
Array:고[10,4](0),저[10,4](0);
var : TL2(0),TL3(0);
HH=H;
LL=L;
If Index==0 Then
{
고[1,1]=HH;
고[1,2]=0;
고[1,3]=sDate;
고[1,4]=sTime;
저[1,1]=LL;
저[1,2]=0;
저[1,3]=sDate;
저[1,4]=sTime;
}
If Index>0 Then
{
hiBar=hiBar+1;
loBar=loBar+1;
}
If HH[hiBar]<HH Then hiBar=0;
If LL[loBar]>LL Then loBar=0;
Condition1=저[1,1]*(1+(전환비율/100))<HH and hiBar==0;
Condition2=고[1,1]*(1-(전환비율/100))>LL and loBar==0;
처리구분="";
If Condition1 and Condition2 Then//고점과저점조건동시만족
{
If 최종꼭지점=="저점" Then
{
If 저[1,1]>LL Then 처리구분="저점처리";
Else 처리구분="고점처리";
}
Else If 최종꼭지점=="고점" Then
{
If 고[1,1]<HH Then 처리구분="고점처리";
Else 처리구분="저점처리";
}
}
Else If Condition1 Then 처리구분="고점처리";
Else If Condition2 Then 처리구분="저점처리";
If 처리구분=="고점처리" Then
{
If 최종꼭지점=="저점" Then
{
For j=10 DownTo 2
{
For jj=1 To 4
{
고[j,jj]=고[j-1,jj];
}
}
고[1,1]=HH[hiBar];
고[1,2]=Index-hiBar;
고[1,3]=sDate[hiBar];
고[1,4]=sTime[hiBar];
hiBar=-1;
loBar=-1;
TL1=TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,RED);
TL_Delete(TL2);
TL2=TL_New(고[1,3],고[1,4],고[1,1]*(1+per/100),NextBarSdate,NextBarStime,고[1,1]*(1+per/100));
TL_SetExtRight(TL2,true);
TL_SetColor(TL2,Red);
}
Else If 고[1,1]<HH[hiBar] Then//1번고점보다높은고가출현
{
고[1,1]=HH[hiBar];
고[1,2]=Index-hiBar;
고[1,3]=sDate[hiBar];
고[1,4]=sTime[hiBar];
hiBar=-1;
loBar=-1;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetBegin(TL2,고[1,3],고[1,4],고[1,1]*(1+per/100));
TL_SetEnd(TL2,NextBarSdate,NextBarStime,고[1,1]*(1+per/100));
}
최종꼭지점="고점";
}
If 처리구분=="저점처리" Then
{
If 최종꼭지점=="고점" Then
{
For j=10 DownTo 2
{
For jj=1 To 4
{
저[j,jj]=저[j-1,jj];
}
}
저[1,1]=LL[loBar];
저[1,2]=Index-loBar;
저[1,3]=sDate[loBar];
저[1,4]=sTime[loBar];
hiBar=-1;
loBar=-1;
TL1=TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,BLUE);
TL_Delete(TL3);
TL3=TL_New(저[1,3],저[1,4],저[1,1]*(1-per/100),NextBarSdate,NextBarStime,저[1,1]*(1-per/100));
TL_SetExtRight(TL3,true);
TL_SetColor(TL3,Blue);
}
Else If 저[1,1]>LL[loBar] Then
{
저[1,1]=LL[loBar];
저[1,2]=Index-loBar;
저[1,3]=sDate[loBar];
저[1,4]=sTime[loBar];
hiBar=-1;
loBar=-1;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
TL_SetBegin(TL3,저[1,3],저[1,4],저[1,1]*(1-per/100));
TL_SetEnd(TL3,NextBarSdate,NextBarStime,저[1,1]*(1-per/100));
}
최종꼭지점="저점";
}
-----------
위식을 활용한 시스템식 부탁드립니다 (코스피선물 거래)
매도신호: 최종고점이 나온 봉이 음봉으로 완성되는경우에만 음봉종가에 매도신호 발생
매도청산: 매도신호 가격에서 2p(포인트) 손실 발생하면 매도청산(손절)
매수신호: 최종저점이 나온 봉이 양봉으로 완성되는경우에만 양봉종가에 매수신호 발생
매수청산: 매수신호 가격에서 2p(포인트) 손실 발생하면 매수청산(손절)
감사합니다
2024-11-17
585
글번호 185339
시스템