Timeframe
N/A
Direction
Long Only
Stoploss
N/A
Trailing Stop
No
ROI
N/A
Interface Version
N/A
Startup Candles
N/A
Indicators
1
freqtrade/freqtrade-strategies
freqtrade/freqtrade-strategies
this is an example class, implementing a PSAR based trailing stop loss you are supposed to take the `custom_stoploss()` and `populate_indicators()` parts and adapt it to your own strategy
freqtrade/freqtrade-strategies
Strategy 003 author@: Gerald Lonlas github@: https://github.com/freqtrade/freqtrade-strategies
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import walk_forward_optimization
import ccxt # Quotex API library
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
# Set up Quotex API connection
exchange = ccxt.quotex({
'apiKey': 'YOUR_API_KEY',
'apiSecret': 'YOUR_API_SECRET',
})
# Load historical data
data = pd.read_csv('quotex_data.csv')
# Preprocess data
X = data.drop(['target'], axis=1)
y = data['target']
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train machine learning model
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
# Optimize model using walk-forward optimization
model.optimize(X_test, y_test, walk_forward_optimization)
# Create LSTM neural network model
lstm_model = Sequential()
lstm_model.add(LSTM(units=50, return_sequences=True, input_shape=(X.shape[1], 1)))
lstm_model.add(Dense(1, activation='sigmoid'))
lstm_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Train LSTM model
lstm_model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))
# Generate trading signals using LSTM model
lstm_signals = lstm_model.predict(X_test)
# Combine signals from machine learning model and LSTM model
combined_signals = []
for i in range(len(signals)):
if signals[i] == "buy" and lstm_signals[i] > 0.5:
combined_signals.append("buy")
elif signals[i] == "sell" and lstm_signals[i] < 0.5:
combined_signals.append("sell")
else:
combined_signals.append("neutral")
# Implement risk management
risk_management = RiskManagement(STOP_LOSS, TAKE_PROFIT, MAX_DAILY_LOSS, MAX_CONSECUTIVE_LOSSES)
risk_management.monitor_risk(combined_signals)
# Execute trades based on combined signals
for signal in combined_signals:
if signal == "buy":
exchange.place_order("buy", FREQTRADE_AMOUNT)
elif signal == "sell":
exchange.place_order("sell", FREQTRADE_AMOUNT)
# Integrate with additional strategies
from freqtrade.strategy import IStrategy
from freqtrade.exchange import Exchange
class MyStrategy(IStrategy):
def populate_indicators(self, dataframe: pd.DataFrame) -> pd.DataFrame:
# Add additional indicators here
dataframe['ema_50'] = dataframe['close'].ewm(span=50, adjust=False).mean()
dataframe['rsi_14'] = talib.RSI(dataframe['close'], timeperiod=14)
return dataframe
def populate_buy_trend(self, dataframe: pd.DataFrame) -> pd.DataFrame:
# Add additional buy trend conditions here
dataframe.loc[(dataframe['close'] > dataframe['ema_50']) & (dataframe['rsi_14'] < 30), 'buy'] = 1
return dataframe
def populate_sell_trend(self, dataframe: pd.DataFrame) -> pd.DataFrame:
# Add additional sell trend conditions here
dataframe.loc[(dataframe['close'] < dataframe['ema_50']) & (dataframe['rsi_14'] > 70), 'sell'] = 1
return dataframe
my_strategy = MyStrategy(exchange)
# Combine with other AI trading bots
from stockhero import StockHero
from tickeron import Tickeron
from signalstack import SignalStack
stock_hero = StockHero()
tickeron = Tickeron()
signal_stack = SignalStack()
def combine_signals(signals):
# Combine signals from multiple bots
combined_signal = 0
for signal in signals:
if signal == "buy":
combined_signal += 1
elif signal == "sell":
combined_signal -= 1
return combined_signal
# Run the complete signal bot
while True:
signals = []
signals.append(my_strategy.check_buy_sell_signals())
signals.append(stock_hero.get_signal())
signals.append(tickeron.get_signal())
signals.append(signal_stack.get_signal())
combined_signal = combine_signals(signals)
if combined_signal > 0:
exchange.place_order("buy", FREQTRADE_AMOUNT)
elif combined_signal < 0:
exchange.place_order("sell", FREQTRADE_AMOUNT)
time.sleep(60) # Run every 1 minute