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.