While working up an auto execution strategy for the futures market, my friend and I created this segment of code that provides for market exit after achieving the desired profit target or end of time.
Hope others find it useful .....
RANGER
///// This code ends trading once the Daily Net Points are achieved or end time constraint is met.
//// Designed for use on futures contracts
/// If used within an Auto Execution Strategy, you may elect to revisit the "marketposition" terms.
//// Co-written by ZAC & RANGER 2010 Rev 0 / tested and found operational
inputs:
DailyNetPoints(4),
StopLossTicks(12),
ProfitTargetTicks(12),
BreakEvenTicks (6),
NumberContracts(4),
start_time(0930),
end_time(1615),
ExitOnClose( true );
variables:
Prior_Date(date),
Prior_Net_Profit(0),
StopPx_Amt(0),
Daily_NP_Amt(0),
Profit_Target_Amt(0),
Break_Even_Amt(0);
StopPx_Amt = ((StopLossTicks/4)*BigPointValue) * NumberContracts;
Daily_NP_Amt = (DailyNetPoints * BigPointValue) * NumberContracts;
Profit_Target_Amt = ((ProfitTargetTicks/4)*BigPointValue) * NumberContracts;
Break_Even_Amt = ((BreakEvenTicks/4)*BigPointValue) * NumberContracts;
once
begin
Prior_Date = Date - 1;
end;
if Time > start_time and Time < end_time then
BEGIN
if Date > Prior_Date then
begin
Prior_Date = Date;
Prior_Net_Profit = netprofit;
end;
if netprofit - Prior_Net_Profit <= Daily_NP_Amt then
begin
///////////START ENTRY/EXIT SIGNALS HERE
///////////////END ENTRY EXIT SIGNALS HERE
end else {ends when daily profit objective is reached}
begin
if marketposition = 1 then sell ("DONE-2") next bar on Open;
if marketposition = -1 then buytocover ("DONE-1") next bar on Open;
end;
END else
if Time > end_time then {ends when time limit is hit}
begin
if marketposition = 1 then sell ("EOD-0") this bar on Close;
if marketposition = -1 then buytocover ("EOD-1") this bar on Close;
end;
if ExitOnClose = true then SetExitOnClose ; {exit on close of market - this can be rem if desired}
if marketposition <> 0 then
begin
SetDollarTrailing( StopPx_Amt ) ;
SetBreakeven( Break_Even_Amt ) ;
if Profit_Target_Amt > 0 then SetProfitTarget(Profit_Target_Amt ) ;
end;