Expert4x Grid Trend Multiplier [ Linux Trending ]
# Initialize and run strategy strategy = GridTrendMultiplier( initial_balance=10000, grid_distance_pct=0.5, max_grid_levels=8, trend_multiplier=1.5, max_multiplier=4.0, risk_per_trade=0.02 )
def update_positions(self, current_price: float) -> List[Dict]: """ Update open positions and close if TP/SL hit Returns: List of closed trades """ closed = [] remaining_positions = [] for position in self.open_positions: # Check take profit if (position['type'] == 'BUY' and current_price >= position['take_profit']) or \ (position['type'] == 'SELL' and current_price <= position['take_profit']): # Close with profit profit = abs(current_price - position['entry_price']) * position['position_size'] if position['type'] == 'SELL': profit = profit # Profit for sell is same calculation position['exit_price'] = current_price position['profit'] = profit position['exit_time'] = datetime.now() position['result'] = 'WIN' closed.append(position) self.winning_trades += 1 # Check stop loss elif (position['type'] == 'BUY' and current_price <= position['stop_loss']) or \ (position['type'] == 'SELL' and current_price >= position['stop_loss']): # Close with loss loss = abs(current_price - position['entry_price']) * position['position_size'] position['exit_price'] = current_price position['profit'] = -loss position['exit_time'] = datetime.now() position['result'] = 'LOSS' closed.append(position) self.losing_trades += 1 else: # Position still open remaining_positions.append(position) self.open_positions = remaining_positions self.total_trades += len(closed) # Update balance for trade in closed: self.balance += trade['profit'] # Update drawdown if self.balance > self.peak_balance: self.peak_balance = self.balance current_drawdown = (self.peak_balance - self.balance) / self.peak_balance * 100 self.max_drawdown = max(self.max_drawdown, current_drawdown) return closed expert4x grid trend multiplier
The strategy automatically adapts to market conditions, increasing exposure during strong trends while maintaining strict risk controls through position sizing and stop losses. risk_per_trade=0.02 ) def update_positions(self
def execute_strategy(self, price_data: pd.DataFrame, volume_data: Optional[pd.Series] = None) -> Dict: """ Main strategy execution loop Args: price_data: DataFrame with 'high', 'low', 'close' columns volume_data: Optional volume series Returns: Strategy performance metrics """ logger.info("Starting Grid Trend Multiplier Strategy") for i in range(len(price_data)): current_close = price_data['close'].iloc[i] current_high = price_data['high'].iloc[i] current_low = price_data['low'].iloc[i] # Use enough data for indicators if i < 50: continue # Get price series up to current point price_series = price_data['close'].iloc[:i+1] # Detect trend self.current_trend, self.trend_strength = self.detect_trend(price_series) # Update multiplier based on trend strength self.update_multiplier(self.trend_strength) # Calculate ATR atr_series = self.calculate_atr( price_data['high'].iloc[:i+1], price_data['low'].iloc[:i+1], price_data['close'].iloc[:i+1] ) current_atr = atr_series.iloc[-1] if not pd.isna(atr_series.iloc[-1]) else current_close * 0.01 # Calculate grid levels self.grid_levels = self.calculate_grid_levels(current_close, current_atr) # Check for grid execution order = self.check_grid_execution(current_close, self.grid_levels, current_atr) if order: self.open_positions.append(order) logger.info(f"Order executed: {order['type']} at {order['entry_price']:.4f} " f"with multiplier {order['multiplier']:.2f}") # Update existing positions closed_trades = self.update_positions(current_close) if closed_trades: for trade in closed_trades: logger.info(f"Trade closed: {trade['result']} with profit ${trade['profit']:.2f}") # Calculate final metrics metrics = self.get_performance_metrics() return metrics current_price: float) ->
Core Features: - Dynamic grid levels based on ATR - Trend detection using multiple timeframes - Position size multiplier based on trend strength - Martingale-style recovery with risk management - Auto grid adjustment during strong trends """
class GridTrendMultiplier: """ Expert4x Grid Trend Multiplier Strategy





