PiXiu - A trading backtesting tool similar to MT4/MT5
Project description
PiXiu - A Chinese mythological creature that brings fortune to people.
PiXiu
A trading backtesting tool similar to MT4/MT5.
It has a standard set of API definitions, and backtesting code written using these APIs can be run on www.TradePython.com without changes.
Install
pip install pixiu
If you have problems installing TA-Lib, please refer to https://github.com/mrjbq7/ta-lib
How to use
Parameters :
-c/--testconfig test config
-n/--testname test name (in the test configuration file)
-s/--scriptpath script file
-o/--logpath log file
-p/--printlogtype print log type
-m/--multiprocessing multiprocessing mode
-r/--compare compare with the tags list
-t/--tag tag
-l/--datafile data file name
Basic
pixiu -c pixiu_sample.json -n testUSDCHF_TP -s pixiu_sample.py
pixiu -c pixiu_sample.json -n testUSDCHF_TP -s pixiu_sample.py
pixiu -c pixiu_sample.json -n testUSDCHF -s pixiu_sample2.py -o log.txt
Compare multiple strategies
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 -s ../EA/EA_V2.10.0.py -p report -t 2.10.0 -l ea2_7.json
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 -s ../EA/EA_V2.10.1.py -p report -t 2.10.1 -l ea2_7.json
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 -s ../EA/EA_V2.10.2.py -p report -t 2.10.2 -l ea2_7.json
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 -t 2.10.0 -r 2.10.1 2.10.2 -l ea2_7.json
Output:
+----+--------------------------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
| | | testAUDUSD_TP_Demo1 | testGBPUSD_TP_Demo1 | testNZDUSD_TP_Demo1 | testEURUSD_TP_Demo1 | testUSDCHF_TP_Demo1 | testUSDJPY_TP_Demo1 | testUSDCAD_TP_Demo1 | Total/Avg |
+----+--------------------------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
| 1 | Init Balance(2.10.0) | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 35000.0 / 5000.0 |
| 1 | Init Balance(2.10.1) | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 35000.0 / 5000.0 |
| 1 | Init Balance(2.10.2) | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 35000.0 / 5000.0 |
...
| 7 | Balance(2.10.0) | 4988.31 | 5064.61 | 5041.77 | 5071.6 | 4994.96 | 4996.97 | 4996.94 | 35155.16 / 5022.17 |
| 7 | Balance(2.10.1) | 5003.42 ↑ | 5061.26 ↓ | 5000.58 ↓ | 4965.65 ↓ | 5009.12 ↑ | 5033.44 ↑ | 4931.17 ↓ | 35004.64 / 5000.66 |
| 7 | Balance(2.10.2) | 4981.59 ↓ | 5076.74 ↑ | 5000.58 ↓ | 4985.02 ↓ | 5023.02 ↑ | 5029.35 ↑ | 4965.34 ↓ | 35061.64 / 5008.81 |
| 8 | Total Net Profit(2.10.0) | -11.69 | 64.61 | 41.77 | 71.6 | -5.05 | -3.02 | -3.05 | 155.17 / 22.17 |
| 8 | Total Net Profit(2.10.1) | 3.42 ↑ | 61.26 ↓ | 0.58 ↓ | -34.35 ↓ | 9.14 ↑ | 33.44 ↑ | -68.84 ↓ | 4.65 / 0.66 |
| 8 | Total Net Profit(2.10.2) | -18.41 ↓ | 76.74 ↑ | 0.58 ↓ | -14.98 ↓ | 23.04 ↑ | 29.35 ↑ | -34.68 ↓ | 61.64 / 8.81 |
| 9 | Total Net Profit Rate(2.10.0) | -0.23 % | 1.29 % | 0.84 % | 1.43 % | -0.1 % | -0.06 % | -0.06 % | 3.11 % / 0.44 % |
| 9 | Total Net Profit Rate(2.10.1) | 0.07 % ↑ | 1.23 % ↓ | 0.01 % ↓ | -0.69 % ↓ | 0.18 % ↑ | 0.67 % ↑ | -1.38 % ↓ | 0.09 % / 0.01 % |
| 9 | Total Net Profit Rate(2.10.2) | -0.37 % ↓ | 1.53 % ↑ | 0.01 % ↓ | -0.3 % ↓ | 0.46 % ↑ | 0.59 % ↑ | -0.69 % ↓ | 1.23 % / 0.18 % |
...
pixiu -c pixiu.json -n testUSDCAD_TP_Demo1 -t 2.10.0 -r 2.10.1 2.10.2 -l ea2_7.json
Output:
+----+--------------------------------------+---------------------+-------------------+
| | | testUSDCAD_TP_Demo1 | Total/Avg |
+----+--------------------------------------+---------------------+-------------------+
| 1 | Init Balance(2.10.0) | 5000.0 | 5000.0 / 5000.0 |
| 1 | Init Balance(2.10.1) | 5000.0 | 5000.0 / 5000.0 |
| 1 | Init Balance(2.10.2) | 5000.0 | 5000.0 / 5000.0 |
...
| 7 | Balance(2.10.0) | 4996.94 | 4996.94 / 4996.94 |
| 7 | Balance(2.10.1) | 4931.17 ↓ | 4931.17 / 4931.17 |
| 7 | Balance(2.10.2) | 4965.34 ↓ | 4965.34 / 4965.34 |
| 8 | Total Net Profit(2.10.0) | -3.05 | -3.05 / -3.05 |
| 8 | Total Net Profit(2.10.1) | -68.84 ↓ | -68.84 / -68.84 |
| 8 | Total Net Profit(2.10.2) | -34.68 ↓ | -34.68 / -34.68 |
| 9 | Total Net Profit Rate(2.10.0) | -0.06 % | -0.06 % / -0.06 % |
| 9 | Total Net Profit Rate(2.10.1) | -1.38 % ↓ | -1.38 % / -1.38 % |
| 9 | Total Net Profit Rate(2.10.2) | -0.69 % ↓ | -0.69 % / -0.69 % |
...
Test configuration file format
JSON format:
{
"accounts": {
"default": {
"balance": 10000.0,
"equity": 10000.0,
"margin": 0,
"free_margin": 10000.0,
"credit": 0.0,
"profit": 0.0,
"margin_level": 0,
"leverage": 100,
"currency": "USD",
"free_margin_mode": 0,
"stop_out_level": 0,
"stop_out_mode": 0,
"company": "TradePython.com",
"name": "PXTester",
"number": "000",
"server": "PXTester",
"trade_mode": 0,
"limit_orders": 500,
"margin_so_mode": 0,
"trade_allowed": true,
"trade_expert": 1,
"margin_so_call": 0.0,
"margin_so_so": 0.0,
"commission": 0.0
}
},
"symbols": {
"USDCHF": {
"symbol": "USDCHF",
"spread": 2,
"digits": 5,
"stop_level": 0,
"volume_min": 0.01,
"trade_contract_size": 100000,
"point": 0.00001,
"currency_profit": "CHF",
"currency_base": "USD",
"currency_margin": "USD"
}
},
"tests": {
"testUSDCHF": {
"symbol": "USDCHF",
"tick_data": "usdchf_m1_20210315-0415.csv",
"start_time": "2021-03-15",
"end_time": "2021-04-16",
"max_tick": 100,
"balance": 10000,
"leverage": 100,
"currency": "USD",
"account": "default",
"spread_point": 15
},
"testUSDCHF_TP": {
"symbol": "USDCHF",
"tick_data": {
"channel": "tradepython.com",
"api_token": "YOUR-API-TOKEN",
"source": "12345678@PixiuServer01",
"format": "json",
"period": 30,
"timeframe": "m1"
},
"max_tick": 100,
"balance": 10000,
"leverage": 100,
"currency": "USD",
"account": "default",
"spread_point": 15
},
"testUSDCHF_TP2": {
"symbol": "USDCHF",
"tick_data": {
"channel": "tradepython.com",
"api_token": "YOUR-API-TOKEN",
"source": {"type": "public", "name": "Demo1"},
"format": "json",
"period": 30,
"start_time": "2021-03-15",
"end_time": "2021-04-16",
"timeframe": "m1"
},
"start_time": "2021-03-15",
"end_time": "2021-04-16",
"max_tick": 100,
"balance": 10000,
"leverage": 100,
"currency": "USD",
"account": "default",
"spread_point": 15
}
}
}
Testing with csv files:
symbol: product
tick_data: tick data data file
start_time: start time
end_time: end time
max_tick: the maximum number of ticks to test, which can reduce the test time
balance: initial capital of the test account
leverage: leverage of the test account
account: the name of the test account (in the test profile accounts)
spread_point: spread
"testUSDCHF": {
"symbol": "USDCHF",
"tick_data": "usdchf_m1_20210315-0415.csv",
"start_time": "2021-03-15",
"end_time": "2021-04-16",
"max_tick": 100,
"balance": 10000,
"leverage": 100,
"currency": "USD",
"account": "default",
"spread_point": 15
}
Test with tradepython data test
source: Data account
account@account-server
Example:
12345678@PixiuServer01
or: {"type": "public", "name": "Demo1"}
type: public or private
name: Account name
period: data period (days)
Example:
30 - the last 30 days of data
timeframe: time frame, the following values
s1 - 1 second
m1 - 1 minute
m5 - 1 minute
m15 - 15 minutes
m30 - 30 minutes
h1 - 1 hour
h4 - 1 hour
d1 - 1 day
w1 - 1 week
mn1 - 1 month
"testUSDCHF_TP": {
...
"tick_data": {
"channel": "tradepython.com",
"api_token": "YOUR-API-TOKEN",
"source": "account@account-server",
"format": "json",
"period": 30,
"timeframe": "m1"
},
...
}
Script Samples
-
Buy or sell a product
errid, order_uid = Buy(volume=volume, price=Ask()) errid, order_uid = Sell(volume=0.01, price=Bid())
-
Modify an order
errid, order_uid = ModifyOrder(order_uid, stop_loss=stop_loss, take_profit=take_profit)
-
Close an order
errid, order_uid = CloseOrder(order_uid, price=Ask(), volume=volume)
-
Get the current open order UIDs
uids = GetOpenedOrderUIDs() for uid in uids: o = GetOrder(uid)
API
AccountEquity(self)
Returns the equity.
Returns:
The account equity.
AccountFreeMargin(self)
Returns the free margin.
Returns:
The free margin.
Ask(self, shift=0, symbol=None) -> float
Returns Ask price value for the default symbol with default timeframe and shift.
Parameters:
shift (int): Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
symbol (str): The symbol name.
If None returns current symbol.
Returns:
Ask price.
Bid(self, shift=0, symbol=None) -> float
Returns Bid price value for the default symbol with default timeframe and shift.
Parameters:
shift (int): Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
symbol (str): The symbol name.
If None returns current symbol.
Returns:
Bid price.
Buy(self, volume: float, type=0, price=None, stop_loss=None, take_profit=None, magic_number=None, symbol=None, slippage=None, arrow_color=None, expiration=None, tags=None) -> (<function NewType.<locals>.new_type at 0x7fe120629dc0>, <function NewType.<locals>.new_type at 0x7fe122ed0940>)
Open a long order.
Parameters:
volume (float): Number of lots.
type (OrderType): Order type.
price (float): Order price. If price is None, price = Ask().
stop_loss (float): Stop loss price.
take_profit (float): Take profit price.
magic_number (float): Order magic number.
symbol (float): Symbol for trading.
slippage (float): Maximum price slippage for trading.
arrow_color (float): Color of the opening arrow on the MT4/5 chart.
expiration (float): Order expiration time (for pending order only)
tags (dict): Order tags
Returns:
ErrorID: If 0 success.
OrderResult: The order result.
Sell(self, volume: float, type=0, price=None, stop_loss=None, take_profit=None, magic_number=None, symbol=None, slippage=None, arrow_color=None, expiration=None, tags=None) -> (<function NewType.<locals>.new_type at 0x7fe120629dc0>, <function NewType.<locals>.new_type at 0x7fe122ed0940>)
Open a short order.
Parameters:
volume (float): Number of lots.
type (OrderType): Order type.
price (float): Order price. If price is None, price = Bid().
stop_loss (float): Stop loss price.
take_profit (float): Take profit price.
magic_number (float): Order magic number.
symbol (float): Symbol for trading.
slippage (float): Maximum price slippage for trading.
arrow_color (float): Color of the opening arrow on the MT4/5 chart.
expiration (float): Order expiration time (for pending order only)
tags (dict): Order tags
Returns:
ErrorID: If 0 success.
OrderResult: The order result.
ModifyOrder(self, uid, price=None, stop_loss=None, take_profit=None, arrow_color=None, expiration=None, tags=None) -> (<function NewType.<locals>.new_type at 0x7fe120629dc0>, <function NewType.<locals>.new_type at 0x7fe122ed0940>)
Modify a order.
Parameters:
uid : The order UID.
price (float): New open price. (for pending order only)
stop_loss (float): New stop loss price.
take_profit (float): New take profit price.
arrow_color (float): New color of the opening arrow on the MT4/5 chart.
expiration (float): New order expiration time (for pending order only)
tags (dict): Order tags
Returns:
ErrorID: If 0 success.
OrderResult: The order result.
CloseOrder(self, uid, price, volume: float, slippage=None, arrow_color=None, tags=None) -> (<function NewType.<locals>.new_type at 0x7fe120629dc0>, <function NewType.<locals>.new_type at 0x7fe122ed0940>)
Close a order.
Parameters:
uid : The order UID.
price (float): Close price.
volume (float): Number of lots.
slippage (float): Maximum price slippage for trading.
arrow_color (float): New color of the opening arrow on the MT4/5 chart.
tags (dict): Order tags
Returns:
ErrorID: If 0 success.
OrderResult: The order result.
Close(self, shift=0, symbol=None) -> float
Returns Close price value for the default symbol with default timeframe and shift.
Parameters:
shift (int): Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
symbol (str): The symbol name.
If None returns current symbol.
Returns:
Close price.
DefaultTimeFrame(self)
Returns the default time frame.
GetAccount(self)
Returns the account data.
Returns:
The account data.
GetClosedOrderUIDs(self, symbol: str = None, scope: int = DataScope.EA)
Returns the UIDs of current closed orders.
Parameters:
symbol: The symbol name.
If None returns current symbol.
If '*' returns all symbols.
scope:
EA: The current ea (default).
ACCOUNT: The current account.
EA_VERSION: The current ea version.
Returns:
The uid list.
GetOpenedOrderUIDs(self, symbol: str = None, scope: int = DataScope.EA)
Returns the UIDs of current opened orders.
Parameters:
symbol: The symbol name.
If None returns current symbol.
If '*' returns all symbols.
scope:
EA: The current ea (default).
ACCOUNT: The current account.
EA_VERSION: The current ea version.
Returns:
The uid list.
GetPendingOrderUIDs(self, symbol: str = None, scope: int = DataScope.EA)
Returns the UIDs of current pending orders.
Parameters:
symbol: The symbol name.
If None returns current symbol.
If '*' returns all symbols.
scope:
EA: The current ea (default).
ACCOUNT: The current account.
EA_VERSION: The current ea version.
Returns:
The uid list.
GetOrder(self, order_uid: <function NewType.<locals>.new_type at 0x7fe122ed0940>)
Returns the order object.
Parameters:
order_uid (): The order uid.
Returns:
The order object.
GetParam(self, name, default=None)
Returns the EA parameter value.
Parameters:
name (): The EA parameter name.
default (int): The EA parameter default value.
Returns:
The EA parameter value.
GetSettings(self, name, default=None)
Returns the EA Settings value.
Parameters:
name (): The EA settings name.
default (int): The EA settings default value.
Returns:
The EA settings value.
GetSymbol(self, symbol=None)
Returns the symbol properties.
Parameters:
symbol (str): The symbol name.
Returns:
The symbol properties
GetSymbolData(self, symbol: str, timeframe: str, size: int)
Get a symbol data.
Parameters:
symbol (str): Symbol name.
timeframe (str): Timeframe. See the TimeFrame defining.
size (int): Maximum size.
Returns:
Symbol data
High(self, shift=0, symbol=None) -> float
Returns High price value for the default symbol with default timeframe and shift.
Parameters:
shift (int): Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
symbol (str): The symbol name.
If None returns current symbol.
Returns:
High price.
Low(self, shift=0, symbol=None) -> float
Returns Low price value for the default symbol with default timeframe and shift.
Parameters:
shift (int): Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
symbol (str): The symbol name.
If None returns current symbol.
Returns:
Low price.
Open(self, shift=0, symbol=None) -> float
Returns Open price value for the default symbol with default timeframe and shift.
Parameters:
shift (int): Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
symbol (str): The symbol name.
If None returns current symbol.
Returns:
Open price.
OrderStats(self, order_uids)
Returns the order statistics.
Parameters:
order_uids : the list of order uids.
Returns:
The order statistics.
StopTester(self, code: int = 0, message: str = None)
Stop the EA tester. (For tester only.)
Parameters:
code (int): Error code.
message (str): Error message.
Returns:
None
Symbol(self) -> str
Returns the current symbol name.
Returns:
The symbol name.
SymbolInfo(self, item, symbol=None, default=None)
Returns the symbol information.
Parameters:
item (str): The symbol item name.
symbol (str): The symbol name.
default (): The default value.
Returns:
The symbol information.
Time(self, shift=0, symbol=None) -> datetime.datetime
Returns time value for the default symbol with default timeframe and shift.
Parameters:
shift (int): Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
symbol (str): The symbol name.
If None returns current symbol.
Returns:
Time.
Volume(self, shift=0, symbol=None) -> float
Returns volume value for the default symbol with default timeframe and shift.
Parameters:
shift (int): Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
symbol (str): The symbol name.
If None returns current symbol.
Returns:
Volume price.
__init__(self)
Initialize self. See help(type(self)) for accurate signature.
iAD(self, symbol_data, shift=0)
Chaikin A/D Line (Volume Indicators)
Parameters:
symbol_data (object): The symbol data.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Chaikin A/D Line
iADX(self, symbol_data, timeperiod, shift=0)
Average Directional Movement Index (Momentum Indicators)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Average Directional Movement Index
iATR(self, symbol_data, timeperiod, shift=0)
Average True Range (Volatility Indicators)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Average True Range
iBands(self, symbol_data, timeperiod, nbdevup, nbdevdn, matype, shift=0)
Bollinger Bands (Overlap Studies)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
nbdevup (int): 2
nbdevdn (int): 2
ma_type: 0 (Simple Moving Average) ,For details see the TA-LIB
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Bollinger Bands
iCCI(self, symbol_data, timeperiod, shift=0)
Commodity Channel Index (Momentum Indicators)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Commodity Channel Index
iChaikin(self, symbol_data, fastperiod, slowperiod, shift=0)
Chaikin A/D Oscillator (Volume Indicators)
Parameters:
symbol_data (object): The symbol data.
fastperiod (int): The fast period.
slowperiod (int): The low period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Chaikin A/D Oscillator
iDEMA(self, symbol_data, timeperiod, shift=0)
Double Exponential Moving Average (Overlap Studies)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Double Exponential Moving Average
iMA(self, price_data, period, ma_type, shift=0)
Calculates the Moving Average indicator and returns its value.
Parameters:
price_data (object): The price data. (Close, Open, Low, etc...)
period (int): Averaging period for calculation.
ma_type: 0 (Simple Moving Average) ,For details see the TA-LIB
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Moving average value.
iMACD(self, symbol_data, fastperiod, slowperiod, signalperiod, shift=0)
Moving Average Convergence/Divergence (Momentum Indicators)
Parameters:
symbol_data (object): The symbol data.
fastperiod (int): The fast period.
slowperiod (int): The slow period.
signalperiod (int): The signal period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Moving Average Convergence/Divergence
iMFI(self, symbol_data, timeperiod, shift=0)
Money Flow Index (Momentum Indicators)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Money Flow Index
iMomentum(self, symbol_data, timeperiod, shift=0)
Momentum (Momentum Indicators)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Momentum
iOBV(self, symbol_data, shift=0)
On Balance Volume (Volume Indicators)
Parameters:
symbol_data (object): The symbol data.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
On Balance Volume
iRSI(self, symbol_data, timeperiod, shift=0)
Relative Strength Index (Momentum Indicators)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Relative Strength Index
iSAR(self, symbol_data, acceleration, maximum, shift=0)
Parabolic SAR (Overlap Studies)
Parameters:
symbol_data (object): The symbol data.
acceleration (int): 0.02
maximum (int): 0.2
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Parabolic SAR
iStdDev(self, symbol_data, timeperiod, nbdev, shift=0)
Standard Deviation (Statistic Functions)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
nbdev (int): 1
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Standard Deviation
iStochastic(self, symbol_data, fastk_period, slowk_period, slowk_matype, slowd_period, slowd_matype, shift=0)
Stochastic (Momentum Indicators)
Parameters:
symbol_data (object): The symbol data.
fastk_period (int): 5
slowk_period (int): 3
slowk_matype (int): 0
slowd_period (int): 3
slowd_matype (int): 0
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Stochastic
iTEMA(self, symbol_data, timeperiod, shift=0)
Triple Exponential Moving Average (Overlap Studies)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Triple Exponential Moving Average
iWPR(self, symbol_data, timeperiod, shift=0)
Williams' %R (Momentum Indicators)
Parameters:
symbol_data (object): The symbol data.
timeperiod (int): The time period.
shift: Index of the value taken from the buffer
(shift relative to the current the given amount of periods ago).
Returns:
Williams' %R
WaitCommand(self, uid, timeout=120)
Waiting for a asynchronous command execution。
Parameters:
uid : The command UID.
timeout : Timeout (seconds)
Returns:
ErrorID: If 0 success.
CommandResult: If failed returns None.
AcquireLock(self, name, timeout=60) -> bool:
Acquire a lock
Parameters:
name : The lock name
timeout : Lock timeout (seconds)
Returns:
If True success.
ReleaseLock(self, name):
Release a lock
Parameters:
name : The lock name
Plot(self, series):
Plot
Parameters:
series
DeleteData(self, name, scope: int = DataScope.EA) -> ErrorID:
Delete data
Parameters:
name : The data name
scope : The data scope (current EA settings, EA version, EA, Account)
Returns:
The errorid.
LoadData(self, name, scope: int = DataScope.EA, format='json'):
Load data
Parameters:
name : The data name
scope : The data scope (current EA settings, EA version, EA, Account)
format: Only support JSON.
Returns:
data.
SaveData(self, name, data, scope: int = DataScope.EA, format='json') -> ErrorID:
Save data
Parameters:
name : The data name
scope : The data scope (current EA settings, EA version, EA, Account)
format: Only support JSON.
Returns:
The errorid.
Notify(self, message) -> ErrorID:
Send a notification
Parameters:
message: The content of notification
Returns:
The errorid.
[2023-12-07]
Version:
Package:
pixiu: 0.109.*.20231207
Descriptions:
1.ea_taster.py:
1) __close_order__
Fix profit calculation error when closing partitioned volumes
[2023-11-16]
Version:
Package:
pixiu: 0.108.*.20231116
Descriptions:
1.main.py:
1) gen_report_row:
Add compare_item['value'] checking
[2023-11-15]
Version:
Package:
pixiu: 0.107.*.20231115
Descriptions:
1.ea_tester.py:
1) __close_order__:
Fix new order open_price error
2.ts_order_market.py:
1) Add from_uid, to_uid test
[2023-11-14]
Version:
Package:
pixiu: 0.106.*.20231114
Descriptions:
1.ea_tester.py:
1) Fix order_to_ndarray KeyError: 'magic_number'
2) __close_order__:
Change order comment from 'close by #xxx' to 'from #xxx'
Remove the tags of closed order
3) __add_market_order__:
Add comment checking
2.ts_order_market.py:
1) Add close partial order test
[2023-06-23]
Version:
Package:
pixiu: 0.105.*.20230623
Descriptions:
1.ea_tester.py:
1) Add tick_test_start_index in params
2) Add test_period in pixiu config file
[2023-03-13]
Version:
Package:
pixiu: 0.104.*.20230313
Descriptions:
1.pxtester.py:
1) Add get_tick_data_from_yfinance, covert_yfinance_data_to_json
[2023-02-26]
Version:
Package:
pixiu: 0.103.*.20230226
Descriptions:
1.main.py:
1) start_mp, start_sp: results add exception
[2023-02-28]
Version:
Package:
pixiu: 0.102.*.20230228
Descriptions:
1.ea_tester.py:
1) Remove parse_script, get_script_init_settings
2) execute_: Add ValidScriptSettings Error
3) __init__: self.log_file = open(self.log_path, mode='wt')
[2023-02-22]
Version:
Package:
pixiu: 0.101.*.20230222
Descriptions:
1.ea_tester.py:
1) Add script_settings output
[2023-02-12]
Version:
Package:
pixiu: 0.100.*.20230212
Descriptions:
1.ea_tester.py:
1) Fix get_api missing error.
[2023-01-11]
Version:
Package:
pixiu: 0.99.*.20230111
Descriptions:
1.ea_tester.py:
1) Fix self.current_tick_index exception in execute_(self, ticket)
[2022-12-28]
Version:
Package:
pixiu: 0.98.*.20221228
Descriptions:
1.Add global API:
PX_InitScriptSettings, PX_ValidScriptSettings
Call order:
PX_InitScriptSettings -> AddChart/AddParam -> PX_ValidScriptSettings
2.Add ts_settings.py
[2022-12-19]
Version:
Package:
pixiu: 0.97.*.20221219
Descriptions:
1.Add global API:
PX_InitScriptSettings, PX_ValidScriptSettings
Call order:
PX_InitScriptSettings -> AddChart/AddParam -> PX_ValidScriptSettings
[2022-12-07]
Version:
Package:
pixiu: 0.96.*.20221207
Descriptions:
1.api.py:
Add AddChart, AddParam
[2022-12-06]
Version:
Package:
pixiu: 0.95.*.20221206
Descriptions:
1.api.py:
Add AddChart, AddParam
[2022-12-05]
Version:
Package:
pixiu: 0.94.*.20221205
Descriptions:
1.pxtester.py: 1) Replace json with json5
[2022-12-02]
Version:
Package:
pixiu: 0.93.*.20221202
Descriptions:
1.pxtester.py: 1) Fix get_data_info tzinfo error
[2022-11-04]
Version:
Package:
pixiu: 0.92.*.20221104
Descriptions:
1.api_base.py:
1) Add _safe_import
[2022-10-25]
Version:
Package:
pixiu: 0.91.*.20221025
Descriptions:
1.ea_tester.py:
1)Add execute_script
[2022-08-26]
Version:
Package:
pixiu: 0.90.*.20220826
Descriptions:
1.test_pixiu.py:
1) test_ea_tester_func_base: datetime.utcfromtimestamp(new_a['t'][idx])
2) test_ea_tester_func_indicators: datetime.utcfromtimestamp(new_a['t'][idx])
2.ts_symbol_data.py:
1) Change
assertEqual(df['time'][valid_shift], get_timeframe_value_by_time(timeframe, c_time, "time").timestamp(),
f'@ {c_time}, {timeframe}')
to
assertEqual(df['time'][valid_shift], get_timeframe_value_by_time(timeframe, c_time, "time").replace(tzinfo=timezone('UTC')).timestamp(),
f'@ {c_time}, {timeframe}')
3.setup.py:
1) Add requires: dash, plotly
[2022-08-02]
Version:
Package:
pixiu: 0.89.*.20220802
Descriptions:
1.ea_tester.py:
1) Fix calculate_return_ratio return value error
[2022-07-28]
Version:
Package:
pixiu: 0.88.*.20220728
Descriptions:
1.pxtester.py:
1) Change datetime.fromtimestamp to datetime.utcfromtimestamp
2.account.py:
1) Change datetime.fromtimestamp to datetime.utcfromtimestamp
3.order.py:
1) Change datetime.fromtimestamp to datetime.utcfromtimestamp
4.symbol.py:
1) Change datetime.fromtimestamp to datetime.utcfromtimestamp
5.ea_tester.py:
1) Change datetime.fromtimestamp to datetime.utcfromtimestamp
6.test_pixiu.py:
1) Change datetime.fromtimestamp to datetime.utcfromtimestamp
[2022-07-18]
Version:
Package:
pixiu: 0.87.*.20220718
Descriptions:
1. Fix gen_report_row total_value bug
[2022-06-20]
Version:
Package:
pixiu: 0.86.*.20220620
Descriptions:
1.Add ea_tester_graph
support dash + plotly
[2022-05-18]
Version:
Package:
pixiu: 0.85.*.20220518
Descriptions:
1.ea_tester.py:
1) Fix calculate_returns calculation error
[2022-04-26]
Version:
Package:
pixiu: 0.84.*.20220426
Descriptions:
1.tester_api_v1.py:
1) Fix __get_indicator__ cache_name error
[2022-04-24]
Version:
Package:
pixiu: 0.83.*.20220424
Descriptions:
1.symbol.py:
1) SymbolIndicator, SymbolPrice, SymbolTime, SymbolData add getitem_index
2) SymbolPrice add:
< __lt__(self, other)
> __gt__(self, other)
<= __le__(self, other)
>= __ge__(self, other)
== __eq__(self, other)
!= __ne__(self, other)
+ __add__(self, other)
– __sub__(self, other)
* __mul__(self, other)
/ __truediv__(self, other)
// __floordiv__(self, other)
% __mod__(self, other)
** __pow__(self, other)
[2022-04-23]
Version:
Package:
pixiu: 0.82.*.20220423
Descriptions:
1.symbol.py:
1) Add to_dataframe
2.api_base.py:
1) env_dict add _iter_unpack_sequence_ # [abs(value - level) < ave for _, level in levels]
3.ea_node_transformer.py:
1) Add EARestrictingNodeTransformer
[2022-04-22]
Version:
Package:
pixiu: 0.81.*.20220422
Descriptions:
1.ea_tester.py:
1) Change min_volume initial value to None
2.pxtester.py:
1) Fix on_end_execute item['value'] None error
3.main.py:
1) Fix gen_report_row item['value'] None error
[2022-04-21]
Version:
Package:
pixiu: 0.80.*.20220421
Descriptions:
1.ea_tester.py:
1) report add max_volume
[2022-04-20]
Version:
Package:
pixiu: 0.79.*.20220420
Descriptions:
1.ea_tester.py:
1) Fix __valid_order__ pending order error
[2022-04-18]
Version:
Package:
pixiu: 0.78.*.20220418
Descriptions:
1.api_base.py:
1) env_dictAdd property
[2022-04-07]
Version:
Package:
pixiu: 0.77.*.20220407
Descriptions:
1.ea_tester.py:
1) Fix calculate_return_ratio error
2) Add sortino_ratio
[2022-04-06]
Version:
Package:
pixiu: 0.76.*.20220406
Descriptions:
1.ea_tester.py:
1) Add percent_str_to_float
2) Add calculate_sharpe_ratio
[2022-04-03]
Version:
Package:
pixiu: 0.75.*.20220403
Descriptions:
1.ea_tester.py:
1) Add margin_so_so, margin_so_call checking
[2022-04-02]
Version:
Package:
pixiu: 0.74.*.20220402
Descriptions:
1.ea_tester.py:
Fix modify_order order_log error
[2022-03-30]
Version:
Package:
pixiu: 0.73.*.20220330
Descriptions:
1.ea_tester.py:
__remove_pending_order__ pop add None
2.Add set:
env_dict["set"]
[2022-03-10]
Version:
Package:
pixiu: 0.72.*.20220310
Descriptions:
1.ts_order_buylimit.py,ts_order_buystop.py,ts_order_selllimit.py,ts_order_sellstop.py:
Add check order.status
2.api.py:
Add GetSettings
[2022-03-09]
Version:
Package:
pixiu: 0.71.*.20220309
Descriptions:
1.defines.py:
Add OrderStatus
2.order.py:
Add status
[2022-03-05]
Version:
Package:
pixiu: 0.70.*.20220305
Descriptions:
1.ea_tester.py:
1) __process_order__: Add parameters: ask, last_ask, bid, last_bid
2) __calculate_profit__: Update calculation m
3) __valid_order__: Add parameters: ask, bid
[2022-03-04]
Version:
Package:
pixiu: 0.69.*.20220304
Descriptions:
1.Add PositionType
2.Fix __valid_order__ pending order error
3.Fix __close_order__ close_time error
[2022-03-02]
Version:
Package:
pixiu: 0.68.*.20220301
Descriptions:
1.ea_tester.py: Add volume_precision
[2022-03-01]
Version:
Package:
pixiu: 0.67.*.20220301
Descriptions:
1.fix __remove_order__ pop bug
[2022-02-26]
Version:
Package:
pixiu: 0.66.*.20220226
Descriptions:
1.Add is_dirty method to order
2.API: add RunMode, CloseMultiOrders
3.Defines: add RunModeValue
[2022-02-24]
Version:
Package:
pixiu: 0.65.*.20220224
Descriptions:
1.Change error name: EID_EAT_MARGIN_CALL -> EID_EAT_NOT_ENOUGH_MONEY
[2022-02-22]
Version:
Package:
pixiu: 0.64.*.20220222
Descriptions:
1.Add tags in order data
[2022-02-11]
Version:
Package:
pixiu: 0.63.*.20220211
Descriptions:
1.Add new testing 'test_ea_tester_func_load_lib'
[2022-02-10]
Version:
Package:
pixiu: 0.62.*.20220210
Descriptions:
1.Add library function
###[lib|library]=["PriceAction==0.1.0"]
2.ea_base.py:
1)Add method parse_script
[2022-02-09]
Version:
Package:
pixiu: 0.61.*.20220209
Descriptions:
1.Remove OrderScope, using DataScope
[2021-12-14]
Version:
Package:
pixiu: 0.60.*.20211114
Descriptions:
1.EA script support timezone
2.ts_base: Add test_timezone
[2021-12-11]
Version:
Package:
pixiu: 0.59.*.20211111
Descriptions:
1.Support auto loading script from tag
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 -s ../Test/Test_V2.11.18-3x.py -p report -t 2.11.18-3x -l ea2_7_211209.json
or
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 -s ../Test -p report -t 2.11.18-3x -l ea2_7_211209.json
[2021-11-26]
Version:K
Package:
pixiu: 0.58.*.20211126
Descriptions:
1.Update README.md/README.zh.md
2.ea_tester.py:
Modify notify output format
[2021-11-25]
Version:
Package:
pixiu: 0.57.*.20211125
Descriptions:
1.Update README.md/README.zh.md
2.ea_tester.py:
Modify notify output format
[2021-11-24]
Version:
Package:
pixiu: 0.56.*.20211124
Descriptions:
1.api.py, tester_api_v1.py:
Add Notify
[2021-11-16]
Version:
Package:
pixiu: 0.55.*.20211116
Descriptions:
1.Fix setup.py requires.
[2021-11-15]
Version:
Package:
pixiu: 0.54.0.20211115
Descriptions:
1.api.py, tester_api_v1.py:
Add DeleteData, LoadData, SaveData
Buy/Sell/ModifyOrder/CloseOrder add argument tags
2.tests:
ts_base.py add data test
ts_order_market.py add tags
3.api_base.py:
Add uuid, hashlib
[2021-11-14]
Version:
Package:
pixiu: 0.53.0.20211114
Descriptions:
1.api.py, tester_api_v1.py:
Ask, Bid, Time, Volume, Open, Close, Low, High add symbol
2.order.py:
Add from_uid, to_uid, group_uid, tags
[2021-11-13]
Version:
Package:
pixiu: 0.52.0.20211113
Descriptions:
1.Add arguments :
--compare-wit-tag/-r, --tag/-t, --datafile/-l
sample:
1)
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 -s ../EA/EA_V2.10.0.py -p report -t 2.10.0 -l ea2_7.json
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 -s ../EA/EA_V2.10.1.py -p report -t 2.10.1 -l ea2_7.json
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 -s ../EA/EA_V2.10.2.py -p report -t 2.10.2 -l ea2_7.json
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 -t 2.10.0 -r 2.10.1 2.10.2 -l ea2_7.json
+----+--------------------------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
| | | testAUDUSD_TP_Demo1 | testGBPUSD_TP_Demo1 | testNZDUSD_TP_Demo1 | testEURUSD_TP_Demo1 | testUSDCHF_TP_Demo1 | testUSDJPY_TP_Demo1 | testUSDCAD_TP_Demo1 | Total/Avg |
+----+--------------------------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
| 1 | Init Balance(2.10.0) | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 35000.0 / 5000.0 |
| 1 | Init Balance(2.10.1) | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 35000.0 / 5000.0 |
| 1 | Init Balance(2.10.2) | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 5000.0 | 35000.0 / 5000.0 |
...
| 7 | Balance(2.10.0) | 4988.31 | 5064.61 | 5041.77 | 5071.6 | 4994.96 | 4996.97 | 4996.94 | 35155.16 / 5022.17 |
| 7 | Balance(2.10.1) | 5003.42 ↑ | 5061.26 ↓ | 5000.58 ↓ | 4965.65 ↓ | 5009.12 ↑ | 5033.44 ↑ | 4931.17 ↓ | 35004.64 / 5000.66 |
| 7 | Balance(2.10.2) | 4981.59 ↓ | 5076.74 ↑ | 5000.58 ↓ | 4985.02 ↓ | 5023.02 ↑ | 5029.35 ↑ | 4965.34 ↓ | 35061.64 / 5008.81 |
| 8 | Total Net Profit(2.10.0) | -11.69 | 64.61 | 41.77 | 71.6 | -5.05 | -3.02 | -3.05 | 155.17 / 22.17 |
| 8 | Total Net Profit(2.10.1) | 3.42 ↑ | 61.26 ↓ | 0.58 ↓ | -34.35 ↓ | 9.14 ↑ | 33.44 ↑ | -68.84 ↓ | 4.65 / 0.66 |
| 8 | Total Net Profit(2.10.2) | -18.41 ↓ | 76.74 ↑ | 0.58 ↓ | -14.98 ↓ | 23.04 ↑ | 29.35 ↑ | -34.68 ↓ | 61.64 / 8.81 |
| 9 | Total Net Profit Rate(2.10.0) | -0.23 % | 1.29 % | 0.84 % | 1.43 % | -0.1 % | -0.06 % | -0.06 % | 3.11 % / 0.44 % |
| 9 | Total Net Profit Rate(2.10.1) | 0.07 % ↑ | 1.23 % ↓ | 0.01 % ↓ | -0.69 % ↓ | 0.18 % ↑ | 0.67 % ↑ | -1.38 % ↓ | 0.09 % / 0.01 % |
| 9 | Total Net Profit Rate(2.10.2) | -0.37 % ↓ | 1.53 % ↑ | 0.01 % ↓ | -0.3 % ↓ | 0.46 % ↑ | 0.59 % ↑ | -0.69 % ↓ | 1.23 % / 0.18 % |
...
pixiu -c pixiu.json -n testUSDCAD_TP_Demo1 -t 2.10.0 -r 2.10.1 2.10.2 -l ea2_7.json
+----+--------------------------------------+---------------------+-------------------+
| | | testUSDCAD_TP_Demo1 | Total/Avg |
+----+--------------------------------------+---------------------+-------------------+
| 1 | Init Balance(2.10.0) | 5000.0 | 5000.0 / 5000.0 |
| 1 | Init Balance(2.10.1) | 5000.0 | 5000.0 / 5000.0 |
| 1 | Init Balance(2.10.2) | 5000.0 | 5000.0 / 5000.0 |
...
| 7 | Balance(2.10.0) | 4996.94 | 4996.94 / 4996.94 |
| 7 | Balance(2.10.1) | 4931.17 ↓ | 4931.17 / 4931.17 |
| 7 | Balance(2.10.2) | 4965.34 ↓ | 4965.34 / 4965.34 |
| 8 | Total Net Profit(2.10.0) | -3.05 | -3.05 / -3.05 |
| 8 | Total Net Profit(2.10.1) | -68.84 ↓ | -68.84 / -68.84 |
| 8 | Total Net Profit(2.10.2) | -34.68 ↓ | -34.68 / -34.68 |
| 9 | Total Net Profit Rate(2.10.0) | -0.06 % | -0.06 % / -0.06 % |
| 9 | Total Net Profit Rate(2.10.1) | -1.38 % ↓ | -1.38 % / -1.38 % |
| 9 | Total Net Profit Rate(2.10.2) | -0.69 % ↓ | -0.69 % / -0.69 % |
...
[2021-11-11]
Version:
Package:
pixiu: 0.51.0.20211111
Descriptions:
1.api_base:
Add build-in function: max, min, all, any, ascii, bin, chr, divmod, enumerate, filter, format, hex, next, oct, ord, pow, reversed, sorted, sum
2.main.py:
Add argument: multiprocessing
[2021-10-26]
Version:
Package:
pixiu: 0.50.0.20211026
Descriptions:
1.ea_tester.py:
1) Fix report currency bug
[2021-10-24]
Version:
Package:
pixiu: 0.49.0.20211024
Descriptions:
1.Using process pool
[2021-10-23]
Version:
Package:
pixiu: 0.48.0.20211023
Descriptions:
1.Add support multiple test names:
pixiu -c pixiu.json -n testAUDUSD_TP_Demo1 testGBPUSD_TP_Demo1 testNZDUSD_TP_Demo1 testEURUSD_TP_Demo1 testUSDCHF_TP_Demo1 testUSDJPY_TP_Demo1 testUSDCAD_TP_Demo1 ...
[2021-10-19]
Version:
Package:
pixiu: 0.47.0.20211019
Descriptions:
1.ea_tester.py:
1) Fix report total_net_profit_rate error.
2.pxtester.py:
1) parse_test_config: Add custom account
[2021-10-18]
Version:
Package:
pixiu: 0.46.0.20211018
Descriptions:
1.ea_tester.py:
1) Fix modify_order bug, if take_profit or stop_loss is None
[2021-10-16]
Version:
Package:
pixiu: 0.45.0.20211016
Descriptions:
1.pxtester.py:
1) Report add win rate
[2021-10-15]
Version:
Package:
pixiu: 0.44.0.20211015
Descriptions:
1.pxtester.py:
1) Add argument: print_log_type = account|order|ea|report
[2021-10-14]
Version:
Package:
pixiu: 0.43.0.20211014
Descriptions:
1.ea_tester.py:
1) Fix bugs: __process_order__, close_all_orders call close_order error
2) Fix bugs: max_drawdown calculation
2.pxtester.py:
1) on_end_execute: report output format
[2021-08-25]
Version:
Package:
pixiu: 0.42.0.20210825
Descriptions:
1.ea_tester.py:
1) __add_market_order__:
new_order['comment'] = f"cuid#{new_order['uid']}|"
to
new_order['comment'] = f"uid#{new_order['uid']}|"
[2021-08-06]
Version:
Package:
pixiu: 0.41.0.20210806
Descriptions:
1.API 1
1) Add Plot
[2021-08-04]
Version:
Package:
pixiu: 0.40.0.20210804
Descriptions:
1.ea_tester.py:
1).Change plot parameters to plot(chart_name, {series_name1: data, series_name2: data, ...})
[2021-07-20]
Version:
Package:
pixiu: 0.39.0.20210720
Descriptions:
1.ea_tester.py:
1).Add plot
[2021-07-16]
Version:
Package:
pixiu: 0.38.0.20210716
Descriptions:
1.Update API:
1) GetOpenedOrderUIDs, GetPendingOrderUIDs, GetClosedOrderUIDs
Add parameter: scope
[2021-07-08]
Version:
Package:
pixiu: 0.37.0.20210708
Descriptions:
1.fix write_log bugs: parameters count
[2021-06-07]
Version:
Package:
pixiu: 0.36.2.20210607
Descriptions:
1.fix dependencies bugs
remove oeoeweb library
add pymongo library
2.fix sample.py, sample2.py errors.
3.API add AcquireLock, ReleaseLock
[2021-06-04]
Version:
Package:
pixiu: 0.35.0.20210604
Descriptions:
1.Modify API:
1)
def CloseOrder(self, uid, price, volume: float, slippage=None, arrow_color=None) -> (ErrorID, OrderResult)
->
def CloseOrder(self, uid, volume=None, price=None, slippage=None, arrow_color=None) -> (ErrorID, OrderResult)
2.fix:
__valid_order__: EID_EAT_INVALID_ORDER_CLOSE_PRICE
3.Add:
__order_close_price__
[2021-06-03]
Version:
Package:
pixiu: 0.34.0.20210603
Descriptions:
1.fix bugs GetSymbolData('*')
2.
self.orders['ds'] -> order['__ds__']
self.account_info['ds'] -> self.account_info['__ds__']
3.Add build-in :
datetime, timedelta, random
[2021-06-01]
Version:
Package:
pixiu: 0.33.0.20210601
Descriptions:
1.add APIs:
WaitCommand
2.modify APIs:
Buy, Sell, CloseOrder, ModifyOrder return order_uid -> OrderResult
[2021-05-31]
Version:
Package:
pixiu: 0.32.0.20210531
Descriptions:
1.fix EATesterPrintCollector._call_print write_log bug
[2021-05-30]
Version:
Package:
pixiu: 0.31.0.20210530
Descriptions:
1. get_url_data add headers
[2021-05-29]
Version:
Package:
pixiu: 0.30.0.20210529
Descriptions:
1.Add output
[2021-05-28]
Version:
Package:
pixiu: 0.29.0.20210528
Descriptions:
1.Struct project directories
2.Complete README.txt
[2021-05-27]
Version:
Package:
pixiu: 0.28.0.20210527
Descriptions:
1.Add load channel
[2021-05-26]
Version:
Package:
pixiu: 0.27.0.20210526
Descriptions:
1.Add PXTester, main
[2021-05-24]
Version:
Package:
pixiu: 0.26.0.20210524
Descriptions:
1. api add help doc string
[2021-05-22]
Version:
Package:
pixiu: 0.25.0.20210522
Descriptions:
1.add language
2.fix sl/tp error:
ds[((ds['sl'] > 0) & (ds['sl_p'] <= 0)) | ((ds['tp'] > 0) & (ds['tp_p'] >= 0))]
3.api:
Dict - > UIDs
def GetOpenedOrderUIDs(self, symbol: str = None)
def GetPendingOrderUIDs(self, symbol: str = None)
def GetClosedOrderUIDs(self, symbol: str = None)
[2021-05-19]
Version:
Package:
pixiu: 0.24.0.20210519
Descriptions:
1.add test_pixiu set_test_result
[2021-05-18]
Version:
Package:
pixiu: 0.23.0.20210518
Descriptions:
[2021-05-17]
Version:
Package:
pixiu: 0.22.0.20210517
Descriptions:
1.SymbolIndicator, SymbolPrice, SymbolTime, SymbolData arguments.
[2021-05-15]
Version:
Package:
pixiu: 0.21.0.20210515
Descriptions:
[2021-05-13]
Version:
Package:
pixiu: 0.20.0.20210513
Descriptions:
[2021-05-11]
Version:
Package:
pixiu: 0.19.0.20210511
Descriptions:
1.fix ea_tester some bugs
[2021-05-10]
Version:
Package:
pixiu: 0.18.0.20210510
Descriptions:
[2021-05-09]
Version:
Package:
pixiu: 0.17.0.20210509
Descriptions:
1. Buy, Sell, ModifyOrder remove arguments comment
[2021-05-08]
Version:
Package:
pixiu: 0.16.0.20210508
Descriptions:
1.
[2021-05-07]
Version:
Package:
pixiu: 0.15.0.20210507
Descriptions:
1. def GetSymbolData(self, symbol: str, timeframe: str, count: int)
[2021-05-06]
Version:
Package:
pixiu: 0.14.0.20210506
Descriptions:
1. some fixs
[2021-05-01]
Version:
Package:
pixiu: 0.13.0.20210501
Descriptions:
1.Add test open, modify, close in the EAT testing.
[2021-04-30]
Version:
Package:
pixiu: 0.12.0.20210430
Descriptions:
1.Finish EAT's 7 tests.
[2021-04-29]
Version:
Package:
pixiu: 0.11.0.20210429
Descriptions:
1.Add Account, Symbol Classes
2.Add ts_order, ts_base
[2021-04-28]
Version:
Package:
pixiu: 0.10.0.20210428
Descriptions:
1.Add some methods
[2021-04-27]
Version:
Package:
pixiu: 0.9.0.20210427
Descriptions:
[2021-04-26]
Version:
Package:
pixiu: 0.8.0.20210426
Descriptions:
1. Add test_ea_tester_func_indicators
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pixiu-0.109.0.tar.gz
.
File metadata
- Download URL: pixiu-0.109.0.tar.gz
- Upload date:
- Size: 715.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.11.4 pkginfo/1.7.0 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9dff9ad9b7a9c6126b2f7e136358c3d3120836b67dfac240ac22b3b492f7544c |
|
MD5 | c11ceddf711a0ddaec273145e28cdf09 |
|
BLAKE2b-256 | a311ad1696d3d07f378145fead1df11be5c9c631e535688666d29b277e7e8fa8 |
File details
Details for the file pixiu-0.109.0-py3-none-any.whl
.
File metadata
- Download URL: pixiu-0.109.0-py3-none-any.whl
- Upload date:
- Size: 68.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.11.4 pkginfo/1.7.0 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 510f1fea2e2d43d01adc337fe0c17636f134f681c53c320312052d73b35f8cc4 |
|
MD5 | 78007b8e7b01e2e9b65861e67c504670 |
|
BLAKE2b-256 | 9ebc1f61b3b0aeb088fc4e6b0cc828348cb41362fda129433e8912cbcf3c716a |