"breakdown" language for breakout sells

This commit is contained in:
tim
2025-04-10 13:34:48 -04:00
parent 556554fbf3
commit 0673b01ac8
5 changed files with 23 additions and 8 deletions

View File

@@ -173,7 +173,7 @@ export class Shape {
// text label
let text = allocationText(this.model.buy, this.model.allocation, this.model.amount, this.model.baseSymbol, this.model.amountSymbol)
if (this.model.breakout)
text += ' ' + (this.model.textLocation==='above' ? '▲Breakout▲' : '▼Breakout▼')
text += ' ' + (this.model.textLocation==='above' ? '▲Breakout▲' : '▼Breakdown▼')
if (this.model.extraText)
text += ' '+this.model.extraText
if (this.debug) text = `${this.id} ` + text

View File

@@ -154,3 +154,7 @@ export function timestamp(date = null) {
export function dateString(datetime) {
return datetime.toLocaleString({dateStyle: 'medium', timeStyle: 'short'})
}
export function logicalXOR(a, b) {
return (a || b) && !(a && b)
}

View File

@@ -405,12 +405,12 @@ function dirtyLine(a, b) {
return result
}
const name = computed(()=>props.builder.breakout?'Breakout':'Limit')
const name = computed(()=>props.builder.breakout?(props.order.buy?'Breakout':'Breakdown'):'Limit')
const description = computed(()=>{
const buy = props.order.buy
const above = buy === props.builder.breakout
const plural = props.builder
const plural = props.builder.rungs > 1 ? 's' : ''
return (buy?'Buy ':'Sell ')+(above?'above':'below')+' the line'+(plural?'s':'')
})

View File

@@ -1,5 +1,5 @@
<template>
<rung-builder :name="(builder.breakout?'Breakout':'Limit')+(builder.rungs>1?' Ladder':'')"
<rung-builder :name="(builder.breakout?(order.buy?'Breakout':'Breakdown'):'Limit')+(builder.rungs>1?' Ladder':'')"
:description="description"
:order="order" :builder="builder"
v-model="priceEndpoints" :mode="0" :flip="flipped"
@@ -200,7 +200,8 @@ const stdWidth = computed(()=>co.meanRange)
const description = computed(()=>{
const buy = props.order.buy
const above = buy === props.builder.breakout
return (buy?'Buy ':'Sell ')+(above?'above':'below')+' the line'
const plural = props.builder.rungs > 1 ? 's' : ''
return (buy?'Buy ':'Sell ')+(above?'above':'below')+' the line'+plural
})
function getModelValue(model) {

View File

@@ -18,9 +18,12 @@
:disabled="rungsDisabled"
style="width: 6.6em; max-height: 2.5em; height: 2.5em"
/>
<v-switch v-model="builder.breakout" label="Breakout" persistent-hint :color="color" hide-details/>
<v-switch v-model="breakout" :label="order.buy?'Breakout':'Breakdown'"
persistent-hint :color="switchColor" :base-color="switchColor" hide-details direction="vertical"
density="compact"
/>
<div class="mx-auto"><span style="font-size: .7em; vertical-align: top"
:style="builder.breakout?{color:color}:null">
:style="builder.breakout?{color:new Color(color).lighten(0.5).string()}:null">
{{description}}
</span></div>
</div>
@@ -66,6 +69,7 @@ import {
vectorNeg,
vectorSub
} from "@/vector.js";
import {logicalXOR} from "@/common.js";
const co = useChartOrderStore()
const endpoints = defineModel('modelValue') // 2-item list of points/values
@@ -111,6 +115,11 @@ watchEffect(()=>{
}
})
const breakout = computed({
get() {return !logicalXOR(props.builder.breakout, props.order.buy)},
set(v) {props.builder.breakout = !logicalXOR(v, props.order.buy)},
})
function setEndpoints(a, b) {
endpoints.value = [devectorize(a), devectorize(b)]
}
@@ -235,6 +244,7 @@ const color = computed({
props.builder.color = c.saturation <= maxLightness ? v : c.lightness(maxLightness).rgb().string()
}
})
const switchColor = computed(()=>props.builder.breakout ? color.value : null)
const colorStyle = computed(() => {
// return {'color': color.value}
return {}