strategy – Basic strategy classes

Strategies are the classes that you define that implement the trading logic, when to buy, when to sell, etc. Buying and selling can be done in 3 different ways:

Strategy

class pyalgotrade.strategy.BaseStrategy(barFeed, broker)

Base class for strategies.

Parameters:

Note

This is a base class and should not be used directly.

attachAnalyzer(strategyAnalyzer)

Adds a pyalgotrade.stratanalyzer.StrategyAnalyzer.

enterLong(instrument, quantity, goodTillCanceled=False)

Generates a buy pyalgotrade.broker.MarketOrder to enter a long position.

Parameters:
  • instrument (string.) – Instrument identifier.
  • quantity (int.) – Entry order quantity.
  • goodTillCanceled (boolean.) – True if the entry order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.strategy.position.Position entered.

enterLongLimit(instrument, limitPrice, quantity, goodTillCanceled=False)

Generates a buy pyalgotrade.broker.LimitOrder to enter a long position.

Parameters:
  • instrument (string.) – Instrument identifier.
  • limitPrice (float.) – Limit price.
  • quantity (int.) – Entry order quantity.
  • goodTillCanceled (boolean.) – True if the entry order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.strategy.position.Position entered.

enterLongStop(instrument, stopPrice, quantity, goodTillCanceled=False)

Generates a buy pyalgotrade.broker.StopOrder to enter a long position.

Parameters:
  • instrument (string.) – Instrument identifier.
  • stopPrice (float.) – Stop price.
  • quantity (int.) – Entry order quantity.
  • goodTillCanceled (boolean.) – True if the entry order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.strategy.position.Position entered.

enterLongStopLimit(instrument, limitPrice, stopPrice, quantity, goodTillCanceled=False)

Generates a buy pyalgotrade.broker.StopLimitOrder order to enter a long position.

Parameters:
  • instrument (string.) – Instrument identifier.
  • limitPrice (float.) – Limit price.
  • stopPrice (float.) – Stop price.
  • quantity (int.) – Entry order quantity.
  • goodTillCanceled (boolean.) – True if the entry order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.strategy.position.Position entered.

enterShort(instrument, quantity, goodTillCanceled=False)

Generates a sell short pyalgotrade.broker.MarketOrder to enter a short position.

Parameters:
  • instrument (string.) – Instrument identifier.
  • quantity (int.) – Entry order quantity.
  • goodTillCanceled (boolean.) – True if the entry order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.strategy.position.Position entered.

enterShortLimit(instrument, limitPrice, quantity, goodTillCanceled=False)

Generates a sell short pyalgotrade.broker.LimitOrder to enter a short position.

Parameters:
  • instrument (string.) – Instrument identifier.
  • limitPrice (float.) – Limit price.
  • quantity (int.) – Entry order quantity.
  • goodTillCanceled (boolean.) – True if the entry order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.strategy.position.Position entered.

enterShortStop(instrument, stopPrice, quantity, goodTillCanceled=False)

Generates a sell short pyalgotrade.broker.StopOrder to enter a short position.

Parameters:
  • instrument (string.) – Instrument identifier.
  • stopPrice (float.) – Stop price.
  • quantity (int.) – Entry order quantity.
  • goodTillCanceled (boolean.) – True if the entry order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.strategy.position.Position entered.

enterShortStopLimit(instrument, limitPrice, stopPrice, quantity, goodTillCanceled=False)

Generates a sell short pyalgotrade.broker.StopLimitOrder order to enter a short position.

Parameters:
  • instrument (string.) – Instrument identifier.
  • limitPrice (float.) – Limit price.
  • stopPrice (float.) – The Stop price.
  • quantity (int.) – Entry order quantity.
  • goodTillCanceled (boolean.) – True if the entry order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.strategy.position.Position entered.

getBroker()

Returns the pyalgotrade.broker.Broker used to handle order executions.

getCurrentDateTime()

Returns the datetime.datetime for the current pyalgotrade.bar.Bar.

getFeed()

Returns the pyalgotrade.barfeed.BarFeed that this strategy is using.

onBars(bars)

Override (mandatory) to get notified when new bars are available. The default implementation raises an Exception.

This is the method to override to enter your trading logic and enter/exit positions.

Parameters:bars (pyalgotrade.bar.Bars.) – The current bars.
onEnterCanceled(position)

Override (optional) to get notified when the order submitted to enter a position was canceled. The default implementation is empty.

Parameters:position (pyalgotrade.strategy.position.Position.) – A position returned by any of the enterLongXXX or enterShortXXX methods.
onEnterOk(position)

Override (optional) to get notified when the order submitted to enter a position was filled. The default implementation is empty.

Parameters:position (pyalgotrade.strategy.position.Position.) – A position returned by any of the enterLongXXX or enterShortXXX methods.
onExitCanceled(position)

Override (optional) to get notified when the order submitted to exit a position was canceled. The default implementation is empty.

Parameters:position (pyalgotrade.strategy.position.Position.) – A position returned by any of the enterLongXXX or enterShortXXX methods.
onExitOk(position)

