Syntax
public static void SaveTrades(this WealthScript obj, string path, bool open, bool closed, bool savePositionType = false)
public void SaveTrades( string path, bool open, bool closed, bool savePositionType = false )
Parameter Description
path | Path to the resulting CSV file |
open | Save open trades |
closed | Save closed trades |
Description
A simple procedure that dumps closed and/or open position data to a CSV (comma-separated) file.
The format is:
SymbolName,EntryDate,EntryPrice,EntrySignal,ExitDate,ExitPrice,ExitSignal,Tag
- The Position.Tag property allows to store any object with a Position. It can be left empty, or be used, for example, to hold the value of an indicator of choice at EntryDate.
- It's possible to introduce custom output formats by modifying the method body and re-compiling the assembly on your own.
- Optional argument "savePositionType" allows to save the Position type (Long, Short)
- Note: if your strategy is run in a Portfolio Simulation mode, the number of positions saved by SaveTrades might exceed the total number of trades. It will be equal to the number of trades taken plus excluded due to insufficient capital. For a perfect match you should run your Strategy in a Raw Profit mode.
This method supersedes
SaveClosedTrades.
Example
This is an example code that illustrates how to call the procedure inside your Strategy:
Example using C# extension methods:
using System;
using System.Text;
using WealthLab;
using WealthLab.Indicators;
namespace WealthLab.Strategies
{
public class MyStrategy : WealthScript
{
protected override void Execute()
{
for(int bar = 50; bar < Bars.Count; bar++)
{
if (IsLastPositionActive)
{
if ( CrossUnder( bar, RSI.Series( Close, 14 ), 70 ) )
SellAtMarket( bar+1, LastPosition, "exit" );
}
else
{
if ( CrossOver( bar, RSI.Series( Close, 14 ), 50 ) )
if( BuyAtMarket( bar+1, "RSI" ) != null )
// Store indicator data in the position's Tag property
LastPosition.Tag = Bars.FormatValue( RSI.Series( Close, 14 )bar );
}
}
// Specify destination file
string path = @"C:\temp\SaveTrades.csv";
// Call SaveTrades, passing the destination file to save both the open and closed trades
this.SaveTrades( path, true, true );
}
}
}