Wenn man Live-Tickdaten aufzeichnen will für die Datenbank, muss man für jedes Instrument einen Chart offen haben oder eine Strategie drauf laufen lassen.
Will man alle FX-Daten und noch die Unternehmen des Dax-30 aufzeichnen, geht das früher oder später (eher früher) schief.
Deswegen hab ich jetzt eine Strategie programmiert (OK das ist das falsche Wort...'erstellt' wäre richtiger) welche per MultiInstrument alle gewünschten Instrumente aufzeichnet.
Voreingetragen sind alle FX-Spot-Instrument für MBT.
Eigene Instrumente ganz einfach im Code hinzufügen, wie, steht im Code. Man muss dazu nur den Namen des Instruments wissen.
Die Strategie dann starten und einfach nebenbei laufen lassen. Frisst zwar etwas Leistung, je nach Anzahl der Werte, aber besser als mit nüscht dazustehen.
Bei Fragen - Nur zu!
Der Code:
#region Using declarations
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Data;
using NinjaTrader.Indicator;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Strategy;
#endregion
// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
/// <summary>
/// Record Tickdata to History; Author: Henrik from www.tom-next.com
/// Start the strategy to record Tickdata
/// </summary>
[Description("Record Tickdata to History; Author: Henrik from www.tom-next.com")]
public class eHenRecordTicks : Strategy
{
#region Variables
// Wizard generated variables
// User defined variables (add any user defined variables below)
#endregion
/// <summary>
/// This method is used to configure the strategy and is called once before any strategy method is called.
/// </summary>
protected override void Initialize()
{
CalculateOnBarClose = true;
//-----------------------------------------------------------
// Add here Instruments to record tickdata;
// For Example:
// Add("$AUDCAD", PeriodType.Minute, 1);
// Add("IBM", PeriodType.Minute, 1);
// Add("ES 03-10", PeriodType.Minute, 1);
// Attention: wrong instruments => strategy don't work and start!!
Add("$AUDCAD", PeriodType.Minute, 1);
Add("$AUDJPY", PeriodType.Minute, 1);
Add("$AUDNZD", PeriodType.Minute, 1);
Add("$AUDUSD", PeriodType.Minute, 1);
Add("$CADCHF", PeriodType.Minute, 1);
Add("$CADJPY", PeriodType.Minute, 1);
Add("$CHFJPY", PeriodType.Minute, 1);
Add("$EURAUD", PeriodType.Minute, 1);
Add("$EURCAD", PeriodType.Minute, 1);
Add("$EURCHF", PeriodType.Minute, 1);
Add("$EURGBP", PeriodType.Minute, 1);
Add("$EURJPY", PeriodType.Minute, 1);
Add("$EURNOK", PeriodType.Minute, 1);
Add("$EURNZD", PeriodType.Minute, 1);
Add("$EURUSD", PeriodType.Minute, 1);
Add("$GBPAUD", PeriodType.Minute, 1);
Add("$GBPCAD", PeriodType.Minute, 1);
Add("$GBPCHF", PeriodType.Minute, 1);
Add("$GBPJPY", PeriodType.Minute, 1);
Add("$GBPNZD", PeriodType.Minute, 1);
Add("$GBPUSD", PeriodType.Minute, 1);
Add("$NZDCAD", PeriodType.Minute, 1);
Add("$NZDUSD", PeriodType.Minute, 1);
Add("$USDCAD", PeriodType.Minute, 1);
Add("$USDCHF", PeriodType.Minute, 1);
Add("$USDDKK", PeriodType.Minute, 1);
Add("$USDJPY", PeriodType.Minute, 1);
Add("$USDNOK", PeriodType.Minute, 1);
Add("$USDSEK", PeriodType.Minute, 1);
//----------------------------------------------------------
}
/// <summary>
/// Called on each bar update event (incoming tick)
/// </summary>
protected override void OnBarUpdate()
{
}
#region Properties
#endregion
}
}
Nach dem Start zeichnet NT Tickgenau alles auf, bid, ask, volume. So kann man später mit einer perfekten Datenbasis backtesten und optimieren.
Ninjatrader-User kennen das Problem:
Wenn man Live-Tickdaten aufzeichnen will für die Datenbank, muss man für jedes Instrument einen Chart offen haben oder eine Strategie drauf laufen lassen.
Will man alle FX-Daten und noch die Unternehmen des Dax-30 aufzeichnen, geht das früher oder später (eher früher) schief.
Deswegen hab ich jetzt eine Strategie programmiert (OK das ist das falsche Wort...'erstellt' wäre richtiger) welche per MultiInstrument alle gewünschten Instrumente aufzeichnet.
Voreingetragen sind alle FX-Spot-Instrument für MBT.
Eigene Instrumente ganz einfach im Code hinzufügen, wie, steht im Code. Man muss dazu nur den Namen des Instruments wissen.
Die Strategie dann starten und einfach nebenbei laufen lassen. Frisst zwar etwas Leistung, je nach Anzahl der Werte, aber besser als mit nüscht dazustehen.
Bei Fragen - Nur zu!
Der Code:
#region Using declarations using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.Xml.Serialization; using NinjaTrader.Cbi; using NinjaTrader.Data; using NinjaTrader.Indicator; using NinjaTrader.Gui.Chart; using NinjaTrader.Strategy; #endregion // This namespace holds all strategies and is required. Do not change it. namespace NinjaTrader.Strategy { /// <summary> /// Record Tickdata to History; Author: Henrik from www.tom-next.com /// Start the strategy to record Tickdata /// </summary> [Description("Record Tickdata to History; Author: Henrik from www.tom-next.com")] public class eHenRecordTicks : Strategy { #region Variables // Wizard generated variables // User defined variables (add any user defined variables below) #endregion /// <summary> /// This method is used to configure the strategy and is called once before any strategy method is called. /// </summary> protected override void Initialize() { CalculateOnBarClose = true; //----------------------------------------------------------- // Add here Instruments to record tickdata; // For Example: // Add("$AUDCAD", PeriodType.Minute, 1); // Add("IBM", PeriodType.Minute, 1); // Add("ES 03-10", PeriodType.Minute, 1); // Attention: wrong instruments => strategy don't work and start!! Add("$AUDCAD", PeriodType.Minute, 1); Add("$AUDJPY", PeriodType.Minute, 1); Add("$AUDNZD", PeriodType.Minute, 1); Add("$AUDUSD", PeriodType.Minute, 1); Add("$CADCHF", PeriodType.Minute, 1); Add("$CADJPY", PeriodType.Minute, 1); Add("$CHFJPY", PeriodType.Minute, 1); Add("$EURAUD", PeriodType.Minute, 1); Add("$EURCAD", PeriodType.Minute, 1); Add("$EURCHF", PeriodType.Minute, 1); Add("$EURGBP", PeriodType.Minute, 1); Add("$EURJPY", PeriodType.Minute, 1); Add("$EURNOK", PeriodType.Minute, 1); Add("$EURNZD", PeriodType.Minute, 1); Add("$EURUSD", PeriodType.Minute, 1); Add("$GBPAUD", PeriodType.Minute, 1); Add("$GBPCAD", PeriodType.Minute, 1); Add("$GBPCHF", PeriodType.Minute, 1); Add("$GBPJPY", PeriodType.Minute, 1); Add("$GBPNZD", PeriodType.Minute, 1); Add("$GBPUSD", PeriodType.Minute, 1); Add("$NZDCAD", PeriodType.Minute, 1); Add("$NZDUSD", PeriodType.Minute, 1); Add("$USDCAD", PeriodType.Minute, 1); Add("$USDCHF", PeriodType.Minute, 1); Add("$USDDKK", PeriodType.Minute, 1); Add("$USDJPY", PeriodType.Minute, 1); Add("$USDNOK", PeriodType.Minute, 1); Add("$USDSEK", PeriodType.Minute, 1); //---------------------------------------------------------- } /// <summary> /// Called on each bar update event (incoming tick) /// </summary> protected override void OnBarUpdate() { } #region Properties #endregion } }Nach dem Start zeichnet NT Tickgenau alles auf, bid, ask, volume. So kann man später mit einer perfekten Datenbasis backtesten und optimieren.
eHenRecordTicks.zip