This script has Automatic Instrument Context by default. This means, when this script section executes, it is given direct access to all IPV Properties and Functions.
Called once for each instrument which has an existing position, the Adjust Instrument Risk script can be used to adjust stops and reduce or exit positions based on portfolio-level risk as computed in the Compute Risk Adjustment script.
The Total Risk Limiter block uses this script to move stops or reduce positions based on the reductionPercent computed in the Compute Risk Adjustment script:
VARIABLES: quantity, reductionQuantity TYPE: Integer
VARIABLES: risk TYPE: Floating
VARIABLES: newStop TYPE: Price
' If we need to reduce risk
IF reductionPercent > 0.0 THEN
IF reductionAlgorithm = REDUCE_POSITIONS THEN
' Reduce the position by this amount.
broker.AdjustPositionOnOpen( 1.0 - reductionPercent )
ENDIF
IF reductionAlgorithm = MOVE_STOPS THEN
IF instrument.position = LONG THEN
' Adjust the stops for each unit.
FOR index = 1 to instrument.currentPositionUnits
' Determine the current risk.
risk = instrument.close -
instrument.unitExitStop[index]
' Determine the stop that corresponds with
' the reduced risk.
newStop = instrument.close -
((1 - reductionPercent) * risk)
' Set the new stop.
instrument.SetExitStop( index, newStop )
broker.ExitUnitOnStop( index, newStop )
NEXT
ENDIF ' Long
IF instrument.position = SHORT THEN
' Adjust the stops for each unit.
FOR index = 1 to instrument.currentPositionUnits
' Determine the current risk.
risk = instrument.unitExitStop[index] -
instrument.close
' Determine the stop that corresponds with
' the reduced risk.
newStop = instrument.close +
((1 - reductionPercent) * risk)
' Set the new stop.
instrument.SetExitStop( index, newStop )
broker.ExitUnitOnStop( index, newStop )
NEXT
ENDIF ' Short
ENDIF ' Algorithm Move Stops
ENDIF ' There is a reduction required
Edit Time: 9/26/2020 3:21:18 PM |
Topic ID#: 130 |