MarneMorgan commited on
Commit
fa3e8d7
·
verified ·
1 Parent(s): 7562b6e

Upload 5 files

Browse files
Dockerfile ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.11-slim
2
+
3
+ RUN apt-get update && apt-get install -y git build-essential && rm -rf /var/lib/apt/lists/*
4
+
5
+ RUN pip install --no-cache-dir freqtrade
6
+
7
+ WORKDIR /app
8
+
9
+ COPY user_data /app/user_data
10
+ COPY start.sh /app/start.sh
11
+ RUN chmod +x /app/start.sh
12
+
13
+ EXPOSE 7860
14
+
15
+ CMD ["/app/start.sh"]
start.sh ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -e
3
+ export PYTHONUNBUFFERED=1
4
+
5
+ freqtrade trade --config /app/user_data/config.json --strategy SimpleScalp
user_data/config.json ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://freqtrade.io/schemas/config.schema.json",
3
+ "runmode": "dry_run",
4
+ "dry_run": true,
5
+ "strategy": "SimpleScalp",
6
+ "timeframe": "1m",
7
+ "max_open_trades": 1,
8
+ "stake_currency": "USDT",
9
+ "stake_amount": 25,
10
+ "exchange": {
11
+ "name": "binance",
12
+ "key": "${BINANCE_API_KEY}",
13
+ "secret": "${BINANCE_API_SECRET}",
14
+ "ccxt_config": {
15
+ "enableRateLimit": true
16
+ }
17
+ },
18
+ "pairlists": [
19
+ {
20
+ "method": "StaticPairList"
21
+ }
22
+ ],
23
+ "pair_whitelist": [
24
+ "BTC/USDT",
25
+ "ETH/USDT"
26
+ ],
27
+ "api_server": {
28
+ "enabled": true,
29
+ "listen_ip_address": "0.0.0.0",
30
+ "listen_port": 7860,
31
+ "verbosity": "error",
32
+ "enable_openapi": true
33
+ }
34
+ }
user_data/freqai/config.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "enabled": false,
3
+ "model_training": {
4
+ "enabled": false
5
+ },
6
+ "prediction_parameters": {
7
+ "threshold": 0.75
8
+ }
9
+ }
user_data/strategies/SimpleScalp.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from freqtrade.strategy import IStrategy
2
+ import pandas as pd
3
+ import talib.abstract as ta
4
+
5
+ class SimpleScalp(IStrategy):
6
+ timeframe = "1m"
7
+ startup_candle_count = 50
8
+
9
+ minimal_roi = {"0": 0.003}
10
+ stoploss = -0.002
11
+
12
+ @property
13
+ def protections(self):
14
+ return [
15
+ {"method": "CooldownPeriod", "stop_duration_candles": 2},
16
+ {
17
+ "method": "StoplossGuard",
18
+ "lookback_period_candles": 20,
19
+ "trade_limit": 3,
20
+ "stop_duration_candles": 10
21
+ },
22
+ {
23
+ "method": "MaxDrawdown",
24
+ "lookback_period_candles": 1440,
25
+ "trade_limit": 1,
26
+ "stop_duration_candles": 1440,
27
+ "max_allowed_drawdown": 0.02
28
+ }
29
+ ]
30
+
31
+ def populate_indicators(self, df: pd.DataFrame, metadata: dict):
32
+ df["ema_fast"] = ta.EMA(df, 9)
33
+ df["ema_slow"] = ta.EMA(df, 21)
34
+ df["vol_mean"] = df["volume"].rolling(20).mean()
35
+ return df
36
+
37
+ def populate_buy_trend(self, df: pd.DataFrame, metadata: dict):
38
+ df.loc[
39
+ (df["ema_fast"] > df["ema_slow"]) &
40
+ (df["volume"] > df["vol_mean"]),
41
+ "buy"
42
+ ] = 1
43
+
44
+ def populate_sell_trend(self, df: pd.DataFrame, metadata: dict):
45
+ df.loc[df["ema_fast"] < df["ema_slow"], "sell"] = 1