답변완료
수식 검증 좀 부탁드립니다!
청산이 잘 안됩니다. 수식 검증 좀 부탁드립니다!!
// 진입 전략: 이평선 기준, long은 이평 크로스 업, short은 초단기로만
Var: aa(0), bb(0);
Input: ss(3), sss(4); //진입변수
Var: yyy(1); //진입수량
aa = Average(close, ss); // 단기 이평선
bb = Average(close, ss*sss); // 장기 이평선
if CrossUp(aa,bb[1]) Then Buy ("매수", AtMarket,Def,yyy); // 단기 이평선이 장기 이평선을 골든크로스 시 롱 진입
input: SL(10), PT(10);
SetStopTrailing(SL,PT,PercentStop);
input: ShortHoldDay(2), SL_time(10);
if MarketPosition <0 and BarsSinceEntry > ShortholdDay Then {
ExitLong("EL_time",AtMarket);
ExitShort("ES_time",AtMarket);}
if SL_time > 0 Then SetStopLoss ((SL_time/BigPointValue),PointStop);
2025-05-19
214
글번호 190976
시스템
답변완료
답변주신 내용중 공부상 질문
안녕하세요 아래에 같이 지난 요청에 수식을 작성해주셨는데요.
input : N(1);
var : x(0),y(0);
Array : VV[2,20](0),box[20](0);
For x = 19 DownTo 1
{
VV[0,x] = VV[0,x-1];
VV[1,x] = VV[1,x-1];
}
VV[0,0] = v;
VV[1,0] = Index;
var1 = Sort2DArray(VV,2,20,1);
For x = 0 to N-1
{
Box_Delete(box[x]);
var1 = H[index-vv[1,x]];
var2 = L[index-vv[1,x]];
box[x] = Box_New(sDate[index-vv[1,x]],sTime[index-vv[1,x]],var1,NextBarSdate,NextBarStime,var2);
Box_SetColor(box[x],Red);
Box_SetFill(box[x],true);
}
위 코드에서
var1 = Sort2DArray(VV,2,20,1); 부분과 for문 내부에서
var1 = H[index-vv[1,x]]; 를 사용하는 부분이 공부하는데 조금 어렵습니다.
동일한 변수명을 재사용한것과 배열을 정렬해서 배열이 아닌 변수에 값을 넘기는것이
이해가 잘 되지 않는 부분입니다.
공부를 위해서 설명과 코드에 자세한 주석을 달아주시길 부탁드립니다!!
항상 답변 감사드립니다.
2025-05-19
180
글번호 190974
지표
답변완료
항상 감사합니다 지표 변환 부탁드립니다
// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
tf = input.timeframe("D")
color_up = input.color(color.rgb(229, 148, 27), "", inline = "color")
color_dn = input.color(color.rgb(30, 142, 234), "", inline = "color")
var array_vals = array.new<float>()
var count = 0
// }
// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
convert_tf(tf)=>
time_in = timeframe.in_seconds(tf) / 60 / 60
time_in >= 24 ? tf : time_in >= 1 ? str.tostring(time_in) + "h" : tf + "m"
current_tf_min = timeframe.in_seconds("")/60
user_tf_min = timeframe.in_seconds(tf)/60
bars_amount = int(user_tf_min / current_tf_min)
tf_change = timeframe.change(tf)
if tf_change
label.new(bar_index, array_vals.max(), str.tostring(array_vals.max(), "#,###.###"), style = label.style_label_left, color = color(na), textcolor = chart.fg_color)
label.new(bar_index, array_vals.min(), str.tostring(array_vals.min(), "#,###.###"), style = label.style_label_left, color = color(na), textcolor = chart.fg_color)
array_vals.clear()
count := 0
if not tf_change
count +=1
array_vals.push(high)
array_vals.push(low)
max = array_vals.max()
min = array_vals.min()
tf_trend = array_vals.avg()
color tf_col = tf_trend > tf_trend[1] ? color_up : color_dn
color time_color = color.from_gradient(count, 0, bars_amount, color.new(tf_col, 0), color.new(tf_col, 100))
// }
// PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
plotshape(tf_change[1] ? tf_trend : na, "", shape.circle, location.absolute, color.new(chart.fg_color, 30), size = size.tiny)
plot(tf_trend, "HTF Trend", color = tf_change ? color(na) : tf_col, style = plot.style_linebr, linewidth = 1)
plot(tf_trend, "HTF Trend", color = tf_change ? color(na) : time_color, style = plot.style_linebr, linewidth = 5)
plot(max != max[1] ? na : max, "High Level", color = bar_index % 2 == 0 ? chart.fg_color : color(na), style = plot.style_steplinebr)
plot(min != min[1] ? na : min, "Low Level", color = bar_index % 2 == 0 ? chart.fg_color : color(na), style = plot.style_steplinebr)
bgcolor(tf_change ? color.new(chart.fg_color, 85) : na)
if barstate.islast
l1 = label.new(bar_index, array_vals.max(), str.tostring(array_vals.max(), "#,###.###"), style = label.style_label_left, color = color(na), textcolor = chart.fg_color)
l2 = label.new(bar_index, array_vals.min(), str.tostring(array_vals.min(), "#,###.###"), style = label.style_label_left, color = color(na), textcolor = chart.fg_color)
label.delete(l1[1])
label.delete(l2[1])
dash = table.new(position.top_right, 10, 10)
dash.cell(0, 0, "Timeframe: ", text_color = chart.fg_color)
dash.cell(1,0, convert_tf(tf), text_color = chart.fg_color)
dash.cell(0, 1, "Trend: ", text_color = chart.fg_color)
dash.cell(1, 1, tf_trend > tf_trend[1] ? "🢁" : "🢃", text_color = tf_col)
// }
2025-05-19
233
글번호 190973
지표
답변완료
문의드립니다
안녕하세요 관리자님
아래 지표는 관리자님이 보내주신 지표인데요
실거래에서 사용준비중입니다
다름이 아니오라
아래 지표에서
muliplier1~3을 하나는 2
muliplier1~3을 하나는 3
으로 하여 지표를 겹치면 첨부한 그림과 같이 선이 각각 2개씩 나오텐데요
이를 하나의 지표로 만들어서 선과 선 사이에 색깔을 입힐려고 합니다
수정하려고 했는데 못하겠어요ㅜㅜ 도와주세요
-아 래-
input : period1(10),multiplier1(3);
input : period2(20),multiplier2(3);
input : period3(30),multiplier3(3);
var : src(0);
var : AtrV1(0),upperBand1(0),lowerBand1(0), prevLowerBand1(0), prevUpperBand1(0);
var : prevSuperTrend1(0), superTrend1(C), direction1(0),alpha1(0),source1(0);
var : AtrV2(0),upperBand2(0),lowerBand2(0), prevLowerBand2(0), prevUpperBand2(0);
var : prevSuperTrend2(0), superTrend2(C), direction2(0),alpha2(0),source2(0);
var : AtrV3(0),upperBand3(0),lowerBand3(0), prevLowerBand3(0), prevUpperBand3(0);
var : prevSuperTrend3(0), superTrend3(C), direction3(0),alpha3(0),source3(0);
src = (H+L)/2;
if CurrentBar > 1 Then
{
alpha1 = 1 / period1;
source1 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV1 = alpha1 * source1 + (1 - alpha1) * ATrV1[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand1 = src + multiplier1 * AtrV1;
lowerBand1 = src - multiplier1 * AtrV1;
prevLowerBand1 = lowerBand1[1];
prevUpperBand1 = upperBand1[1];
if lowerBand1 > prevLowerBand1 or close[1] < prevLowerBand1 Then
lowerBand1 = lowerBand1;
Else
lowerBand1 = prevLowerBand1;
if upperBand1 < prevUpperBand1 or close[1] > prevUpperBand1 Then
upperBand1 = upperBand1;
Else
upperBand1 = prevUpperBand1;
if C > UpperBand1 Then
direction1 = 1;
if C < LowerBand1 Then
direction1 = -1;
if direction1 == 1 Then
supertrend1 = lowerband1;
Else
supertrend1 = upperband1;
alpha2 = 1 / period2;
source2 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV2 = alpha2 * source2 + (1 - alpha2) * ATrV2[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand2 = src + multiplier2 * AtrV2;
lowerBand2 = src - multiplier2 * AtrV2;
prevLowerBand2 = lowerBand2[1];
prevUpperBand2 = upperBand2[1];
if lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 Then
lowerBand2 = lowerBand2;
Else
lowerBand2 = prevLowerBand2;
if upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 Then
upperBand2 = upperBand2;
Else
upperBand2 = prevUpperBand2;
if C > UpperBand2 Then
direction2 = 1;
if C < LowerBand2 Then
direction2 = -1;
if direction2 == 1 Then
supertrend2 = lowerband2;
Else
supertrend2 = upperband2;
alpha3 = 1 / period3;
source3 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV3 = alpha3 * source3 + (1 - alpha3) * ATrV3[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand3 = src + multiplier3 * AtrV3;
lowerBand3 = src - multiplier3 * AtrV3;
prevLowerBand3 = lowerBand3[1];
prevUpperBand3 = upperBand3[1];
if lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 Then
lowerBand3 = lowerBand3;
Else
lowerBand3 = prevLowerBand3;
if upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 Then
upperBand3 = upperBand3;
Else
upperBand3 = prevUpperBand3;
if C > UpperBand3 Then
direction3 = 1;
if C < LowerBand3 Then
direction3 = -1;
if direction3 == 1 Then
supertrend3 = lowerband3;
Else
supertrend3 = upperband3;
if C > superTrend1 Then
{
Plot1(superTrend1,"매수1", Yellow, 0, 1);
NoPlot(2);
}
Else
{
Plot2(superTrend1,"매도1", Indigo, 0, 1);
NoPlot(1);
}
}
2025-05-19
246
글번호 190971
지표