7. Zarządzanie pozycjami — warstwy ochrony
ManagePositions() wykonuje się na KAŻDYM ticku dla każdej otwartej pozycji. Warstwy ochrony są stosowane w ściśle określonej kolejności priorytetów.
Warstwa 0: Virtual Stop Loss (najwyższy priorytet — awaryjne cięcie)
Nie jest to SL wysłany do brokera — to wewnętrzna kontrola poziomu straty:
active_cap = base_capital (zależnie od trybu)
pos_profit = zysk + swap + prowizja
max_loss = active_cap × Inp_Virtual_SL_Percent / 100
Jeśli |pos_profit| >= max_loss → natychmiastowe zamknięcie pozycji
Log: "VIRTUAL SL HIT! Position #123 loss (-45.23) exceeded 4.00% of Active Capital (1132.50). Closing immediately."
To zabezpieczenie działa jako ostatnia linia obrony przed katastroficzną stratą, niezależnie od spreadu, poślizgu czy warunków brokera.
Warstwa 0.5: Profit Lock (agresywne trailing bliskie TP)
Aktywuje się gdy cena zbliży się do TP na odległość Inp_E_PL_Trigger_Points (500 pkt):
- Włącza agresywny trailing SL oparty o
Inp_E_PL_TSL_Points (200 pkt) od aktualnej ceny
- SL przesuwa się tylko w kierunku zysku (ratchet — nigdy wstecz)
- Chroni wypracowany zysk tuż przed osiągnięciem TP
Log: "Position #123: PROFIT LOCK Activated!"
Warstwa 1: Physical TSL BB (Bollinger Band Trailing SL)
Dwufazowy mechanizm:
- Faza 1: Standard Hard SL wysłany do brokera przy otwarciu
- Faza 2: Aktywuje się gdy
profit_in_points >= Inp_E_ProfitToActivateBB (1500 pkt)
Po wejściu w Fazę 2:
- BUY: SL =
MAX(BB_Lower, open_price + floor_dist) — podąża za dolnym pasmem BB (nigdy poniżej otwarcia + podłoga)
- SELL: SL =
MIN(BB_Upper, open_price - floor_dist) — podąża za górnym pasmem BB
BB TSL ma wyższy priorytet niż Hard BE — gdy Faza 2 aktywna, Hard BE jest ignorowane.
Log: "Position #123 entered Phase 2 (TSL BB)."
Warstwa 2: Hard Break-Even (klasyczny BE)
Przenosi fizyczny SL do (lub powyżej) ceny otwarcia gdy zysk osiągnie Inp_HardBE_Trigger_Points (200 pkt):
BUY: new_SL = open_price + (Inp_HardBE_Level_Points × _Point) // np. +100 pkt
SELL: new_SL = open_price - (Inp_HardBE_Level_Points × _Point)
SL jest przesuwany tylko w kierunku zysku. Po jednorazowej aktywacji flaga is_breakeven1_set = true — Hard BE nie jest powtarzany.
Log: "Position #123: Hard Break-Even set at +100 pts."
Warstwa 3: Virtual Negative Break-Even
Innowacyjny mechanizm pozwalający pozycji „oddychać” po osiągnięciu pewnego zysku:
- Po osiągnięciu
Inp_NegBE_Trigger_Points (5000 pkt) zysku → aktywuje się is_breakeven2_set = true
- Jeśli pozycja cofnie się do poziomu
Inp_NegBE_Level_Points (np. -3000 pkt) → pozycja jest zamykana
- Działa wyłącznie gdy Hard BE NIE jest jeszcze ustawiony
Sens: pozycja osiągnęła duży zysk (5000 pkt), system „pozwala” jej wrócić do -3000 pkt zanim ją zatnie. Drastycznie zmniejsza liczbę przedwcześnie zamkniętych trendów.
Log: "Position #123: Virtual Negative BE Activated." → "Position #123: Closed by Virtual Negative BE."
Dynamic Take Profit (rozszerzanie TP przy silnym trendzie)
Gdy cena zbliży się do TP na Inp_E_PL_Trigger_Points:
- Sprawdza BB (z osobnym szerszym odchyleniem
Inp_E_BB_TP_Deviation = 3.0)
- Jeśli cena przebija zewnętrzne pasmo BB (silny trend!) → TP jest przesuwany dalej o
Inp_E_TP_Extension_Points (500 pkt)
- Można wielokrotnie rozszerzać — bez limitu liczby rozszerzeń
Log: "Position #123: Dynamic TP Extended by 500 points!"