커뮤니티

부탁드립니다 항상 감사합니다

프로필 이미지
윤호석
2025-05-22 08:32:45
225
글번호 191067
답변완료
Input: length(100), mult(1), TP_Ratio(1.01), SL_Ratio(0.99), 진입수량(1); Var: src(0), a(0), b(0), size(0), var1(0), var2(0), Condition1(false), Condition2(false), t1(0), t2(0), value1(0), value2(0), 진입가(0), TP(0), SL(0), posFlag(0), tx(0); // 1. 원본 가격 src = Close; // 2. size 계산 size = iff((a[1]-a[2]) > 0 or (b[1]-b[2]) < 0 , atr(length) , TrueRange); // 3. 상승/하락 조건 기간 카운트 if a[1] > a[2] Then Begin Condition1 = true; var1 = 0; end Else if Condition1 then var1 = var1 + 1; if b[1] < b[2] Then Begin Condition2 = true; var2 = 0; end Else if Condition2 then var2 = var2 + 1; // 4. 추세선 계산 a = max(src,a[1]) - size/pow(length,2)*(var1*mult); b = min(src,b[1]) + size/pow(length,2)*(var2*mult); // 5. 꺾임 방향 t1 = iff(a > a[1], 1, iff(a < a[1], -1, t1[1])); t2 = iff(b > b[1], 1, iff(b < b[1], -1, t2[1])); // 6. 꺾임 발생 시 진입 If t1 == -1 and t1 != t1[1] and posFlag = 0 Then Begin SellShort("Short") next bar at market; 진입가 = Close; TP = 진입가 * SL_Ratio; // 숏 전략이므로 SL<진입가 SL = 진입가 * TP_Ratio; posFlag = -1; tx = Text_New(Date, Time, High, "&#11015; 매도진입"); Text_SetColor(tx, Red); End; If t2 == -1 and t2 != t2[1] and posFlag = 0 Then Begin Buy("Long") next bar at market; 진입가 = Close; TP = 진입가 * TP_Ratio; SL = 진입가 * SL_Ratio; posFlag = 1; tx = Text_New(Date, Time, Low, "&#11014; 매수진입"); Text_SetColor(tx, Blue); End; // 7. TP/SL 도달 시 청산 If posFlag = -1 Then Begin If Close <= TP or Close >= SL Then Begin BuyToCover("청산") next bar at market; posFlag = 0; End; End; If posFlag = 1 Then Begin If Close >= TP or Close <= SL Then Begin Sell("청산") next bar at market; posFlag = 0; End; End; // 8. 시각화 Plot1(a, "상단추세"); Plot2(b, "하단추세"); Plot3(value1, "상단꺾임"); Plot4(value2, "하단꺾임"); 오류수정부탁드립니다
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-05-22 14:41:56

