EasyLanguage Script for Position Sizing

Discussion in 'Strategy Building' started by chair632, Aug 24, 2021.

  1. chair632

    chair632

    I've been working on a day trading breakout system, using different time-frames. What I would like to do is risk the same amount of money per trade, even if the range is different. This would mean if a stock is trading has a low of day at $100, and a high of $110, I would want to buy it at $110.01 and put my stop-loss at $99.99. Say I wanted to risk $100 on this trade. I would want to have it automatically calculate to buy 10 shares if it break the high of day. It would look something like, TradeQuantity = RiskAmount / (OpeningRngLow / (OpeningRngHigh - OpeningRngLow));
    and also make sure (OpeningRngHigh - OpeningRngLow) is not zero. My easylanguage knowledge is very basic and I've added the new inputs. I just can't figure out where to add the code to have my TradeQuantity automatically calculated.
     
  2. chair632

    chair632

    This is the current breakout code I'm using.

    inputs:
    BreakOutTicksRqd( 5 ),
    NumBarsToSetRng( 3 ),
    DollarTgtPerUnit( 0.5 ),
    DollarStopPerUnit( 0.5 ),
    MaxEntriesPerDay( 1 ),
    TradeQuanity (0),
    RiskAmount (0),
    DrawTrendLines( true );
    variables:
    OpeningRngHigh( 0 ),
    OpeningRngLow( 0 ),
    OpeningBarNum( 0 ),
    OneTick( 0 ),
    TL_ID_High( 0 ),
    TL_ID_Low( 0 );


    Once
    begin
    OneTick = MinMove / PriceScale ;
    SetStopShare ;
    end ;
    // Get the opening range
    if CurrentSession(0) <> CurrentSession(0)[1] then
    begin
    OpeningBarNum = CurrentBar ;
    OpeningRngHigh = High ;
    OpeningRngLow = Low ;
    if DrawTrendLines then
    begin
    TL_ID_High = TL_New( Date, Time, OpeningRngHigh, Date, Time, OpeningRngHigh ) ;
    TL_ID_Low = TL_New( Date, Time, OpeningRngLow, Date, Time, OpeningRngLow ) ;
    end ;
    end
    else
    if CurrentBar - OpeningBarNum < NumBarsToSetRng then
    begin
    if High > OpeningRngHigh then OpeningRngHigh = High ;
    if Low < OpeningRngLow then OpeningRngLow = Low ;
    end ;
    // Adjust the TrendLines
    if CurrentBar - OpeningBarNum = NumBarsToSetRng - 1 then
    begin
    if TL_ID_High > 0 then
    TL_SetBegin( TL_ID_High, Date, Time[NumBarsToSetRng - 1], OpeningRngHigh );
    if TL_ID_Low > 0 then
    TL_SetBegin( TL_ID_Low, Date, Time[NumBarsToSetRng - 1], OpeningRngLow );
    end ;
    if TL_ID_High > 0 then
    TL_SetEnd( TL_ID_High, Date, Time, OpeningRngHigh );
    if TL_ID_Low > 0 then
    TL_SetEnd( TL_ID_Low, Date, Time, OpeningRngLow );
    // Issue Buy/Sell Short Stop orders
    // After Range is Set
    // Only if Flat (ie don't reverse)
    // Limit the Number of Entries per Day
    // Don't issue order on last bar of Day
    if CurrentBar - OpeningBarNum >= NumBarsToSetRng - 1 and
    MarketPosition = 0 and
    EntriesToday( Date ) < MaxEntriesPerDay and
    Time <> SessionEndTime( 0,1 ) then
    begin
    Buy ( "BrkOut LE" )next bar at OpeningRngHigh + BreakOutTicksRqd * OneTick Stop ;
    Sell Short ( "BrkOut SE" ) next bar at OpeningRngLow - BreakOutTicksRqd * OneTick Stop ;
    end ;
    if MarketPosition <> 0 then
    begin
    // Exit If reverse through opposite side of Range
    Sell ( "OpRng LX" )next bar at OpeningRngLow - OneTick Stop ;
    Buy To Cover ( "OpRng SX" ) next bar at OpeningRngHigh + OneTick Stop ;
    end ;
    // Built in Stops and Targets
    SetStopLoss( DollarStopPerUnit ) ;
    SetProfitTarget( DollarTgtPerUnit ) ;
    // Set Exit on Close for Backtesting
    SetExitonClose;