safari
Creator
Creator
- ارسال ها
- 68
Python:
==============================
PYTHON FOREX DEVELOPER CHEAT SHEET
==============================
ENVIRONMENT & PROJECT SETUP
python --version
Check Python version
python -m venv venv
Create virtual environment
venv\Scripts\activate
Activate virtual environment (Windows)
pip install package_name
Install a package
pip install -r requirements.txt
Install dependencies from file
pip freeze > requirements.txt
Save project dependencies
==============================
ESSENTIAL LIBRARIES FOR FOREX
==============================
pip install pandas
pip install numpy
pip install matplotlib
pip install ta
pip install MetaTrader5
pip install ccxt
pip install yfinance
pip install scipy
pip install scikit-learn
pip install backtrader
pip install vectorbt
==============================
DATA HANDLING (PANDAS)
==============================
import pandas as pd
df = pd.read_csv("data.csv")
Load price data
df.head()
Show first rows
df.tail()
Show last rows
df.info()
Dataset info
df.describe()
Statistical summary
df['close']
Access column
df[['open','close']]
Multiple columns
df.iloc[0]
Access row by index
df.loc[10]
Access row by label
df['returns'] = df['close'].pct_change()
Calculate returns
df.dropna()
Remove missing values
df.fillna(0)
Replace missing values
df.sort_values("time")
Sort data
df.groupby("symbol")
Group by asset
==============================
NUMPY FOR FAST CALCULATIONS
==============================
import numpy as np
np.array([1,2,3])
np.mean(data)
Mean
np.std(data)
Standard deviation
np.diff(data)
Difference between values
np.log(data)
Log transformation
np.cumsum(data)
Cumulative sum
==============================
FOREX DATA FROM METATRADER5
==============================
import MetaTrader5 as mt5
mt5.initialize()
symbol = "EURUSD"
rates = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_M5, 0, 500)
mt5.shutdown()
Convert to dataframe
df = pd.DataFrame(rates)
==============================
TIMEFRAME CONSTANTS
==============================
mt5.TIMEFRAME_M1
mt5.TIMEFRAME_M5
mt5.TIMEFRAME_M15
mt5.TIMEFRAME_M30
mt5.TIMEFRAME_H1
mt5.TIMEFRAME_H4
mt5.TIMEFRAME_D1
==============================
TECHNICAL INDICATORS
==============================
SIMPLE MOVING AVERAGE
df['sma'] = df['close'].rolling(20).mean()
EXPONENTIAL MOVING AVERAGE
df['ema'] = df['close'].ewm(span=20).mean()
RSI
delta = df['close'].diff()
gain = delta.clip(lower=0)
loss = -delta.clip(upper=0)
avg_gain = gain.rolling(14).mean()
avg_loss = loss.rolling(14).mean()
rs = avg_gain / avg_loss
df['rsi'] = 100 - (100/(1+rs))
BOLLINGER BANDS
df['ma'] = df['close'].rolling(20).mean()
df['std'] = df['close'].rolling(20).std()
df['upper'] = df['ma'] + (df['std']*2)
df['lower'] = df['ma'] - (df['std']*2)
==============================
TRADING SIGNALS
==============================
BUY SIGNAL
df['buy'] = df['sma_short'] > df['sma_long']
SELL SIGNAL
df['sell'] = df['sma_short'] < df['sma_long']
CROSSOVER
df['signal'] = np.where(df['ema_fast'] > df['ema_slow'],1,-1)
==============================
BACKTESTING BASICS
==============================
df['strategy_return'] = df['signal'].shift(1) * df['returns']
df['equity'] = (1 + df['strategy_return']).cumprod()
==============================
RISK MANAGEMENT
==============================
pip_value = 10
lot_size = risk / stop_loss_pips / pip_value
risk = account_balance * 0.01
position_size = risk / stop_loss
==============================
PLOTTING CHARTS
==============================
import matplotlib.pyplot as plt
plt.plot(df['close'])
plt.plot(df['sma'])
plt.show()
Candlestick charts
pip install mplfinance
import mplfinance as mpf
mpf.plot(df, type='candle')
==============================
ORDER EXECUTION (MT5)
==============================
order = {
"action": mt5.TRADE_ACTION_DEAL,
"symbol": "EURUSD",
"volume": 0.1,
"type": mt5.ORDER_TYPE_BUY,
"price": mt5.symbol_info_tick("EURUSD").ask,
"deviation": 20,
"magic": 123456,
"comment": "python order",
"type_time": mt5.ORDER_TIME_GTC,
"type_filling": mt5.ORDER_FILLING_IOC,
}
mt5.order_send(order)
==============================
LOGGING TRADES
==============================
import logging
logging.basicConfig(filename="trades.log", level=logging.INFO)
logging.info("Buy executed")
==============================
SCHEDULING STRATEGY
==============================
import time
while True:
run_strategy()
time.sleep(60)
==============================
COMMON FOREX DATA STRUCTURE
==============================
time
open
high
low
close
tick_volume
spread
==============================
IMPORTANT PYTHON CONCEPTS
==============================
list comprehension
[x for x in data]
dictionary
config = {"symbol":"EURUSD","lot":0.1}
function
def strategy(data):
return signal
class trading_bot:
def run(self):
pass
==============================
PROJECT STRUCTURE (FOREX BOT)
==============================
project/
config.py
strategy.py
data_loader.py
indicators.py
risk_management.py
execution.py
backtest.py
main.py
==============================
تریدینگ ژورنال