| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -14.059% Drawdown 0.100% Expectancy 0 Net Profit -0.124% Sharpe Ratio -10.051 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.017 Beta 0.175 Annual Standard Deviation 0.008 Annual Variance 0 Information Ratio 7.653 Tracking Error 0.036 Treynor Ratio -0.448 Total Fees $2.00 |
import decimal as d
from datetime import timedelta
class OrderTicketDemoAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2013, 10, 07)
self.SetEndDate(2013, 10, 9)
self.SetCash(10000)
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage,AccountType.Margin)
self.EURUSD = self.AddForex("EURUSD", Resolution.Hour)
self.SetBenchmark(self.EURUSD.Symbol)
self.newTicket = None
self.expiry = None
def OnData(self, data):
# Creating an Order:
if not self.Portfolio.Invested and self.expiry is None:
close = data[self.EURUSD.Symbol].Close
StopLong = close + d.Decimal(0.003)
LimitLong = StopLong + d.Decimal(0.0001)
self.newTicket = self.StopLimitOrder(self.EURUSD.Symbol, 1000, StopLong, LimitLong)
self.expiry = self.newTicket.Time + timedelta(hours=2)
self.Log("Order: {0}. EXPIRY: {1}".format(self.newTicket, self.expiry))
if self.expiry is None: return
if self.newTicket is not None:
if self.UtcTime >= self.expiry:
self.newTicket.Cancel()
self.newTicket = None
self.expiry = None
self.Log("Order Expired: self.Time >= self.expiry")
def OnOrderEvent(self, orderEvent):
if orderEvent.Status != OrderStatus.Filled: return
# if filled, set expiry to None in order to be able to create a new order
self.expiry = None
order = self.Transactions.GetOrderById(orderEvent.OrderId)
self.Log("{0}: {1}: {2}".format(self.Time, order.Type, orderEvent))
def TimeIs(self, day, hour, minute):
return self.Time.day == day and self.Time.hour == hour and self.Time.minute == minute