158 lines
3.9 KiB
JavaScript
158 lines
3.9 KiB
JavaScript
|
|
function newStrategyParts () {
|
|
const MODULE_NAME = 'Strategy Parts'
|
|
const ERROR_LOG = true
|
|
const logger = newWebDebugLog()
|
|
logger.fileName = MODULE_NAME
|
|
|
|
/*
|
|
|
|
This object deals with Strategy Parts, a type of Floating Object that shows together with other parts a graphical representation of a strategy.
|
|
|
|
*/
|
|
|
|
let thisObject = {
|
|
|
|
createNewStrategyPart: createNewStrategyPart,
|
|
destroyStrategyPart: destroyStrategyPart,
|
|
initialize: initialize,
|
|
finalize: finalize
|
|
|
|
}
|
|
|
|
let floatingLayer
|
|
|
|
return thisObject
|
|
|
|
function finalize () {
|
|
floatingLayer.finalize()
|
|
floatingLayer = undefined
|
|
}
|
|
|
|
function initialize (pFloatingLayer) {
|
|
floatingLayer = pFloatingLayer
|
|
}
|
|
|
|
function createNewStrategyPart (type, pPayload, callBackFunction) {
|
|
let floatingObject = newFloatingObject()
|
|
floatingObject.payload = pPayload
|
|
floatingObject.initialize('Strategy Part', type, floatingLayer, onInitialized)
|
|
floatingObject.underlayingObject.type = type
|
|
|
|
function onInitialized (err) {
|
|
const FRICTION = 0.97
|
|
|
|
switch (type) {
|
|
case 'Strategy': {
|
|
level_1()
|
|
break
|
|
}
|
|
case 'Strategy Entry': {
|
|
level_2()
|
|
break
|
|
}
|
|
case 'Strategy Exit': {
|
|
level_2()
|
|
break
|
|
}
|
|
case 'Trade Entry': {
|
|
level_2()
|
|
break
|
|
}
|
|
case 'Trade Exit': {
|
|
level_2()
|
|
break
|
|
}
|
|
case 'Stop': {
|
|
level_2()
|
|
break
|
|
}
|
|
case 'Take Profit': {
|
|
level_2()
|
|
break
|
|
}
|
|
case 'Phase': {
|
|
level_3()
|
|
break
|
|
}
|
|
case 'Situation': {
|
|
level_4()
|
|
break
|
|
}
|
|
case 'Condition': {
|
|
level_5()
|
|
break
|
|
}
|
|
default: {
|
|
if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> Part Type not Recognized -> type = ' + type) }
|
|
}
|
|
}
|
|
|
|
function level_1 () {
|
|
floatingObject.friction = FRICTION
|
|
|
|
floatingObject.initializeMass(100)
|
|
floatingObject.initializeRadius(45)
|
|
floatingObject.initializeImageSize(80)
|
|
floatingObject.initializeFontSize(10)
|
|
|
|
floatingObject.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)'
|
|
}
|
|
|
|
function level_2 () {
|
|
floatingObject.friction = FRICTION
|
|
|
|
floatingObject.initializeMass(50)
|
|
floatingObject.initializeRadius(40)
|
|
floatingObject.initializeImageSize(70)
|
|
floatingObject.initializeFontSize(10)
|
|
|
|
floatingObject.fillStyle = 'rgba(' + UI_COLOR.GREEN + ', 1)'
|
|
}
|
|
|
|
function level_3 () {
|
|
floatingObject.friction = FRICTION
|
|
|
|
floatingObject.initializeMass(10)
|
|
floatingObject.initializeRadius(35)
|
|
floatingObject.initializeImageSize(60)
|
|
floatingObject.initializeFontSize(10)
|
|
|
|
floatingObject.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', 1)'
|
|
}
|
|
|
|
function level_4 () {
|
|
floatingObject.friction = FRICTION
|
|
|
|
floatingObject.initializeMass(10)
|
|
floatingObject.initializeRadius(30)
|
|
floatingObject.initializeImageSize(50)
|
|
floatingObject.initializeFontSize(10)
|
|
|
|
floatingObject.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)'
|
|
}
|
|
|
|
function level_5 () {
|
|
floatingObject.friction = FRICTION
|
|
|
|
floatingObject.initializeMass(10)
|
|
floatingObject.initializeRadius(25)
|
|
floatingObject.initializeImageSize(30)
|
|
floatingObject.initializeFontSize(10)
|
|
|
|
floatingObject.fillStyle = 'rgba(' + UI_COLOR.RED + ', 1)'
|
|
}
|
|
|
|
floatingObject.labelStrokeStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)'
|
|
|
|
floatingLayer.addFloatingObject(floatingObject)
|
|
|
|
callBackFunction(GLOBAL.CUSTOM_OK_RESPONSE, floatingObject.handle)
|
|
}
|
|
}
|
|
|
|
function destroyStrategyPart (pFloatingObjectHandle) {
|
|
floatingLayer.killFloatingObject(pFloatingObjectHandle)
|
|
}
|
|
}
|