Last active
August 18, 2021 10:04
-
-
Save fatherofluqmaan/f3e674eebfea5ef2662bf6b06f597fdd to your computer and use it in GitHub Desktop.
custom coding from the Strategy.py file. The code is only that which has been changed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"coinbasepro" : { | |
"api_url" : "https://api.pro.coinbase.com", | |
"api_key_file" : "coinbase.key", | |
"config" : { | |
"live" : 0, | |
"sellatloss" : 0, | |
"sellatresistance" : 0, | |
"buymaxsize" : 50, | |
"trailingstoploss" : -1.5, | |
"disablebullonly" : 1, | |
"disablebuynearhigh" : 0, | |
"disablebuymacd" : 1, | |
"disablebuyobv" : 0, | |
"disablebuyelderray" : 0, | |
"disablefailsafefibonaccilow" : 1, | |
"disableprofitbankreversal" : 1, | |
"disabletracker" : 1, | |
"autorestart" : 1, | |
"graphs" : 0, | |
"verbose" : 0, | |
"stats" : 0 | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2021-08-06 19:05:20-'gran:3600'--1INCH-EUR Margin : 5.5886% | |
2021-08-06 19:05:20-'gran:3600'--1INCH-GBP Margin : 5.4037% | |
2021-08-06 19:05:20-'gran:3600'--1INCH-USD Margin : 6.2945% | |
2021-08-06 19:05:20-'gran:3600'--AAVE-EUR Margin : 6.5140% | |
2021-08-06 19:05:20-'gran:3600'--AAVE-GBP Margin : 7.6709% | |
2021-08-06 19:05:20-'gran:3600'--AAVE-USD Margin : 19.8301% | |
2021-08-06 19:05:20-'gran:3600'--ADA-ETH Margin : -10.8460% | |
2021-08-06 19:05:20-'gran:3600'--ADA-EUR Margin : 8.9829% | |
2021-08-06 19:05:20-'gran:3600'--ADA-GBP Margin : 8.9639% | |
2021-08-06 19:05:20-'gran:3600'--ADA-USD Margin : 10.5291% | |
2021-08-06 19:05:20-'gran:3600'--ADA-USDC Margin : 10.4165% | |
2021-08-06 19:05:20-'gran:3600'--ALGO-USD Margin : 7.1416% | |
2021-08-06 19:05:20-'gran:3600'--AMP-USD Margin : 1.4409% | |
2021-08-06 19:05:20-'gran:3600'--ANKR-EUR Margin : 58.4682% | |
2021-08-06 19:05:20-'gran:3600'--ANKR-GBP Margin : 54.4286% | |
2021-08-06 19:05:20-'gran:3600'--ANKR-USD Margin : 57.5210% | |
2021-08-06 19:05:20-'gran:3600'--ATOM-BTC Margin : 5.7373% | |
2021-08-06 19:05:20-'gran:3600'--ATOM-USD Margin : 6.5611% | |
2021-08-06 19:05:20-'gran:3600'--BAL-BTC Margin : -11.1487% | |
2021-08-06 19:05:20-'gran:3600'--BAL-USD Margin : 17.6662% | |
2021-08-06 19:05:20-'gran:3600'--BAND-BTC Margin : 6.4078% | |
2021-08-06 19:05:20-'gran:3600'--BAND-EUR Margin : 11.9518% | |
2021-08-06 19:05:20-'gran:3600'--BAND-GBP Margin : 13.4908% | |
2021-08-06 19:05:20-'gran:3600'--BAND-USD Margin : 11.9591% | |
2021-08-06 19:05:20-'gran:3600'--BAT-ETH Margin : 7.3053% | |
2021-08-06 19:05:20-'gran:3600'--BAT-EUR Margin : 17.1194% | |
2021-08-06 19:05:20-'gran:3600'--BAT-USD Margin : 5.1580% | |
2021-08-06 19:05:20-'gran:3600'--BAT-USDC Margin : 13.7360% | |
2021-08-06 19:05:20-'gran:3600'--BCH-EUR Margin : 10.9907% | |
2021-08-06 19:05:20-'gran:3600'--BCH-GBP Margin : 5.1468% | |
2021-08-06 19:05:20-'gran:3600'--BCH-USD Margin : 15.2339% | |
2021-08-06 19:05:20-'gran:3600'--BNT-EUR Margin : 17.9804% | |
2021-08-06 19:05:20-'gran:3600'--BNT-GBP Margin : 11.4065% | |
2021-08-06 19:05:20-'gran:3600'--BNT-USD Margin : 11.3422% | |
2021-08-06 19:05:20-'gran:3600'--BTC-EUR Margin : 16.6203% | |
2021-08-06 19:05:20-'gran:3600'--BTC-GBP Margin : 15.5311% | |
2021-08-06 19:05:20-'gran:3600'--BTC-USD Margin : 17.8365% | |
2021-08-06 19:05:20-'gran:3600'--BTC-USDC Margin : 17.8723% | |
2021-08-06 19:05:20-'gran:3600'--BTC-USDT Margin : 18.0595% | |
2021-08-06 19:05:20-'gran:3600'--CGLD-EUR Margin : 5.9293% | |
2021-08-06 19:05:20-'gran:3600'--CHZ-EUR Margin : 6.2602% | |
2021-08-06 19:05:20-'gran:3600'--CHZ-GBP Margin : 6.2772% | |
2021-08-06 19:05:20-'gran:3600'--CHZ-USD Margin : 6.5908% | |
2021-08-06 19:05:20-'gran:3600'--CLV-GBP Margin : 29.0429% | |
2021-08-06 19:05:20-'gran:3600'--CLV-USD Margin : 17.8064% | |
2021-08-06 19:05:20-'gran:3600'--CLV-USDT Margin : 7.4884% | |
2021-08-06 19:05:20-'gran:3600'--COMP-BTC Margin : 14.5567% | |
2021-08-06 19:05:20-'gran:3600'--COMP-USD Margin : 8.2699% | |
2021-08-06 19:05:20-'gran:3600'--CRV-EUR Margin : 13.7718% | |
2021-08-06 19:05:20-'gran:3600'--CRV-GBP Margin : 12.5264% | |
2021-08-06 19:05:20-'gran:3600'--CRV-USD Margin : 6.2126% | |
2021-08-06 19:05:20-'gran:3600'--CTSI-USD Margin : 14.2355% | |
2021-08-06 19:05:20-'gran:3600'--CVC-USDC Margin : 5.4733% | |
2021-08-06 19:05:20-'gran:3600'--DASH-USD Margin : 9.7840% | |
2021-08-06 19:05:20-'gran:3600'--DNT-USDC Margin : 5.7237% | |
2021-08-06 19:05:20-'gran:3600'--DOGE-USD Margin : 9.7081% | |
2021-08-06 19:05:20-'gran:3600'--DOGE-USDT Margin : 10.8403% | |
2021-08-06 19:05:20-'gran:3600'--DOT-BTC Margin : 18.2761% | |
2021-08-06 19:05:20-'gran:3600'--DOT-EUR Margin : 27.5591% | |
2021-08-06 19:05:20-'gran:3600'--DOT-GBP Margin : 15.3918% | |
2021-08-06 19:05:20-'gran:3600'--DOT-USD Margin : 28.5158% | |
2021-08-06 19:05:20-'gran:3600'--DOT-USDT Margin : 28.0322% | |
2021-08-06 19:05:20-'gran:3600'--ENJ-USD Margin : 5.2545% | |
2021-08-06 19:05:20-'gran:3600'--EOS-EUR Margin : 5.3460% | |
2021-08-06 19:05:20-'gran:3600'--EOS-USD Margin : 5.6747% | |
2021-08-06 19:05:20-'gran:3600'--ETC-EUR Margin : 7.3028% | |
2021-08-06 19:05:20-'gran:3600'--ETC-GBP Margin : 7.2648% | |
2021-08-06 19:05:20-'gran:3600'--ETC-USD Margin : 7.2779% | |
2021-08-06 19:05:20-'gran:3600'--ETH-DAI Margin : 17.6186% | |
2021-08-06 19:05:20-'gran:3600'--ETH-EUR Margin : 16.3495% | |
2021-08-06 19:05:20-'gran:3600'--ETH-GBP Margin : 17.7202% | |
2021-08-06 19:05:20-'gran:3600'--ETH-USD Margin : 17.5565% | |
2021-08-06 19:05:20-'gran:3600'--ETH-USDC Margin : 17.2684% | |
2021-08-06 19:05:20-'gran:3600'--ETH-USDT Margin : 17.7093% | |
2021-08-06 19:05:20-'gran:3600'--FET-USD Margin : 12.3678% | |
2021-08-06 19:05:20-'gran:3600'--FIL-BTC Margin : 5.7358% | |
2021-08-06 19:05:20-'gran:3600'--FIL-EUR Margin : 12.8276% | |
2021-08-06 19:05:20-'gran:3600'--FIL-GBP Margin : 11.2325% | |
2021-08-06 19:05:20-'gran:3600'--FIL-USD Margin : 13.7727% | |
2021-08-06 19:05:20-'gran:3600'--FORTH-BTC Margin : -15.8947% | |
2021-08-06 19:05:20-'gran:3600'--FORTH-EUR Margin : 9.1285% | |
2021-08-06 19:05:20-'gran:3600'--FORTH-GBP Margin : 7.8909% | |
2021-08-06 19:05:20-'gran:3600'--FORTH-USD Margin : 7.4843% | |
2021-08-06 19:05:20-'gran:3600'--GRT-EUR Margin : 7.8825% | |
2021-08-06 19:05:20-'gran:3600'--GRT-GBP Margin : 6.1489% | |
2021-08-06 19:05:20-'gran:3600'--GRT-USD Margin : 7.0124% | |
2021-08-06 19:05:20-'gran:3600'--GTC-USD Margin : 33.3219% | |
2021-08-06 19:05:20-'gran:3600'--ICP-USD Margin : -16.8558% | |
2021-08-06 19:05:20-'gran:3600'--ICP-USDT Margin : -17.0511% | |
2021-08-06 19:05:20-'gran:3600'--KNC-USD Margin : 10.8306% | |
2021-08-06 19:05:20-'gran:3600'--LINK-BTC Margin : 12.1688% | |
2021-08-06 19:05:20-'gran:3600'--LINK-ETH Margin : 13.8419% | |
2021-08-06 19:05:20-'gran:3600'--LINK-EUR Margin : 32.3667% | |
2021-08-06 19:05:20-'gran:3600'--LINK-GBP Margin : 40.5802% | |
2021-08-06 19:05:20-'gran:3600'--LINK-USD Margin : 12.7266% | |
2021-08-06 19:05:20-'gran:3600'--LOOM-USDC Margin : 23.6151% | |
2021-08-06 19:05:20-'gran:3600'--LPT-USD Margin : 19.5913% | |
2021-08-06 19:05:20-'gran:3600'--LRC-USD Margin : 6.3962% | |
2021-08-06 19:05:20-'gran:3600'--LTC-EUR Margin : 11.4559% | |
2021-08-06 19:05:20-'gran:3600'--LTC-GBP Margin : 10.7420% | |
2021-08-06 19:05:20-'gran:3600'--LTC-USD Margin : 5.0593% | |
2021-08-06 19:05:20-'gran:3600'--MANA-ETH Margin : -15.1408% | |
2021-08-06 19:05:20-'gran:3600'--MASK-EUR Margin : 37.5328% | |
2021-08-06 19:05:20-'gran:3600'--MASK-GBP Margin : 40.3004% | |
2021-08-06 19:05:20-'gran:3600'--MASK-USD Margin : 11.7313% | |
2021-08-06 19:05:20-'gran:3600'--MASK-USDT Margin : 29.7817% | |
2021-08-06 19:05:20-'gran:3600'--MATIC-EUR Margin : 7.6311% | |
2021-08-06 19:05:20-'gran:3600'--MATIC-GBP Margin : 11.6159% | |
2021-08-06 19:05:20-'gran:3600'--MATIC-USD Margin : 11.9208% | |
2021-08-06 19:05:20-'gran:3600'--MIR-EUR Margin : 6.8021% | |
2021-08-06 19:05:20-'gran:3600'--MIR-USD Margin : 6.9521% | |
2021-08-06 19:05:20-'gran:3600'--MKR-USD Margin : 16.6361% | |
2021-08-06 19:05:20-'gran:3600'--MLN-USD Margin : 5.7465% | |
2021-08-06 19:05:20-'gran:3600'--NKN-USD Margin : 5.0283% | |
2021-08-06 19:05:20-'gran:3600'--NMR-BTC Margin : 27.7870% | |
2021-08-06 19:05:20-'gran:3600'--NMR-EUR Margin : 27.0712% | |
2021-08-06 19:05:20-'gran:3600'--NMR-GBP Margin : 23.6743% | |
2021-08-06 19:05:20-'gran:3600'--NMR-USD Margin : 29.2229% | |
2021-08-06 19:05:20-'gran:3600'--NU-EUR Margin : 5.3971% | |
2021-08-06 19:05:20-'gran:3600'--NU-GBP Margin : 7.2798% | |
2021-08-06 19:05:20-'gran:3600'--NU-USD Margin : 5.4475% | |
2021-08-06 19:05:20-'gran:3600'--OGN-USD Margin : 6.0013% | |
2021-08-06 19:05:20-'gran:3600'--OMG-EUR Margin : 5.4784% | |
2021-08-06 19:05:20-'gran:3600'--OMG-GBP Margin : 9.1772% | |
2021-08-06 19:05:20-'gran:3600'--OMG-USD Margin : 5.7465% | |
2021-08-06 19:05:20-'gran:3600'--QNT-USD Margin : 30.9567% | |
2021-08-06 19:05:20-'gran:3600'--REN-USD Margin : 8.8487% | |
2021-08-06 19:05:20-'gran:3600'--REP-BTC Margin : -9.5022% | |
2021-08-06 19:05:20-'gran:3600'--REP-USD Margin : -15.1577% | |
2021-08-06 19:05:20-'gran:3600'--RLC-USD Margin : 43.1236% | |
2021-08-06 19:05:20-'gran:3600'--RLY-EUR Margin : 21.6418% | |
2021-08-06 19:05:20-'gran:3600'--RLY-GBP Margin : 16.8330% | |
2021-08-06 19:05:20-'gran:3600'--RLY-USD Margin : 20.9559% | |
2021-08-06 19:05:20-'gran:3600'--RLY-USDT Margin : 21.0214% | |
2021-08-06 19:05:20-'gran:3600'--SKL-EUR Margin : 29.4982% | |
2021-08-06 19:05:20-'gran:3600'--SKL-GBP Margin : 33.0297% | |
2021-08-06 19:05:20-'gran:3600'--SKL-USD Margin : 29.7173% | |
2021-08-06 19:05:20-'gran:3600'--SNX-EUR Margin : 12.2610% | |
2021-08-06 19:05:20-'gran:3600'--SNX-GBP Margin : 12.2211% | |
2021-08-06 19:05:20-'gran:3600'--SNX-USD Margin : 13.3066% | |
2021-08-06 19:05:20-'gran:3600'--SOL-BTC Margin : 8.5385% | |
2021-08-06 19:05:20-'gran:3600'--SOL-EUR Margin : 5.0843% | |
2021-08-06 19:05:20-'gran:3600'--SOL-GBP Margin : 6.4726% | |
2021-08-06 19:05:20-'gran:3600'--SOL-USD Margin : 5.2843% | |
2021-08-06 19:05:20-'gran:3600'--SOL-USDT Margin : 6.8897% | |
2021-08-06 19:05:20-'gran:3600'--STORJ-USD Margin : 30.1087% | |
2021-08-06 19:05:20-'gran:3600'--SUSHI-ETH Margin : 6.7964% | |
2021-08-06 19:05:20-'gran:3600'--SUSHI-EUR Margin : 5.0587% | |
2021-08-06 19:05:20-'gran:3600'--SUSHI-USD Margin : 21.4124% | |
2021-08-06 19:05:20-'gran:3600'--TRB-BTC Margin : 8.2771% | |
2021-08-06 19:05:20-'gran:3600'--TRB-USD Margin : 16.5591% | |
2021-08-06 19:05:20-'gran:3600'--UMA-EUR Margin : 5.6529% | |
2021-08-06 19:05:20-'gran:3600'--UMA-GBP Margin : 5.8832% | |
2021-08-06 19:05:20-'gran:3600'--UMA-USD Margin : 5.0429% | |
2021-08-06 19:05:20-'gran:3600'--UNI-BTC Margin : 8.2700% | |
2021-08-06 19:05:20-'gran:3600'--UNI-USD Margin : 8.7472% | |
2021-08-06 19:05:20-'gran:3600'--WBTC-USD Margin : 17.6533% | |
2021-08-06 19:05:20-'gran:3600'--XLM-EUR Margin : 6.6374% | |
2021-08-06 19:05:20-'gran:3600'--XLM-USD Margin : 5.1117% | |
2021-08-06 19:05:20-'gran:3600'--XTZ-EUR Margin : 5.8926% | |
2021-08-06 19:05:20-'gran:3600'--XTZ-GBP Margin : 5.1123% | |
2021-08-06 19:05:20-'gran:3600'--XTZ-USD Margin : 5.1431% | |
2021-08-06 19:05:20-'gran:3600'--YFI-BTC Margin : -8.2711% | |
2021-08-06 19:05:20-'gran:3600'--YFI-USD Margin : 15.7667% | |
2021-08-06 19:05:20-'gran:3600'--ZEC-BTC Margin : 6.7428% | |
2021-08-06 19:05:20-'gran:3600'--ZEC-USD Margin : 13.2849% | |
2021-08-06 19:05:20-'gran:3600'--ZEC-USDC Margin : 6.2656% | |
2021-08-06 19:05:20-'gran:3600'--ZRX-EUR Margin : 17.6604% | |
2021-08-06 19:05:20-'gran:3600'--ZRX-USD Margin : 18.3575% |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
rm -f short-simbot-run.txt | |
dte=$(date +"%Y-%m-%d %T") | |
dt=$(date +"%Y-%m-%d") | |
c=$(< "pairs.txt" wc -l) | |
a="$c" | |
simst='2021-07-25' | |
simen='2021-08-05' | |
mkdir -p raw-sim-outputs | |
echo "Enter required granularity (86400,21600,3600,900)" | |
read -r grn | |
echo "Enter suffix for file outputs (run1,cc,robin,moon,HODL)" | |
read -r nme | |
echo "[+] Current config set" | |
echo -e "\n" | |
cat config.json | grep -B30 '.telegram' | awk -F'\"telegram' '{print $1}' | |
sleep 3 | |
echo "[+] Running simulations, total pairs count: $c" | |
while IFS= read -r PP; do | |
python3 pycryptobot.py --sim fast-sample --exchange coinbasepro --simstartdate "$simst" --simenddate "$simen" --granularity "$grn" --market "$PP" --disabletelegram 2> multi-simbot-run-"$nme".> cat multi-simbot-run-"$nme".txt | grep "Margin.*" | sed -e "s@^@$dte-'gran:$grn'--$PP @" >> multi-simbot-results-"$nme".txt | |
cat multi-simbot-run-"$nme".txt > "./raw-sim-outputs/$PP-$dt-rawout-$nme.txt" | |
let "--c" | |
echo "Simulations remaining: $c" | |
done < pairs.txt | |
sort -u multi-simbot-results-"$nme".txt >> multi-sim-results-"$nme"_"$dt".txt | |
fte=$(date +"%Y-%m-%d %T") | |
echo -e "$dte: All $a multi-simulations complete.\nDate Range: $simst to $simen, file suffix is $nme" | notify |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from datetime import datetime | |
from pandas import DataFrame | |
from models.PyCryptoBot import PyCryptoBot | |
from models.AppState import AppState | |
from models.helper.LogHelper import Logger | |
class Strategy(): | |
def __init__(self, app: PyCryptoBot=None, state: AppState=AppState, df: DataFrame=DataFrame, iterations: int=0) -> None: | |
if not isinstance(df, DataFrame): | |
raise TypeError("'df' not a Pandas dataframe") | |
if len(df) == 0: | |
raise ValueError("'df' is empty") | |
self._action = 'WAIT' | |
self.app = app | |
self.state = state | |
self._df = df | |
self._df_last = app.getInterval(df, iterations) | |
def isBuySignal(self, now: datetime = datetime.today().strftime('%Y-%m-%d %H:%M:%S'), price: float=0.0) -> bool: | |
# required technical indicators or candle sticks for buy signal strategy | |
required_indicators = [ 'ema12gtema26co', 'macdgtsignal', 'goldencross', 'obv_pc', 'eri_buy' ] | |
for indicator in required_indicators: | |
if indicator not in self._df_last: | |
raise AttributeError(f"'{indicator}' not in Pandas dataframe") | |
# buy signal exclusion (if disabled, do not buy within 3% of the dataframe close high) | |
if self.state.last_action == 'SELL' and self.app.disableBuyNearHigh() is True and (price > (self._df['close'].max() * 0.97)): | |
log_text = str(now) + ' | ' + self.app.getMarket() + ' | ' + self.app.printGranularity() + ' | Ignoring Buy Signal (price ' + str(price) + ' within 3% of high ' + str(self._df['close'].max()) + ')' | |
Logger.warning(log_text) | |
return False | |
# if EMA, MACD are disabled, do not buy | |
if self.app.disableBuyEMA() and self.app.disableBuyMACD() : | |
log_text = str(now) + ' | ' + self.app.getMarket() + ' | ' + self.app.printGranularity() + ' | EMA, MACD indicators are disabled ' | |
Logger.warning(log_text) | |
return False | |
# criteria for a buy signal 1 | |
if (bool(self._df_last['ema12gtema26co'].values[0]) is True or self.app.disableBuyEMA())\ | |
and (bool(self._df_last['macdgtsignal'].values[0]) is True or self.app.disableBuyMACD()) \ | |
and (bool(self._df_last['goldencross'].values[0]) is True or self.app.disableBullOnly()) \ | |
and (float(self._df_last['obv_pc'].values[0]) > -5 or self.app.disableBuyOBV()) \ | |
and (bool(self._df_last['eri_buy'].values[0]) is True or self.app.disableBuyElderRay()) \ | |
and self.state.last_action != 'BUY': # required for all strategies | |
Logger.debug('*** Buy Signal ***') | |
for indicator in required_indicators: | |
Logger.debug(f'{indicator}: {self._df_last[indicator].values[0]}') | |
Logger.debug(f'last_action: {self.state.last_action}') | |
return True | |
# criteria for buy signal 2 (optionally add additional buy singals) | |
elif (bool(self._df_last['ema12gtema26co'].values[0]) is True or self.app.disableBuyEMA())\ | |
and bool(self._df_last['macdgtsignalco'].values[0]) is True \ | |
and (bool(self._df_last['goldencross'].values[0]) is True or self.app.disableBullOnly()) \ | |
and (float(self._df_last['obv_pc'].values[0]) > -5 or self.app.disableBuyOBV()) \ | |
and (bool(self._df_last['eri_buy'].values[0]) is True or self.app.disableBuyElderRay()) \ | |
and self.state.last_action != 'BUY': # required for all strategies | |
Logger.debug('*** Buy Signal ***') | |
for indicator in required_indicators: | |
Logger.debug(f'{indicator}: {self._df_last[indicator].values[0]}') | |
Logger.debug(f'last_action: {self.state.last_action}') | |
return True | |
return False | |
def isSellSignal(self) -> bool: | |
# required technical indicators or candle sticks for buy signal strategy | |
required_indicators = [ 'ema12ltema26co', 'macdltsignal' ] | |
for indicator in required_indicators: | |
if indicator not in self._df_last: | |
raise AttributeError(f"'{indicator}' not in Pandas dataframe") | |
# criteria for a sell signal 1 | |
if bool(self._df_last['ema12ltema26co'].values[0]) is True \ | |
and (bool(self._df_last['macdltsignal'].values[0]) is True or self.app.disableBuyMACD()) \ | |
and self.state.last_action not in ['', 'SELL']: | |
Logger.debug('*** Sell Signal ***') | |
for indicator in required_indicators: | |
Logger.debug(f'{indicator}: {self._df_last[indicator].values[0]}') | |
Logger.debug(f'last_action: {self.state.last_action}') | |
return True | |
return False | |
def isSellTrigger(self, price: float=0.0, price_exit: float=0.0, margin: float=0.0, change_pcnt_high: float=0.0, obv_pc: float=0.0, macdltsignal: bool=False) -> bool: | |
# loss failsafe sell at fibonacci band | |
if self.app.disableFailsafeFibonacciLow() is False and self.app.allowSellAtLoss() and self.app.sellLowerPcnt() is None and self.state.fib_low > 0 and self.state.fib_low >= float(price): | |
log_text = '! Loss Failsafe Triggered (Fibonacci Band: ' + str(self.state.fib_low) + ')' | |
Logger.warning(log_text) | |
self.app.notifyTelegram(self.app.getMarket() + ' (' + self.app.printGranularity() + ') ' + log_text) | |
return True | |
# loss failsafe sell at trailing_stop_loss - ### CUSTOM EDITS 2021-08-06 ### | |
# "Changes to the criteria to only allow '--trailingstoploss' to be active when margin is above 3% or below -15%, but not in between, suggested by AP" | |
if self.app.trailingStopLoss() != None and change_pcnt_high < self.app.trailingStopLoss() and (self.app.allowSellAtLoss() or margin > 5 or margin < -15): | |
log_text = '! Trailing Stop Loss Triggered (< ' + str(self.app.trailingStopLoss()) + '%)' | |
Logger.warning(log_text) | |
self.app.notifyTelegram(self.app.getMarket() + ' (' + self.app.printGranularity() + ') ' + log_text) | |
return True | |
# loss failsafe sell at sell_lower_pcnt | |
elif self.app.disableFailsafeLowerPcnt() is False and self.app.allowSellAtLoss() and self.app.sellLowerPcnt() != None and margin < self.app.sellLowerPcnt(): | |
log_text = '! Loss Failsafe Triggered (< ' + str(self.app.sellLowerPcnt()) + '%)' | |
Logger.warning(log_text) | |
self.app.notifyTelegram(self.app.getMarket() + ' (' + self.app.printGranularity() + ') ' + log_text) | |
return True | |
# profit bank at sell_upper_pcnt | |
if self.app.disableProfitbankUpperPcnt() is False and self.app.sellUpperPcnt() != None and margin > self.app.sellUpperPcnt(): | |
log_text = '! Profit Bank Triggered (> ' + str(self.app.sellUpperPcnt()) + '%)' | |
Logger.warning(log_text) | |
self.app.notifyTelegram(self.app.getMarket() + ' (' + self.app.printGranularity() + ') ' + log_text) | |
return True | |
# profit bank when strong reversal detected | |
if self.app.disableProfitbankReversal() is False and margin > 3 and obv_pc < 0 and macdltsignal is True: | |
log_text = '! Profit Bank Triggered (Strong Reversal Detected)' | |
Logger.warning(log_text) | |
self.app.notifyTelegram(self.app.getMarket() + ' (' + self.app.printGranularity() + ') ' + log_text) | |
return True | |
# profit bank when strong reversal detected | |
if self.app.sellAtResistance() is True and margin >= 2 and price > 0 and price != price_exit: | |
log_text = '! Profit Bank Triggered (Selling At Resistance)' | |
Logger.warning(log_text) | |
if not (not self.app.allowSellAtLoss() and margin <= 0): | |
self.app.notifyTelegram(self.app.getMarket() + ' (' + self.app.printGranularity() + ') ' + log_text) | |
return True | |
return False | |
def isWaitTrigger(self, margin: float=0.0): | |
# configuration specifies to not sell at a loss ### CUSTOM EDITS 2021-08-06 ### | |
# Changes to the critera to only allow a sell signal to trigger a sale if the margin is under -10% and over 5%, suggested by AP" | |
if self.state.action == 'SELL' and not self.app.allowSellAtLoss() and (margin <= 5 and margin > -10): | |
log_text = '! Ignore Sell Signal (No Sell At Loss)' | |
Logger.warning(log_text) | |
return True | |
return False | |
def getAction(self): | |
if self.isBuySignal(): | |
return 'BUY' | |
elif self.isSellSignal(): | |
return 'SELL' | |
else: | |
return 'WAIT' | |
# COMMENTARY ON CHANGES: The two combined should only allow a maximum loss of 15%. If you are running simulations, remember to check the raw output to see where your margin was high and low, also check that all BUYS have SOLD, if not then the last line of the sim is important to show whether the hold has a positive or negative margin. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Not particularly, I would just raise the trigger to 5 rather than 3, I did a lot of testing and this would potentially just be due to this, ill change it in this, but I have other posts now that are more up to date.
However, we have been working with Mark Whittle to get some dev done in the bot to give us the configurable options that should be updating very soon, this will allow all of this to be configured rather than hard coded.