Override (optional) to get notified when the order submitted to exit a position was filled. The default implementation is empty.

Parameters:position (pyalgotrade.strategy.position.Position.) – A position returned by any of the enterLongXXX or enterShortXXX methods.
onFinish(bars)

Override (optional) to get notified when the strategy finished executing. The default implementation is empty.

Parameters:bars (pyalgotrade.bar.Bars.) – The last bars processed.
onOrderUpdated(order)

Override (optional) to get notified when an order gets updated. This is not called for orders placed using any of the enterLong or enterShort methods.

Parameters:order (pyalgotrade.broker.Order.) – The order updated.
onStart()

Override (optional) to get notified when the strategy starts executing. The default implementation is empty.

order(instrument, quantity, onClose=False, goodTillCanceled=False)

Places a market order.

Parameters:
  • instrument (string.) – Instrument identifier.
  • quantity (int.) – The amount of shares. Positive means buy, negative means sell.
  • onClose (boolean.) – True if the order should be filled as close to the closing price as possible (Market-On-Close order). Default is False.
  • goodTillCanceled (boolean.) – True if the order is good till canceled. If False then the order gets automatically canceled when the session closes.
Return type:

The pyalgotrade.broker.MarketOrder submitted.

run()

Call once (and only once) to run the strategy.

stop()

Stops a running strategy.

class pyalgotrade.strategy.BacktestingStrategy(barFeed, cash=1000000)

Bases: pyalgotrade.strategy.BaseStrategy

Base class for backtesting strategies.

Parameters:
  • barFeed (pyalgotrade.barfeed.BarFeed.) – The bar feed to use to backtest the strategy.
  • cash (int/float.) – The amount of cash available.

Note

This is a base class and should not be used directly.

Position

class pyalgotrade.strategy.position.Position(strategy, entryOrder, goodTillCanceled)

Base class for positions.

Parameters:

Note

This is a base class and should not be used directly.

cancelEntry()

Cancels the entry order if its active.

cancelExit()

Cancels the exit order if its active.

entryActive()

Returns True if the entry order is active.

entryFilled()

Returns True if the entry order was filled.

exit(limitPrice=None, stopPrice=None, goodTillCanceled=None)

Generates the exit order for the position.

Parameters:
  • limitPrice (float.) – The limit price.
  • stopPrice (float.) – The stop price.
  • goodTillCanceled (boolean.) – True if the exit order is good till canceled. If False then the order gets automatically canceled when the session closes. If None, then it will match the entry order.

Note

  • If the entry order was not filled yet, it will be canceled.
  • If the exit order for this position was filled, this won’t have any effect.
  • If the exit order for this position is pending, an exception will be raised. The exit order should be canceled first.
  • If limitPrice is not set and stopPrice is not set, then a pyalgotrade.broker.MarketOrder is used to exit the position.
  • If limitPrice is set and stopPrice is not set, then a pyalgotrade.broker.LimitOrder is used to exit the position.
  • If limitPrice is not set and stopPrice is set, then a pyalgotrade.broker.StopOrder is used to exit the position.
  • If limitPrice is set and stopPrice is set, then a pyalgotrade.broker.StopLimitOrder is used to exit the position.
exitActive()

Returns True if the exit order is active.

exitFilled()

Returns True if the exit order was filled.

getEntryOrder()

Returns the pyalgotrade.broker.Order used to enter the position.

getExitOnSessionClose()

Returns True if an order to exit the position should be automatically submitted when the session is about to close.

getExitOrder()

Returns the pyalgotrade.broker.Order used to exit the position. If this position hasn’t been closed yet, None is returned.

getInstrument()

Returns the instrument used for this position.

getNetProfit(includeCommissions=True)

Calculates the PnL for the position.

Parameters:includeCommissions (boolean.) – True to include commisions in the calculation.
Return type:A float with the PnL.

Note

The position must be closed.

getQuantity()

Returns the number of shares used to enter this position.

getReturn(includeCommissions=True)

Calculates the returns for the position.

Parameters:includeCommissions (boolean.) – True to include commisions in the calculation.
Return type:A float between 0 and 1.

Note

The position must be closed.

getUnrealizedNetProfit(marketPrice)

Calculates the unrealized PnL for the position.

Parameters:marketPrice (float.) – Price used to calculate the PnL. This value is used as the current price and compared against your entry price.
Return type:A float with the unrealized PnL.

Note

The position must be open.

getUnrealizedReturn(marketPrice)

Calculates the unrealized returns for the position.

Parameters:marketPrice (float.) – Price used to calculate the return. This value is used as the current price and compared against your entry price.
Return type:A float between 0 and 1.

Note

The position must be open.

isOpen()

Returns True if the position is open.

setExitOnSessionClose(exitOnSessionClose)

Set to True to automatically place an exit order when the session is about to close. Only useful for intraday trading.

Note

If the entry order was not filled by the time the session is about to close, it will get canceled.

Table Of Contents

Previous topic

broker – Order management classes

Next topic

stratanalyzer – Strategy analyzers

This Page