Sizers Reference
FixedSize
class backtrader.sizers.FixedSize()
This sizer simply returns a fixed size for any operation. Size can be controlled by number of tranches that a system wishes to use to scale into trades by specifying the tranches parameter.
此sizer只返回任何操作的固定大小。大小可以通過指定tranches參數,由系統希望用來擴展到交易中的份額數量來控制。
Params:
* `stake` (default: `1`) * `tranches` (default: `1`)
# 部分源碼
params = (('stake', 1),
('tranches', 1))
def _getsizing(self, comminfo, cash, data, isbuy):
if self.p.tranches > 1:
return abs(int(self.p.stake / self.p.tranches))
else:
return self.p.stake
FixedReverser
class backtrader.sizers.FixedReverser()
This sizer returns the needes fixed size to reverse an open position or the fixed size to open one
這個sizer返回需要的固定大小來反轉打開的位置,或者返回固定的大小來開倉
-
To open a position: return the param
stake -
To reverse a position: return 2 *
stake
Params:
* `stake` (default: `1`)
params = (('stake', 1),)
def _getsizing(self, comminfo, cash, data, isbuy):
position = self.strategy.getposition(data)
size = self.p.stake * (1 + (position.size != 0))
return size
PercentSizer
class backtrader.sizers.PercentSizer()
This sizer return percents of available cash
這個sizer將返回現金可用百分比購買
Params:
* `percents` (default: `20`)
params = (
('percents', 20),
('retint', False), # return an int size or rather the float value
)
def __init__(self):
pass
def _getsizing(self, comminfo, cash, data, isbuy):
position = self.broker.getposition(data)
if not position:
size = cash / data.close[0] * (self.params.percents / 100)
else:
size = position.size
if self.p.retint:
size = int(size)
return size
AllInSizer
class backtrader.sizers.AllInSizer()
This sizer return all available cash of broker
100%購買的方式
Params:
* `percents` (default: `100`)
class AllInSizer(PercentSizer):
'''This sizer return all available cash of broker
Params:
- ``percents`` (default: ``100``)
'''
params = (
('percents', 100),
)
PercentSizerInt
class backtrader.sizers.PercentSizerInt()
This sizer return percents of available cash in form of size truncated to an int
Params:
* `percents` (default: `20`)
class PercentSizerInt(PercentSizer):
'''This sizer return percents of available cash in form of size truncated
to an int
Params:
- ``percents`` (default: ``20``)
'''
params = (
('retint', True), # return an int size or rather the float value
)
AllInSizerInt
class backtrader.sizers.AllInSizerInt()
This sizer return all available cash of broker with the size truncated to an int
Params:
* `percents` (default: `100`)
class AllInSizerInt(PercentSizerInt):
'''This sizer return all available cash of broker with the
size truncated to an int
Params:
- ``percents`` (default: ``100``)
'''
params = (
('percents', 100),
)
該類屬性params只要里面的內容不重名,現在來看類屬性應該是繼承的
