Initial Stop and Take Profit Implemented

This commit is contained in:
Luis Fernando Molina committed 2019-05-29 12:07:39 +02:00
1 parent b6af3d9deb
commit 336c3b8d5b
6 files changed
+98 -19

No files matched your search

+3 -3
View File
@@ -219,11 +219,11 @@ function newStrategyPart () {
compatibleSubType = undefined
break
case 'Stop':
compatibleType = 'Manage Stage'
compatibleType = 'Manage Stage' + '.' + 'Initial Definition'
compatibleSubType = undefined
break
case 'Take Profit':
compatibleType = 'Manage Stage'
compatibleType = 'Manage Stage' + '.' + 'Initial Definition'
compatibleSubType = undefined
break
case 'Phase':
@@ -239,7 +239,7 @@ function newStrategyPart () {
compatibleSubType = undefined
break
case 'Situation':
compatibleType = 'Phase' + '.' + 'Take Position Event' + '.' + 'Trigger On Event' + '.' + 'Trigger Off Event'
compatibleType = 'Take Position Event' + '.' + 'Trigger On Event' + '.' + 'Trigger Off Event' + '.' + 'Next Phase Event'
compatibleSubType = undefined
break
case 'Condition':
+14 -2
View File
@@ -738,6 +738,18 @@ function newStrategyPartConstructor () {
currentRadius: 0,
angle: 135
},
{
action: 'Add Missing Items',
actionFunction: payload.onMenuItemClick,
label: 'Add Missing Items',
visible: false,
iconPathOn: 'target',
iconPathOff: 'trash',
rawRadius: 8,
targetRadius: 0,
currentRadius: 0,
angle: -40
},
{
action: 'Delete Initial Definition',
actionFunction: payload.onMenuItemClick,
@@ -748,7 +760,7 @@ function newStrategyPartConstructor () {
rawRadius: 8,
targetRadius: 0,
currentRadius: 0,
angle: -20
angle: 0
},
{
action: 'Download',
@@ -760,7 +772,7 @@ function newStrategyPartConstructor () {
rawRadius: 8,
targetRadius: 0,
currentRadius: 0,
angle: 20
angle: 40
}]
break
}
@@ -143,7 +143,12 @@ function newNodeDeleter () {
} else {
completeDeletion(node, rootNodes)
}
if (node.stopLoss !== undefined) {
deleteManagedItem(node.stopLoss)
}
if (node.takeProfit !== undefined) {
deleteManagedItem(node.takeProfit)
}
destroyPart(node)
cleanNode(node)
}
@@ -102,6 +102,13 @@ function newPartsFromNodes () {
}
case 'Initial Definition': {
createPart('Initial Definition', node.name, node, parentNode, chainParent, 'Initial Definition')
if (node.triggerOff !== undefined) {
createPartFromNode(node.triggerOff, stage, stage)
}
if (node.takePosition !== undefined) {
createPartFromNode(node.takePosition, stage, stage)
}
return
}
case 'Take Position Event': {
@@ -218,7 +225,16 @@ function newPartsFromNodes () {
}
},
openStage: {
initialDefinition: {}
initialDefinition: {
stopLoss: {
phases: [],
maxPhases: 1
},
takeProfit: {
phases: [],
maxPhases: 1
}
}
},
manageStage: {
stopLoss: {
@@ -244,6 +260,8 @@ function newPartsFromNodes () {
createPart('Initial Definition', '', strategy.openStage.initialDefinition, strategy.openStage, strategy.openStage)
createPart('Stop', '', strategy.manageStage.stopLoss, strategy.manageStage, strategy.manageStage)
createPart('Take Profit', '', strategy.manageStage.takeProfit, strategy.manageStage, strategy.manageStage)
createPart('Stop', 'Initial Stop', strategy.openStage.initialDefinition.stopLoss, strategy.openStage.initialDefinition, strategy.openStage.initialDefinition)
createPart('Take Profit', 'Initial Take Profit', strategy.openStage.initialDefinition.takeProfit, strategy.openStage.initialDefinition, strategy.openStage.initialDefinition)
}
function addMissingStages (node) {
@@ -267,10 +285,20 @@ function newPartsFromNodes () {
if (node.openStage === undefined) {
node.openStage = {
initialDefinition: {
stopLoss: {
phases: [],
maxPhases: 1
},
takeProfit: {
phases: [],
maxPhases: 1
}
}
}
createPart('Open Stage', '', node.openStage, node, node, 'Open Stage')
createPart('Initial Definition', '', node.openStage.initialDefinition, node.openStage, node.openStage)
createPart('Stop', 'Initial Stop', node.openStage.initialDefinition.stopLoss, node.openStage.initialDefinition, node.openStage.initialDefinition)
createPart('Take Profit', 'Initial Take Profit', node.openStage.initialDefinition.takeProfit, node.openStage.initialDefinition, node.openStage.initialDefinition)
}
if (node.manageStage === undefined) {
node.manageStage = {
@@ -312,24 +340,52 @@ function newPartsFromNodes () {
}
function addMissingItems (node) {
if (node.stopLoss === undefined) {
node.stopLoss = {
phases: []
if (node.type === 'Initial Definition') {
if (node.stopLoss === undefined) {
node.stopLoss = {
phases: [],
maxPhases: 1
}
createPart('Stop', 'Initial Stop', node.stopLoss, node, node)
}
createPart('Stop', '', node.stopLoss, node, node)
}
if (node.takeProfit === undefined) {
node.takeProfit = {
phases: []
if (node.takeProfit === undefined) {
node.takeProfit = {
phases: [],
maxPhases: 1
}
createPart('Take Profit', 'Initial Take Profit', node.takeProfit, node, node)
}
} else {
if (node.stopLoss === undefined) {
node.stopLoss = {
phases: []
}
createPart('Stop', '', node.stopLoss, node, node)
}
if (node.takeProfit === undefined) {
node.takeProfit = {
phases: []
}
createPart('Take Profit', '', node.takeProfit, node, node)
}
createPart('Take Profit', '', node.takeProfit, node, node)
}
}
function addInitialDefinition (node) {
if (node.initialDefinition === undefined) {
node.initialDefinition = {}
node.initialDefinition = {
stopLoss: {
phases: [],
maxPhases: 1
},
takeProfit: {
phases: [],
maxPhases: 1
}
}
createPart('Initial Definition', '', node.initialDefinition, node, node)
createPart('Stop', 'Initial Stop', node.initialDefinition.stopLoss, node.initialDefinition, node.initialDefinition)
createPart('Take Profit', 'Initial Take Profit', node.initialDefinition.takeProfit, node.initialDefinition, node.initialDefinition)
}
}
@@ -362,7 +418,9 @@ function newPartsFromNodes () {
let phase = {
name: 'New Phase',
formula: {},
nextPhaseEvent: {}
nextPhaseEvent: {
situations: []
}
}
phaseParent.phases.push(phase)
let phaseChainParent
@@ -149,7 +149,9 @@ function newProtocolNode () {
let object = {
type: node.type,
subType: node.subType,
name: node.name
name: node.name,
stopLoss: getProtocolNode(node.stopLoss),
takeProfit: getProtocolNode(node.takeProfit)
}
return object
}
@@ -173,6 +173,8 @@ function newWorkspaceNode () {
type: node.type,
subType: node.subType,
name: node.name,
stopLoss: getWorkspaceNode(node.stopLoss),
takeProfit: getWorkspaceNode(node.takeProfit),
savedPayload: getSavedPayload(node)
}
return object