Inputs: krev_multi(2), atr_window(30), rev_stop(true), rev_stop_multi(1), min_krev(0), to_short(true), PercentRisk(0.01); Variables: N(0), DV(0), AccountBalance(0), DollarRisk(0), LTT(0), krev(0), current_kagi(0), p1_kagi(0), p2_kagi(0), p3_kagi(0), p4_kagi(0), highest_close(Close), lowest_close(Close), trend(0), hh(0), ll(0), sl_floor(0), sl_ceil(0), pmsignal(0), NumberofShares(0); krev = MaxList(min_krev, AvgTrueRange(atr_window) * krev_multi); // ---------------------------------------------------------------------------------------------------------------------------------------------------------------- // Indicators // ---------------------------------------------------------------------------------------------------------------------------------------------------------------- current_kagi = current_kagi[1]; p1_kagi = p1_kagi[1]; p2_kagi = p2_kagi[1]; p3_kagi = p3_kagi[1]; p4_kagi = p4_kagi[1]; highest_close = Close; lowest_close = Close; trend = trend[1]; if trend = 0 then begin if close > close[1] then trend = 1; if close <= close[1] then trend = -1; end; if trend = 1 then begin if close > highest_close[1] then highest_close = close else highest_close = highest_close[1]; if close < highest_close - krev then begin trend = -1; p4_kagi = p3_kagi; p3_kagi = p2_kagi; p2_kagi = p1_kagi; p1_kagi = current_kagi; current_kagi = highest_close; end; end; if trend = -1 then begin if close < lowest_close[1] then lowest_close = close else lowest_close = lowest_close[1]; if close > lowest_close + krev then begin trend = 1; p4_kagi = p3_kagi; p3_kagi = p2_kagi; p2_kagi = p1_kagi; p1_kagi = current_kagi; current_kagi = lowest_close; end; end; hh = MaxList(p1_kagi, current_kagi); ll = MinList(p1_kagi, current_kagi); sl_floor = MaxList(ll, hh - krev * rev_stop_multi); sl_ceil = MinList(hh, ll + krev * rev_stop_multi); //----------------------------------------------------------------------------------------------------------------------------------------------------------------- //Strategy //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // Sizing N = krev * rev_stop_multi; //AvgTrueRange(atr_window); DV = N * BigPointValue; AccountBalance = InitialCapital + NetProfit; DollarRisk = AccountBalance * PercentRisk; LTT = IntPortion(DollarRisk/DV); Buy("LEntry") LTT contracts next bar at hh stop; if rev_stop and MarketPosition > 0 then Sell("LStop") from Entry("LEntry") next bar at sl_floor stop; if not rev_stop and MarketPosition > 0 then Sell("LExit") from Entry("LEntry") next bar at ll stop; if to_short then SellShort("SEntry") LTT contracts next bar at ll stop; if to_short and rev_stop and MarketPosition < 0 then BuyToCover("SStop") from Entry("SEntry") next bar at sl_ceil stop; if to_short and not rev_stop and MarketPosition < 0 then BuyToCover("SExit") from Entry("SEntry") next bar at hh stop;