답변완료
마틴적용 수정 부탁합니다
Input : P(100), MartinMult(2), BaseQty(1);Vars : T(0), Bcond(False), Scond(False), var1(0), var2(0), value3(0), MartinCount(0), LossTrigger(0), PriceStep(PriceScale*5);value3 = MA(C, P);var1 = MA(C, 36);var2 = (Highest(High, 52)[25] + Lowest(Low, 52)[25]) / 2;//------------------------------// 추세 전환시 초기화//------------------------------if CrossUp(C, var1) then begin T = 1; Bcond = False; MartinCount = 0;end;if CrossDown(C, var1) then begin T = -1; Scond = False; MartinCount = 0;end;//------------------------------// 매수 조건//------------------------------if stime >= 093000 and stime < 150000 and T = 1 then begin if L >= var2 + PriceScale*2 then begin if TotalTrades = 0 or (MarketPosition = -1 and BarsSinceEntry >= 130 and BarsSinceExit(1) >= 43) or (TotalTrades >= 1 and MarketPosition = 0 and BarsSinceExit(1) >= 130) then Bcond = True; end; if Bcond and C > value3 then begin Buy("B1") BaseQty contracts at var1 + 0.2 limit; MartinCount = 1; LossTrigger = EntryPrice - PriceStep; // 마틴 기준선 설정 end; // 마틴 진입 if MarketPosition = 1 and MartinCount < 3 then begin if C <= LossTrigger then begin Buy("B-Martin") BaseQty * MartinMult contracts at Market; MartinCount = MartinCount + 1; LossTrigger = EntryPrice - PriceStep; // 다음 회차 기준선 업데이트 end; end;end;//------------------------------// 매도 조건//------------------------------if stime >= 093000 and stime < 150000 and T = -1 then begin if H <= var2 - PriceScale*2 then begin if TotalTrades = 0 or (MarketPosition = 1 and BarsSinceEntry >= 130 and BarsSinceExit(1) >= 43) or (TotalTrades >= 1 and MarketPosition = 0 and BarsSinceExit(1) >= 130) then Scond = True; end; if Scond and C < value3 then begin SellShort("S1") BaseQty contracts at var1 - 0.2 limit; MartinCount = 1; LossTrigger = EntryPrice + PriceStep; end; // 마틴 진입 if MarketPosition = -1 and MartinCount < 3 then begin if C >= LossTrigger then begin SellShort("S-Martin") BaseQty * MartinMult contracts at Market; MartinCount = MartinCount + 1; LossTrigger = EntryPrice + PriceStep; end; end;end;//------------------------------// 청산 시 초기화//------------------------------if MarketPosition = 0 then MartinCount = 0;
답변완료
문의드립니다
안녕하세요 ? 아래수식이 에러가 있는데 도움주세요 감사드립니다 Inputs: length(5), FilterBars(2);Vars: lastHiVal_1m(0), lastLoVal_1m(0), sig1_Buy(False), sig1_Sell(False), last1mBuyBar(0), last1mSellBar(0), xOpen_1m(0), xClose_1m(0), Condition1_1m(False), Condition2_1m(False), lastHiVal_2m(0), lastLoVal_2m(0), sig2_Buy(False), sig2_Sell(False), xOpen_2m(0), xClose_2m(0), Condition1_2m(False), Condition2_2m(False), barCount(0), LastAlertBar(0), FilterBuyCond(False), FilterSellCond(False);sig1_Buy = False;sig1_Sell = False;Condition1_1m = (High = Highest(High, length)) and (lastHiVal_1m <> High);Condition2_1m = (Low = Lowest(Low, length)) and (lastLoVal_1m <> Low);If Condition1_1m Then Begin lastHiVal_1m = High;End;If Condition2_1m Then Begin lastLoVal_1m = Low;End;If xOpen_1m = 0 Then Begin xOpen_1m = Open;End;xClose_1m = (Open + High + Low + Close) / 4;xOpen_1m = (xOpen_1m + xClose_1m) / 2;If (xOpen_1m <> xOpen_1m) or (xClose_1m <> xClose_1m) Then Begin xOpen_1m = Open; xClose_1m = Close;End;If Condition2_1m and (xClose_1m > xOpen_1m) Then Begin sig1_Buy = True; last1mBuyBar = CurrentBar; End;If Condition1_1m and (xClose_1m < xOpen_1m) Then Begin sig1_Sell = True; last1mSellBar = CurrentBar;End;barCount = barCount + 1;If barCount >= 2 Then Begin Condition1_2m = (High = Highest(High, length)) and (lastHiVal_2m <> High); Condition2_2m = (Low = Lowest(Low, length)) and (lastLoVal_2m <> Low); If Condition1_2m Then Begin lastHiVal_2m = High; End; If Condition2_2m Then Begin lastLoVal_2m = Low; End; If xOpen_2m = 0 Then Begin xOpen_2m = Open; End; xClose_2m = (Open + High + Low + Close) / 4; xOpen_2m = (xOpen_2m + xClose_2m) / 2; If (xOpen_2m <> xOpen_2m) or (xClose_2m <> xClose_2m) Then Begin xOpen_2m = Open; xClose_2m = Close; End; sig2_Buy = Condition2_2m and (xClose_2m > xOpen_2m); sig2_Sell = Condition1_2m and (xClose_2m < xOpen_2m); barCount = 0;End;FilterBuyCond = (CurrentBar - last1mBuyBar) <= FilterBars;FilterSellCond = (CurrentBar - last1mSellBar) <= FilterBars;If sig2_Buy and FilterBuyCond Then Begin If LastAlertBar <> CurrentBar Then Begin Buy Next Bar at Market; LastAlertBar = CurrentBar; End;End;If sig2_Sell and FilterSellCond Then Begin If LastAlertBar <> CurrentBar Then Begin Sell Short Next Bar at Market; LastAlertBar = CurrentBar; End;End;
답변완료
조건검색 문의
//@version=5indicator("Swing Pivots High Low with Breakout", "Swing Pivots High Low with Breakout", overlay=true, max_labels_count=500)tf = input.timeframe(title="Timeframe", defval="")gr="LENGTH LEFT / RIGHT"leftLenH = input.int(title="Pivot High", defval=5, minval=1, inline="Pivot High",group=gr)rightLenH = input.int(title="/", defval=5, minval=1, inline="Pivot High",group=gr)colorH = input(title="", defval=color.red, inline="Pivot High",group=gr)leftLenL = input.int(title="Pivot Low", defval=5, minval=1, inline="Pivot Low", group=gr)rightLenL = input.int(title="/", defval=5, minval=1, inline="Pivot Low",group=gr)colorL = input(title="", defval=color.blue, inline="Pivot Low",group=gr)// 피봇 하이 돌파 신호 설정breakoutColor = input(color.green, "Breakout Signal Color")pivotHigh(ll, rl) => maxLen = 1000 float ph = ta.pivothigh(ll, rl) int offset = 0 while offset < maxLen if not na(ph[offset]) break offset := offset + 1 ph[offset]pivotLow(ll, rl) => maxLen = 1000 float pl = ta.pivotlow(ll, rl) int offset = 0 while offset < maxLen if not na(pl[offset]) break offset := offset + 1 pl[offset]ph = request.security(syminfo.tickerid, tf, pivotHigh(leftLenH, rightLenH), barmerge.gaps_off, barmerge.lookahead_on)pl = request.security(syminfo.tickerid, tf, pivotLow(leftLenL, rightLenL), barmerge.gaps_off, barmerge.lookahead_on) drawLabel(_offset, _pivot, _style, _color) => if not na(_pivot) label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722)// 피봇 하이 돌파 신호 감지pivotHighBreakout = ta.crossover(close, ph)if (timeframe.period == tf or tf == "") drawLabel(rightLenH, ta.pivothigh(leftLenH, rightLenH), label.style_label_down, colorH) drawLabel(rightLenL, ta.pivotlow(leftLenL, rightLenL), label.style_label_up, colorL)plotshape(ph, "PH", style=shape.circle, location=location.absolute, color=colorH)plotshape(pl, "PL", style=shape.circle, location=location.absolute, color=colorL)// 피봇 하이 돌파 신호 표시 (작은 사이즈로 고정)plotshape(pivotHighBreakout, "Pivot High Breakout", style=shape.triangleup, location=location.belowbar, color=breakoutColor, size=size.tiny)alertcondition(ta.crossover(close, ph), "PH Crossover", "Price crossed over current pivot high")alertcondition(ta.crossunder(close, ph), "PH Crossunder", "Price crossed under current pivot high")alertcondition(ta.crossover(close, pl), "PL Crossover", "Price crossed over current pivot low")alertcondition(ta.crossunder(close, pl), "PL Crossunder", "Price crossed under current pivot low")일봉상 위 신호가 나오는 종목에 대해서 검출할 수 있도록 해주시면 감사드리겠습니다 (__)