Position sizing function not working properly

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #104595 quote
    ThallyThally
    Participant
    Average

    Hi all,

    I have written a simple trend following strategy that works across multiple markets. A Stoploss is placed behind most recent swing high/low and then a position sizing function uses the distance from the entry to the stop to set position size according to maximum permissible risk. However when running this strategy in realtime I have been finding that position sizes are often much larger than the 1% risk allowance. For example I set my account size to 36,000 so a 1% max position size should be capped at 360. This morning the entered position had a risk of 1547 (4.3% of account size). The code for the strategy is pasted below. Does anyone have any ideas as to why the position sizing function is working incorrectly?

    Thanks

    Roj

    // code-parameter
    DEFPARAM CumulateOrders = False // Cumulating positions deactivated
    DEFPARAM FlatAfter = 210000
     
    // window high/low calculation
    StartTime = 090000
    EndTime = 092000
    
    // Spread
    sp = 1
     
    // money management
    Capital = 36000
    Risk = 0.01
    equity = Capital + StrategyProfit
    maxrisk = round(equity*Risk)
    PositionSizeL = abs(round((maxrisk/StopLossL)/PointValue)*pipsize)
    PositionSizeS = abs(round((maxrisk/StopLossS)/PointValue)*pipsize)
     
    // calculate high/low
    IF Time >= StartTime AND Time <= EndTime THEN
    orh = HIGHEST[20](high)
    orl = LOWEST[20](low)
    ENDIF
    
    // Count number of trades
    TradeCounter = 0
    
    // position management
    // Long
    IF Not ONMARKET AND close CROSSES OVER orh AND TradeCounter < 5 THEN
    // long
    IF (Time >= 90000 AND Time <= 150000) THEN 
    BUY PositionSizeL PERPOINT AT MARKET
    StopLossL = abs(close - orl) + sp
    set stop loss StopLossL
    SET TARGET PROFIT 150 * pipsize
    TradeCounter = TradeCounter + 1
    ENDIF
    ENDIF
    
    // short
    IF Not ONMARKET AND close CROSSES UNDER orl AND TradeCounter < 5 THEN
    IF (Time >= 90000 AND Time <= 150000) THEN
    SELLSHORT PositionSizeS PERPOINT AT MARKET
    StopLossS = abs(close - orh) + sp
    set stop loss StopLossS
    SET TARGET PROFIT 150 * pipsize
    TradeCounter = TradeCounter + 1
    ENDIF
    ENDIF
    
    
    #104604 quote
    ThallyThally
    Participant
    Average

    I figured it out. Just need to remove the

    >*pipsize

     

     

    multiplier at the end – was redundant

    >PositionSizeL = abs(round((maxrisk/StopLossL)/PointValue))

     

     

    works as anticipated

    GraHal and Nicolas thanked this post
Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Position sizing function not working properly


ProOrder: Automated Strategies & Backtesting

New Reply
Author
author-avatar
Thally @rodger_dodger Participant
Summary

This topic contains 1 reply,
has 1 voice, and was last updated by ThallyThally
7 years, 1 month ago.

Topic Details
Forum: ProOrder: Automated Strategies & Backtesting
Language: English
Started: 08/12/2019
Status: Active
Attachments: No files
ProRealCode ProRealCode
Loading...