Advertisement
Guest User

Untitled

a guest
Jul 6th, 2025
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. def _extract_trades_from_df(self, df):
  2. """Extract entry/exit trades from a per-bar signal DataFrame (for vectorized version)."""
  3. trades = []
  4. prev = 0
  5. entry_price = None
  6. entry_time = None
  7. for ts, row in df.iterrows():
  8. sig = row.signal
  9. sp = row.spread
  10. if sig == 1 and prev <= 0:
  11. entry_price = sp
  12. entry_time = ts
  13. if sig == 0 and prev == 1 and entry_price is not None:
  14. trades.append({
  15. "entry_time": entry_time,
  16. "exit_time": ts,
  17. "entry_price": entry_price,
  18. "exit_price": sp,
  19. "pnl": (sp - entry_price) * self.trade_size,
  20. "side": "long"
  21. })
  22. if sig == -1 and prev >= 0:
  23. entry_price = sp
  24. entry_time = ts
  25. if sig == 0 and prev == -1 and entry_price is not None:
  26. trades.append({
  27. "entry_time": entry_time,
  28. "exit_time": ts,
  29. "entry_price": entry_price,
  30. "exit_price": sp,
  31. "pnl": (entry_price - sp) * self.trade_size,
  32. "side": "short"
  33. })
  34. prev = sig
  35. return pd.DataFrame(trades)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement