@@ -191,6 +191,17 @@ private class LevelData
191191 lineType : LineType . Bar
192192 ) ;
193193
194+ [ Display ( ResourceType = typeof ( Strings ) , Name = nameof ( Strings . VWAP ) , GroupName = nameof ( Strings . CurrentDay ) , Order = 65 ) ]
195+ public LevelSettings DayVWAPLevel { get ; set ; } = new (
196+ enabled : false ,
197+ color : System . Drawing . Color . SteelBlue . Convert ( ) ,
198+ width : 2 ,
199+ lineStyle : LineDashStyle . Solid ,
200+ showPrice : true ,
201+ labelPosition : LabelPosition . Bar ,
202+ lineType : LineType . Bar
203+ ) ;
204+
194205 [ Display ( ResourceType = typeof ( Strings ) , GroupName = nameof ( Strings . CurrentDay ) , Name = nameof ( Strings . VAH ) , Order = 70 ) ]
195206 public LevelSettings DayVAHLevel { get ; set ; } = new (
196207 enabled : false ,
@@ -283,6 +294,17 @@ private class LevelData
283294 lineType : LineType . Bar
284295 ) ;
285296
297+ [ Display ( ResourceType = typeof ( Strings ) , Name = nameof ( Strings . VWAP ) , GroupName = nameof ( Strings . PreviousDay ) , Order = 65 ) ]
298+ public LevelSettings PrevDayVWAPLevel { get ; set ; } = new (
299+ enabled : false ,
300+ color : System . Drawing . Color . SteelBlue . Convert ( ) ,
301+ width : 2 ,
302+ lineStyle : LineDashStyle . Solid ,
303+ showPrice : true ,
304+ labelPosition : LabelPosition . Bar ,
305+ lineType : LineType . Bar
306+ ) ;
307+
286308 [ Display ( ResourceType = typeof ( Strings ) , GroupName = nameof ( Strings . PreviousDay ) , Name = nameof ( Strings . VAH ) , Order = 70 ) ]
287309 public LevelSettings PrevDayVAHLevel { get ; set ; } = new (
288310 enabled : false ,
@@ -375,6 +397,17 @@ private class LevelData
375397 lineType : LineType . Bar
376398 ) ;
377399
400+ [ Display ( ResourceType = typeof ( Strings ) , Name = nameof ( Strings . VWAP ) , GroupName = nameof ( Strings . CurrentWeek ) , Order = 65 ) ]
401+ public LevelSettings WeekVWAPLevel { get ; set ; } = new (
402+ enabled : false ,
403+ color : System . Drawing . Color . SteelBlue . Convert ( ) ,
404+ width : 2 ,
405+ lineStyle : LineDashStyle . Solid ,
406+ showPrice : true ,
407+ labelPosition : LabelPosition . Bar ,
408+ lineType : LineType . Bar
409+ ) ;
410+
378411 [ Display ( ResourceType = typeof ( Strings ) , GroupName = nameof ( Strings . CurrentWeek ) , Name = nameof ( Strings . VAH ) , Order = 70 ) ]
379412 public LevelSettings WeekVAHLevel { get ; set ; } = new (
380413 enabled : false ,
@@ -467,6 +500,17 @@ private class LevelData
467500 lineType : LineType . Bar
468501 ) ;
469502
503+ [ Display ( ResourceType = typeof ( Strings ) , Name = nameof ( Strings . VWAP ) , GroupName = nameof ( Strings . PreviousWeek ) , Order = 65 ) ]
504+ public LevelSettings PrevWeekVWAPLevel { get ; set ; } = new (
505+ enabled : false ,
506+ color : System . Drawing . Color . SteelBlue . Convert ( ) ,
507+ width : 2 ,
508+ lineStyle : LineDashStyle . Solid ,
509+ showPrice : true ,
510+ labelPosition : LabelPosition . Bar ,
511+ lineType : LineType . Bar
512+ ) ;
513+
470514 [ Display ( ResourceType = typeof ( Strings ) , GroupName = nameof ( Strings . PreviousWeek ) , Name = nameof ( Strings . VAH ) , Order = 70 ) ]
471515 public LevelSettings PrevWeekVAHLevel { get ; set ; } = new (
472516 enabled : false ,
@@ -559,6 +603,17 @@ private class LevelData
559603 lineType : LineType . Bar
560604 ) ;
561605
606+ [ Display ( ResourceType = typeof ( Strings ) , Name = nameof ( Strings . VWAP ) , GroupName = nameof ( Strings . CurrentMonth ) , Order = 65 ) ]
607+ public LevelSettings MonthVWAPLevel { get ; set ; } = new (
608+ enabled : false ,
609+ color : System . Drawing . Color . SteelBlue . Convert ( ) ,
610+ width : 2 ,
611+ lineStyle : LineDashStyle . Solid ,
612+ showPrice : true ,
613+ labelPosition : LabelPosition . Bar ,
614+ lineType : LineType . Bar
615+ ) ;
616+
562617 [ Display ( ResourceType = typeof ( Strings ) , GroupName = nameof ( Strings . CurrentMonth ) , Name = nameof ( Strings . VAH ) , Order = 70 ) ]
563618 public LevelSettings MonthVAHLevel { get ; set ; } = new (
564619 enabled : false ,
@@ -651,6 +706,17 @@ private class LevelData
651706 lineType : LineType . Bar
652707 ) ;
653708
709+ [ Display ( ResourceType = typeof ( Strings ) , Name = nameof ( Strings . VWAP ) , GroupName = nameof ( Strings . PreviousMonth ) , Order = 65 ) ]
710+ public LevelSettings PrevMonthVWAPLevel { get ; set ; } = new (
711+ enabled : false ,
712+ color : System . Drawing . Color . SteelBlue . Convert ( ) ,
713+ width : 2 ,
714+ lineStyle : LineDashStyle . Solid ,
715+ showPrice : true ,
716+ labelPosition : LabelPosition . Bar ,
717+ lineType : LineType . Bar
718+ ) ;
719+
654720 [ Display ( ResourceType = typeof ( Strings ) , GroupName = nameof ( Strings . PreviousMonth ) , Name = nameof ( Strings . VAH ) , Order = 70 ) ]
655721 public LevelSettings PrevMonthVAHLevel { get ; set ; } = new (
656722 enabled : false ,
@@ -743,6 +809,17 @@ private class LevelData
743809 lineType : LineType . Bar
744810 ) ;
745811
812+ [ Display ( ResourceType = typeof ( Strings ) , Name = nameof ( Strings . VWAP ) , GroupName = nameof ( Strings . Contract ) , Order = 65 ) ]
813+ public LevelSettings ContractVWAPLevel { get ; set ; } = new (
814+ enabled : false ,
815+ color : System . Drawing . Color . SteelBlue . Convert ( ) ,
816+ width : 2 ,
817+ lineStyle : LineDashStyle . Solid ,
818+ showPrice : true ,
819+ labelPosition : LabelPosition . Bar ,
820+ lineType : LineType . Bar
821+ ) ;
822+
746823 [ Display ( ResourceType = typeof ( Strings ) , GroupName = nameof ( Strings . Contract ) , Name = nameof ( Strings . VAH ) , Order = 70 ) ]
747824 public LevelSettings ContractVAHLevel { get ; set ; } = new (
748825 enabled : false ,
@@ -821,13 +898,13 @@ protected override void OnRender(RenderContext context, DrawingLayouts layout)
821898 return ;
822899
823900 // Render all levels in groups for better organization
824- RenderLevelGroup ( context , "d" , DayOpenLevel , DayHighLevel , DayLowLevel , DayCloseLevel , DayEquilibriumLevel , DayPOCLevel , DayVAHLevel , DayVALLevel ) ;
825- RenderLevelGroup ( context , "p" , PrevDayOpenLevel , PrevDayHighLevel , PrevDayLowLevel , PrevDayCloseLevel , PrevDayEquilibriumLevel , PrevDayPOCLevel , PrevDayVAHLevel , PrevDayVALLevel ) ;
826- RenderLevelGroup ( context , "w" , WeekOpenLevel , WeekHighLevel , WeekLowLevel , WeekCloseLevel , WeekEquilibriumLevel , WeekPOCLevel , WeekVAHLevel , WeekVALLevel ) ;
827- RenderLevelGroup ( context , "pw" , PrevWeekOpenLevel , PrevWeekHighLevel , PrevWeekLowLevel , PrevWeekCloseLevel , PrevWeekEquilibriumLevel , PrevWeekPOCLevel , PrevWeekVAHLevel , PrevWeekVALLevel ) ;
828- RenderLevelGroup ( context , "m" , MonthOpenLevel , MonthHighLevel , MonthLowLevel , MonthCloseLevel , MonthEquilibriumLevel , MonthPOCLevel , MonthVAHLevel , MonthVALLevel ) ;
829- RenderLevelGroup ( context , "pm" , PrevMonthOpenLevel , PrevMonthHighLevel , PrevMonthLowLevel , PrevMonthCloseLevel , PrevMonthEquilibriumLevel , PrevMonthPOCLevel , PrevMonthVAHLevel , PrevMonthVALLevel ) ;
830- RenderLevelGroup ( context , "c" , ContractOpenLevel , ContractHighLevel , ContractLowLevel , ContractCloseLevel , ContractEquilibriumLevel , ContractPOCLevel , ContractVAHLevel , ContractVALLevel ) ;
901+ RenderLevelGroup ( context , "d" , DayOpenLevel , DayHighLevel , DayLowLevel , DayCloseLevel , DayEquilibriumLevel , DayPOCLevel , DayVWAPLevel , DayVAHLevel , DayVALLevel ) ;
902+ RenderLevelGroup ( context , "p" , PrevDayOpenLevel , PrevDayHighLevel , PrevDayLowLevel , PrevDayCloseLevel , PrevDayEquilibriumLevel , PrevDayPOCLevel , PrevDayVWAPLevel , PrevDayVAHLevel , PrevDayVALLevel ) ;
903+ RenderLevelGroup ( context , "w" , WeekOpenLevel , WeekHighLevel , WeekLowLevel , WeekCloseLevel , WeekEquilibriumLevel , WeekPOCLevel , WeekVWAPLevel , WeekVAHLevel , WeekVALLevel ) ;
904+ RenderLevelGroup ( context , "pw" , PrevWeekOpenLevel , PrevWeekHighLevel , PrevWeekLowLevel , PrevWeekCloseLevel , PrevWeekEquilibriumLevel , PrevWeekPOCLevel , PrevWeekVWAPLevel , PrevWeekVAHLevel , PrevWeekVALLevel ) ;
905+ RenderLevelGroup ( context , "m" , MonthOpenLevel , MonthHighLevel , MonthLowLevel , MonthCloseLevel , MonthEquilibriumLevel , MonthPOCLevel , MonthVWAPLevel , MonthVAHLevel , MonthVALLevel ) ;
906+ RenderLevelGroup ( context , "pm" , PrevMonthOpenLevel , PrevMonthHighLevel , PrevMonthLowLevel , PrevMonthCloseLevel , PrevMonthEquilibriumLevel , PrevMonthPOCLevel , PrevMonthVWAPLevel , PrevMonthVAHLevel , PrevMonthVALLevel ) ;
907+ RenderLevelGroup ( context , "c" , ContractOpenLevel , ContractHighLevel , ContractLowLevel , ContractCloseLevel , ContractEquilibriumLevel , ContractPOCLevel , ContractVWAPLevel , ContractVAHLevel , ContractVALLevel ) ;
831908 }
832909
833910 #endregion
@@ -868,43 +945,43 @@ private void RequestProfiles()
868945 private bool NeedsDayData ( )
869946 {
870947 return DayOpenLevel . Enabled || DayHighLevel . Enabled || DayLowLevel . Enabled || DayCloseLevel . Enabled ||
871- DayEquilibriumLevel . Enabled || DayPOCLevel . Enabled || DayVAHLevel . Enabled || DayVALLevel . Enabled ;
948+ DayEquilibriumLevel . Enabled || DayPOCLevel . Enabled || DayVWAPLevel . Enabled || DayVAHLevel . Enabled || DayVALLevel . Enabled ;
872949 }
873950
874951 private bool NeedsPrevDayData ( )
875952 {
876953 return PrevDayOpenLevel . Enabled || PrevDayHighLevel . Enabled || PrevDayLowLevel . Enabled || PrevDayCloseLevel . Enabled ||
877- PrevDayEquilibriumLevel . Enabled || PrevDayPOCLevel . Enabled || PrevDayVAHLevel . Enabled || PrevDayVALLevel . Enabled ;
954+ PrevDayEquilibriumLevel . Enabled || PrevDayPOCLevel . Enabled || PrevDayVWAPLevel . Enabled || PrevDayVAHLevel . Enabled || PrevDayVALLevel . Enabled ;
878955 }
879956
880957 private bool NeedsWeekData ( )
881958 {
882959 return WeekOpenLevel . Enabled || WeekHighLevel . Enabled || WeekLowLevel . Enabled || WeekCloseLevel . Enabled ||
883- WeekEquilibriumLevel . Enabled || WeekPOCLevel . Enabled || WeekVAHLevel . Enabled || WeekVALLevel . Enabled ;
960+ WeekEquilibriumLevel . Enabled || WeekPOCLevel . Enabled || WeekVWAPLevel . Enabled || WeekVAHLevel . Enabled || WeekVALLevel . Enabled ;
884961 }
885962
886963 private bool NeedsPrevWeekData ( )
887964 {
888965 return PrevWeekOpenLevel . Enabled || PrevWeekHighLevel . Enabled || PrevWeekLowLevel . Enabled || PrevWeekCloseLevel . Enabled ||
889- PrevWeekEquilibriumLevel . Enabled || PrevWeekPOCLevel . Enabled || PrevWeekVAHLevel . Enabled || PrevWeekVALLevel . Enabled ;
966+ PrevWeekEquilibriumLevel . Enabled || PrevWeekPOCLevel . Enabled || PrevWeekVWAPLevel . Enabled || PrevWeekVAHLevel . Enabled || PrevWeekVALLevel . Enabled ;
890967 }
891968
892969 private bool NeedsMonthData ( )
893970 {
894971 return MonthOpenLevel . Enabled || MonthHighLevel . Enabled || MonthLowLevel . Enabled || MonthCloseLevel . Enabled ||
895- MonthEquilibriumLevel . Enabled || MonthPOCLevel . Enabled || MonthVAHLevel . Enabled || MonthVALLevel . Enabled ;
972+ MonthEquilibriumLevel . Enabled || MonthPOCLevel . Enabled || MonthVWAPLevel . Enabled || MonthVAHLevel . Enabled || MonthVALLevel . Enabled ;
896973 }
897974
898975 private bool NeedsPrevMonthData ( )
899976 {
900977 return PrevMonthOpenLevel . Enabled || PrevMonthHighLevel . Enabled || PrevMonthLowLevel . Enabled || PrevMonthCloseLevel . Enabled ||
901- PrevMonthEquilibriumLevel . Enabled || PrevMonthPOCLevel . Enabled || PrevMonthVAHLevel . Enabled || PrevMonthVALLevel . Enabled ;
978+ PrevMonthEquilibriumLevel . Enabled || PrevMonthPOCLevel . Enabled || PrevMonthVWAPLevel . Enabled || PrevMonthVAHLevel . Enabled || PrevMonthVALLevel . Enabled ;
902979 }
903980
904981 private bool NeedsContractData ( )
905982 {
906983 return ContractOpenLevel . Enabled || ContractHighLevel . Enabled || ContractLowLevel . Enabled || ContractCloseLevel . Enabled ||
907- ContractEquilibriumLevel . Enabled || ContractPOCLevel . Enabled || ContractVAHLevel . Enabled || ContractVALLevel . Enabled ;
984+ ContractEquilibriumLevel . Enabled || ContractPOCLevel . Enabled || ContractVWAPLevel . Enabled || ContractVAHLevel . Enabled || ContractVALLevel . Enabled ;
908985 }
909986
910987 private void UpdateLevels ( FixedProfilePeriods period , IndicatorCandle candle )
@@ -925,6 +1002,9 @@ private void UpdateLevels(FixedProfilePeriods period, IndicatorCandle candle)
9251002 if ( candle . MaxVolumePriceInfo != null && candle . MaxVolumePriceInfo . Price > 0 )
9261003 UpdateLevel ( $ "{ prefix } POC", candle . MaxVolumePriceInfo . Price ) ;
9271004
1005+ if ( candle . VWAP > 0 )
1006+ UpdateLevel ( $ "{ prefix } VWAP", candle . VWAP ) ;
1007+
9281008 // Safe ValueArea access with validation
9291009 if ( candle . ValueArea != null &&
9301010 candle . ValueArea . ValueAreaHigh > 0 &&
@@ -1091,7 +1171,7 @@ private void DrawTextLabel(RenderContext context, string text, int x, int y, Ren
10911171
10921172 private void RenderLevelGroup ( RenderContext context , string prefix ,
10931173 LevelSettings openLevel , LevelSettings highLevel , LevelSettings lowLevel , LevelSettings closeLevel ,
1094- LevelSettings eqLevel , LevelSettings pocLevel , LevelSettings vahLevel , LevelSettings valLevel )
1174+ LevelSettings eqLevel , LevelSettings pocLevel , LevelSettings vwapLevel , LevelSettings vahLevel , LevelSettings valLevel )
10951175 {
10961176 var levels = new [ ]
10971177 {
@@ -1101,6 +1181,7 @@ private void RenderLevelGroup(RenderContext context, string prefix,
11011181 ( "Close" , closeLevel ) ,
11021182 ( "EQ" , eqLevel ) ,
11031183 ( "POC" , pocLevel ) ,
1184+ ( "VWAP" , vwapLevel ) ,
11041185 ( "VAH" , vahLevel ) ,
11051186 ( "VAL" , valLevel )
11061187 } ;
@@ -1112,4 +1193,4 @@ private void RenderLevelGroup(RenderContext context, string prefix,
11121193 }
11131194
11141195 #endregion
1115- }
1196+ }
0 commit comments