# Darvas Box anyone?

**URL:** <https://community.tradovate.com/t/darvas-box-anyone/3717>\
**Category:** Custom Indicators\
**Created:** [January 16, 2022, 7:27am UTC](https://community.tradovate.com/t/darvas-box-anyone/3717 "2022-01-16T07:27:19Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![aKicker](https://avatars.discourse-cdn.com/v4/letter/a/3d9bf3/32.png) [@aKicker](https://community.tradovate.com/u/aKicker)\
**Post date:** [January 16, 2022, 7:27am UTC](https://community.tradovate.com/t/darvas-box-anyone/3717/1 "2022-01-16T07:27:19Z")

</div>

Has anyone put together a Darvas Box for the charts?

---

<div class="post-metadata">

**Author:** ![aKicker](https://avatars.discourse-cdn.com/v4/letter/a/3d9bf3/32.png) [@aKicker](https://community.tradovate.com/u/aKicker)\
**Post date:** [January 24, 2022, 10:23am UTC](https://community.tradovate.com/t/darvas-box-anyone/3717/2 "2022-01-24T10:23:53Z")

</div>

I found this code online supposedly in simplecode - can someone please convert to Tradovate script? Let me know if you’d like to charge me [akicker1202@gmail.com](mailto:akicker1202@gmail.com) - would be happy to pay.  
--------------------------------------------------- begin code -------------------------------------------------  
{Darvax Box - Indicator}

def state = {default state\_1, state\_2, state\_3, state\_4, state\_5};

def upper;  
def lower;

def prevLower = CompoundValue(1, lower[1], low);  
def prevUpper = CompoundValue(1, upper[1], high);

switch (state[1]) {  
case state\_1:  
lower = low;  
if (prevUpper \>= high) {  
upper = high[1];  
state = state.state\_2;  
} else {  
upper = high;  
state = state.state\_1;  
}  
case state\_2:  
if (prevUpper \>= high) {  
lower = low;  
upper = prevUpper;  
state = state.state\_3;  
} else {  
lower = low;  
upper = high;  
state = state.state\_1;  
}  
case state\_3:  
if (prevUpper \< high) {  
lower = low;  
upper = high;  
state = state.state\_1;  
} else if (prevLower \> low) {  
lower = low;  
upper = prevUpper;  
state = state.state\_3;  
} else {  
lower = prevLower;  
upper = prevUpper;  
state = state.state\_4;  
}  
case state\_4:  
if (prevUpper \< high) {  
lower = low;  
upper = high;  
state = state.state\_1;  
} else if (prevLower \> low) {  
lower = low;  
upper = prevUpper;  
state = state.state\_3;  
} else {  
lower = prevLower;  
upper = prevUpper;  
state = state.state\_5;  
}  
case state\_5:  
if (prevUpper \< high) {  
lower = low;  
upper = high;  
state = state.state\_1;  
} else if (prevLower \> low) {  
lower = low;  
upper = high;  
state = state.state\_1;  
} else {  
lower = prevLower;  
upper = prevUpper;  
state = state.state\_5;  
}  
}

def barNumber = BarNumber();  
def barCount = HighestAll(If(IsNaN(close), 0, barNumber));  
def boxNum;  
def boxUpperIndex;

plot “Upper Band”;  
plot “Lower Band”;  
plot “Buy Signal” = CompoundValue(1, state[1] == state.state\_5 and prevUpper \< high, no);  
plot “Sell Signal” = CompoundValue(1, state[1] == state.state\_5 and prevLower \> low, no);

if (IsNaN(close)) {  
boxNum = boxNum[1] + 1;  
boxUpperIndex = 0;  
“Upper Band” = Double.NaN;  
“Lower Band” = Double.NaN;  
} else {  
boxNum = TotalSum(“Buy Signal” or “Sell Signal”);  
boxUpperIndex = fold indx = 0 to barCount - barNumber + 2 with valInd = Double.NaN  
while IsNaN(valInd)  
do if (GetValue(boxNum, -indx) != boxNum)  
then indx  
else Double.NaN;  
“Upper Band” = GetValue(upper, -boxUpperIndex + 1);  
“Lower Band” = GetValue(lower, -boxUpperIndex + 1);  
}

“Upper Band”.SetDefaultColor(CreateColor(10, 156, 35));  
“Lower Band”.SetDefaultColor(Color.RED);  
“Sell Signal”.SetPaintingStrategy(PaintingStrategy.BOOLEAN\_ARROW\_DOWN);  
“Sell Signal”.SetDefaultColor(Color.RED);  
“Buy Signal”.SetPaintingStrategy(PaintingStrategy.BOOLEAN\_ARROW\_UP);  
“Buy Signal”.SetDefaultColor(CreateColor(10, 156, 35));

------------------------------------------------------ end of code ---------------------------------------------
