Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
import numpy as np
import gc
from NodaTime import DateTimeZone
import math
import decimal as d
from datetime import datetime, timedelta




### <summary>
### Basic template algorithm simply initializes the date range and cash. This is a skeleton
### framework you can use for designing an algorithm.
### </summary>
class FxDailyalgo(QCAlgorithm):
    '''Basic template algorithm simply initializes the date range and cash'''
    def Initialize(self):
        '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''

        self.SetStartDate(2016,1, 1)  #Set Start Date
        self.SetEndDate(2017,3,30)    #Set End Date
        self.SetCash(100000)           #Set Strategy Cash
        # Find more symbols here: http://quantconnect.com/data
        self._tickers = ["EURUSD", "USDJPY", "USDCHF", "GBPUSD",  "USDCAD", "AUDUSD"]
        #FxRiskManagment RiskManager;
        self.Vol=dict()
        self.signal=0
        
        
        self.AddData(DailyFx,"DFX",Resolution.Minute,DateTimeZone.Utc)
        
        
        for tickers in self._tickers:
            self.AddForex(tickers,Resolution.Minute, Market.Oanda)
            self.Vol[tickers]=self.STD(tickers, 24, Resolution.Hour)
        self.SetBrokerageModel(BrokerageName.OandaBrokerage)
        
    def OnData(self,DailyFx):
        if not DailyFx.ContainsKey("DFX"): return
        calendar=DailyFx['DFX']
        #self.Debug("ondata")
     #   // We only want to trade the news of all others currencies against USD. 
        if calendar.Currency.upper() == "USD" :  return
    #    // The algorithm only uses meaningful and important news/announcements.
        if calendar.Importance == FxDailyImportance.High and calendar.Meaning is not None:
         
            for symbol in self._tickers:
            
                fxPair = self.Securities[symbol]
                #self.Debug(str(fxPair))
                #self.Debug(str(self.Portfolio.Securities[symbol].Price))
                # Check if the new/announcement affects the Base or the Quote of the actual pair.
                isBaseCurrency = True if fxPair.BaseCurrencySymbol == calendar.Currency.upper() else False
                isQuoteCurrency = True if fxPair.QuoteCurrency.Symbol == calendar.Currency.upper() else False

                quantity = 0
                stopLossPrice = d.Decimal(0)
                longA=True if calendar.Meaning == FxDailyMeaning.Better and isBaseCurrency else False
                longB=True if calendar.Meaning == FxDailyMeaning.Worse and isQuoteCurrency else False
                shortA=True if calendar.Meaning == FxDailyMeaning.Worse and isBaseCurrency else False
                shortB=True if calendar.Meaning == FxDailyMeaning.Better and isQuoteCurrency else False
            

                
                if longA or longB:
                    self.signal+=1
                    date=self.Time
                    self.Log(str(self.signal)+ "\n" + str(date) + "\n" + str(symbol) + "\n" + str(calendar.Meaning))
                    self.Log(str(round(self.Vol[symbol].Current.Value,5)))
 
                

                if shortA or shortB:
                    self.signal+=1
                    date=self.Time
                    self.Log(str(self.signal)+ "\n" + str(date) + "\n" + str(symbol) + "\n" + str(calendar.Meaning))
                    self.Log(str(round(self.Vol[symbol].Current.Value,5)))