|
Adjust Instrument Risk Script |
Top Previous Next |
|
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
|