안녕하세요 예스스탁입니다. 수식에 value1,value2는 할당된 값이 없습니다. plot에서 제외하고 수정해 드립니다. Input: length(100), mult(1), TP_Ratio(1.01), SL_Ratio(0.99), 진입수량(1); Var: src(0), a(0), b(0), size(0), var1(0), var2(0), Condition1(false), Condition2(false), t1(0), t2(0), value1(0), value2(0), 진입가(0), TP(0), SL(0), posFlag(0), tx(0); // 1. 원본 가격 src = Close; // 2. size 계산 size = iff((a[1]-a[2]) > 0 or (b[1]-b[2]) < 0 , atr(length) , TrueRange); // 3. 상승/하락 조건 기간 카운트 if a[1] > a[2] Then Begin Condition1 = true; var1 = 0; end Else if Condition1 then var1 = var1 + 1; if b[1] < b[2] Then Begin Condition2 = true; var2 = 0; end Else if Condition2 then var2 = var2 + 1; // 4. 추세선 계산 a = max(src,a[1]) - size/pow(length,2)*(var1*mult); b = min(src,b[1]) + size/pow(length,2)*(var2*mult); // 5. 꺾임 방향 t1 = iff(a > a[1], 1, iff(a < a[1], -1, t1[1])); t2 = iff(b > b[1], 1, iff(b < b[1], -1, t2[1])); // 6. 꺾임 발생 시 진입 If t1 == -1 and t1 != t1[1] and posFlag == 0 Then Begin //Sell("Short",AtMarket); 진입가 = Close; TP = 진입가 * SL_Ratio; // 숏 전략이므로 SL<진입가 SL = 진입가 * TP_Ratio; posFlag = -1; tx = Text_New(sDate, sTime, High, "매도진입"); Text_SetStyle(tx,2,1); Text_SetColor(tx, Red); End; If t2 == -1 and t2 != t2[1] and posFlag == 0 Then Begin //Buy("Long",AtMarket); 진입가 = Close; TP = 진입가 * TP_Ratio; SL = 진입가 * SL_Ratio; posFlag = 1; tx = Text_New(sDate, sTime, Low, "매수진입"); Text_SetStyle(tx,2,0); Text_SetColor(tx, Blue); End; // 7. TP/SL 도달 시 청산 If posFlag == -1 Then Begin If Close <= TP or Close >= SL Then Begin //exitshort("매도포지션청산",AtMarket); posFlag = 0; End; End; If posFlag == 1 Then Begin If Close >= TP or Close <= SL Then Begin //ExitLong("청산",AtMarket); posFlag = 0; End; End; // 8. 시각화 Plot1(a, "상단추세"); Plot2(b, "하단추세"); //Plot3(value1, "상단꺾임"); //Plot4(value2, "하단꺾임"); 즐거운 하루되세요 > 윤호석 님이 쓴 글입니다. > 제목 : 부탁드립니다 항상 감사합니다 > Input: length(100), mult(1), TP_Ratio(1.01), SL_Ratio(0.99), 진입수량(1); Var: src(0), a(0), b(0), size(0), var1(0), var2(0), Condition1(false), Condition2(false), t1(0), t2(0), value1(0), value2(0), 진입가(0), TP(0), SL(0), posFlag(0), tx(0); // 1. 원본 가격 src = Close; // 2. size 계산 size = iff((a[1]-a[2]) > 0 or (b[1]-b[2]) < 0 , atr(length) , TrueRange); // 3. 상승/하락 조건 기간 카운트 if a[1] > a[2] Then Begin Condition1 = true; var1 = 0; end Else if Condition1 then var1 = var1 + 1; if b[1] < b[2] Then Begin Condition2 = true; var2 = 0; end Else if Condition2 then var2 = var2 + 1; // 4. 추세선 계산 a = max(src,a[1]) - size/pow(length,2)*(var1*mult); b = min(src,b[1]) + size/pow(length,2)*(var2*mult); // 5. 꺾임 방향 t1 = iff(a > a[1], 1, iff(a < a[1], -1, t1[1])); t2 = iff(b > b[1], 1, iff(b < b[1], -1, t2[1])); // 6. 꺾임 발생 시 진입 If t1 == -1 and t1 != t1[1] and posFlag = 0 Then Begin SellShort("Short") next bar at market; 진입가 = Close; TP = 진입가 * SL_Ratio; // 숏 전략이므로 SL<진입가 SL = 진입가 * TP_Ratio; posFlag = -1; tx = Text_New(Date, Time, High, "&#11015; 매도진입"); Text_SetColor(tx, Red); End; If t2 == -1 and t2 != t2[1] and posFlag = 0 Then Begin Buy("Long") next bar at market; 진입가 = Close; TP = 진입가 * TP_Ratio; SL = 진입가 * SL_Ratio; posFlag = 1; tx = Text_New(Date, Time, Low, "&#11014; 매수진입"); Text_SetColor(tx, Blue); End; // 7. TP/SL 도달 시 청산 If posFlag = -1 Then Begin If Close <= TP or Close >= SL Then Begin BuyToCover("청산") next bar at market; posFlag = 0; End; End; If posFlag = 1 Then Begin If Close >= TP or Close <= SL Then Begin Sell("청산") next bar at market; posFlag = 0; End; End; // 8. 시각화 Plot1(a, "상단추세"); Plot2(b, "하단추세"); Plot3(value1, "상단꺾임"); Plot4(value2, "하단꺾임"); 오류수정부탁드립니다