Стандартный способ реализации с использованием циклов, которые я уже пробовал. Это займет много времени, если будет сделано по данным тика, поскольку пройденный список px будет огромным. Есть ли эффективный способ сделать это без использования циклов. Может ли кто-нибудь использовать списки?Как вычислить стоп-лосс в kdb?
tlstop: {[ls; entry; loss; pxs]
origentry: entry;
i:0;
curloss: 0f;
exitpx: 0n;
while[(i<count pxs) and (curloss>loss);
curpx: pxs[i];
curpnl: $[ls=`l; curpx-entry; entry-curpx];
exitpx: $[curpnl<=loss; curpx; exitpx];
entry: $[curpnl>curloss; curpx; entry];
curloss: curpnl;
i: i+1;
];
exitpx: $[exitpx=0n; last pxs; exitpx];
ans: $[ls=`l; exitpx-origentry; origentry-exitpx];
ans
};
/tlstop[`s; 100.0; -2.0; (99 98 97 96 93)]
Эта функция предназначена для Бэктэстинг, а не жить торговые системы. –