Hi all,

I'm a long time coder (30+ years), but I'm apparently not understanding AFL 
correctly.  I'm trying to get the testing code below to specifically open and 
close positions at set prices, and I thought I had dug through enough manuals 
to have that happen, but it doesn't?

The systems is junk, but it should return fixed exit points...  (Opens are 
correct)

A few examples on FAS 1-minute bars over the last 180 days :

Open    Close   % Profit
25      25.9167 3.67%
25      23.7033 -5.19%
25      26.22   4.88%

Anyone tell me if I've missed something?  (Are there a bunch of switches I've 
missed and I haven't coded correctly?)

Thanks,
Michael


/*-------------------------------------
firstSystem.afl

Buy      = Buy when price has showed upward momentum 
           by moving from TradeActivationPrice to BuyPriceFixed.
Sell     = Sell at SellPrice.
StopLoss = Sell at stopLoss price.

Notes:
Fixed trigger price, therefor only one trade open at any one time.

-------------------------------------*/
//          optimize( "description", default, min , max, step ) 
PctChange = Optimize( "PctChg", .05, .01, .10, .01 );
BuyPriceFixed = 25;
SellPriceFixed = BuyPriceFixed * ( 1 + PctChange );
SellStop = BuyPriceFixed * ( 1 - PctChange );
stopLoss = BuyPriceFixed * ( 1 - PctChange );
TradeActivationPrice = BuyPriceFixed * ( 1 - PctChange );

// RoundLotSize = 1;
// SetOption( "field", value );
SetOption( "InitialEquity", 1000000000 );
SetOption( "ActivateStopsImmediately", True );
SetOption( "AllowSameBarExit", False );
SetOption( "CommissionMode", 3 );
SetOption( "CommissionAmount", .005 );
SetOption( "GenerateReport", 1 );
SetOption( "ReverseSignalForcesExit", False );
SetOption( "SeparateLongShortRank", True );
SetOption( "RefreshWhenCompleted", True );
SetOption( "RequireDeclarations", False );
SetOption( "PortfolioReportMode", 0 );
SetOption("ExtraColumnsLocation", 1 );
//SetOption( "field", value );

SetPositionSize( 10000, spsValue );
SetTradeDelays(0,0,0,0);

// Start this Pig...
Buy = False;  // Confused why I have to initialize "Buy" array....
Sell = False;
OpenPos = False; // No open position to start with
LastLow = TradeActivationPrice; // Initialize LastLow for Buy Check

for ( i = 0; i < BarCount; i++ ) // Loop over all bars in the chart
{
  if ( OpenPos ) // Have an open position, check to sell it
  {
    if ( Low[i] < stopLoss ) // Check for Stops
    {
      SellPrice = stopLoss;
      Sell[i] = True;
    }
    else
    {
      if ( High[i] > SellPriceFixed ) // Check for Profits
      {
        SellPrice = SellPriceFixed;
        Sell[i] = True;
      }
    }

    // Selling Clean up
    Buy[i] = False; // Remove any surplus buy signals
    if ( Sell[i] ) // If have sell signal on this bar
    {
      OpenPos = False; // No longer have open position
      LastLow = TradeActivationPrice; // ReSet LastLow for Buy Check
    }
  }
  else // Nothing open, see if we can buy something
  {
    if (     ( LastLow < TradeActivationPrice )
         AND ( High[i] > BuyPriceFixed )
//       AND ( BuyPriceFixed > Low[i] )
       )
    {
      BuyPrice = BuyPriceFixed;
      Buy[i] = True;
    }

    // Buying Clean up
    Sell[i] = False; // Remove any surplus sell signals
    if ( Buy[i] ) // If have a buy signal on this bar
    {
      OpenPos = True; // Now have an open position
    }
    if ( LastLow > Low[i] )
    {
      LastLow = Low[i]; // Set LastLow for Buy Check
    }
  }
}


Reply via email to