PageSourceSearch

https://aialaarchive.org/assets/planner-state.mjs

js aialaarchive.org collected 2026-10-05 07:54:37 UTC 1,318 bytes, 28 lines download raw bytes

1import {presets, numberInRange} from './calculator-math.mjs';
2// Currency changes need confirmation only when the quote/account pair changes.
3export function conversionUpdate(previous, next) {
4 const before=presets[previous.instrument]?.quote, after=presets[next.instrument]?.quote;
5 if(after && after===next.currency) return '1';
6 if(before && before===after && previous.currency===next.currency) return null;
7 return '';
8}
9export function plannerInput(raw) {
10 const values={...raw};
11 const simple=values.planner==='simple';
12 if(simple) {
13  Object.assign(values,{riskMode:'percent',stopUnit:'pips',targetUnit:'pips',spread:0,commission:0,swap:0,nights:0});
14  const preset=presets[values.instrument];
15  if(preset) {values.contract=preset.contract;values.pip=preset.pip;}
16  if(preset?.quote===values.currency) values.conversion=1;
17 }
18 for(const [mode,key,value] of [['percent','riskPercent',1],['amount','riskAmount',100],['lots','lots',0.1]]) {
19  if(values.riskMode!==mode) values[key]=value;
20 }
21 return values;
22}
23export function pipExit(value, unit, entry, pip, direction, exit) {
24 if(unit==='pips') return value;
25 const sign=(direction==='buy'?1:-1)*(exit==='stop'?-1:1);
26 const distance=(Number(value)-Number(entry))*sign/Number(pip);
27 try{return numberInRange(exit,distance);}catch{return exit==='stop'?50:100;}
28}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.