Skip to content

trading bot #4653

@joseph4-beeb

Description

@joseph4-beeb

'import time\nimport requests\nimport pandas as pd\nimport numpy as np\n\n# Replace with your Deriv API credentials\nAPI_URL = "https://api.deriv.com/api"\nAPI_TOKEN = "ewul"\nACCOUNT_ID = "***********"\n\n# Global variables for trading parameters\nSYMBOL = "R_100" # Example: Volatility 100 Index\nTRADE_AMOUNT = 10 # Trade amount in USD\nSTOP_LOSS = 10 # Stop loss in pips\nTAKE_PROFIT = 20 # Take profit in pips\nFAST_MA_PERIOD = 10 # Fast moving average period\nSLOW_MA_PERIOD = 20 # Slow moving average period\n\n# Function to fetch historical data\ndef get_historical_data(symbol, count=100):\n endpoint = f"{API_URL}/ticks_history"\n params = {\n "ticks_history": symbol,\n "count": count,\n "end": "latest",\n "style": "candles",\n "granularity": 60, # 1-minute candles\n }\n headers = {\n "Authorization": f"Bearer {***********ewul}",\n "Content-Type": "application/json",\n }\n response = requests.post(endpoint, json=params, headers=headers)\n data = response.json()\n if "candles" in data["history"]:\n df = pd.DataFrame(data["history"]["candles"])\n df["epoch"] = pd.to_datetime(df["epoch"], unit="s")\n df.set_index("epoch", inplace=True)\n return df\n else:\n raise Exception("Failed to fetch historical data")\n\n# Function to calculate moving averages\ndef calculate_moving_averages(df):\n df["fast_ma"] = df["close"].rolling(window=FAST_MA_PERIOD).mean()\n df["slow_ma"] = df["close"].rolling(window=SLOW_MA_PERIOD).mean()\n return df\n\n# Function to detect trading signals\ndef detect_signals(df):\n signals = []\n for i in range(1, len(df)):\n if df["fast_ma"].iloc[i] > df["slow_ma"].iloc[i] and df["fast_ma"].iloc[i - 1] <= df["slow_ma"].iloc[i - 1]:\n signals.append("buy")\n elif df["fast_ma"].iloc[i] < df["slow_ma"].iloc[i] and df["fast_ma"].iloc[i - 1] >= df["slow_ma"].iloc[i - 1]:\n signals.append("sell")\n else:\n signals.append("hold")\n df["signal"] = signals\n return df\n\n# Function to place a trade\ndef place_trade(signal):\n endpoint = f"{API_URL}/buy"\n params = {\n "buy": TRADE_AMOUNT,\n "contract_type": "CALL" if signal == "buy" else "PUT",\n "currency": "USD",\n "symbol": SYMBOL,\n "duration": 60, # 1 minute\n "duration_unit": "s",\n "stop_loss": STOP_LOSS,\n "take_profit": TAKE_PROFIT,\n }\n headers = {\n "Authorization": f"Bearer {***********ewul}",\n "Content-Type": "application/json",\n }\n response = requests.post(endpoint, json=params, headers=headers)\n if response.status_code == 200:\n print(f"Trade placed: {signal}")\n else:\n print(f"Failed to place trade: {response.text}")\n\n# Main trading loop\ndef trading_bot():\n while True:\n try:\n # Fetch historical data\n df = get_historical_data(SYMBOL)\n df = calculate_moving_averages(df)\n df = detect_signals(df)\n\n # Get the latest signal\n latest_signal = df["signal"].iloc[-1]\n\n # Place a trade based on the signal\n if latest_signal in ["buy", "sell"]:\n place_trade(latest_signal)\n\n # Wait before the next iteration\n time.sleep(60) # Wait for 1 minute\n except Exception as e:\n print(f"Error: {e}")\n time.sleep(60) # Wait before retrying\n\n# Run the trading bot'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions