0 registered members (),
1,173
guests, and 0
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
How to exclude individual asset in Lookback period from trading?
#475390
12/05/18 19:48
12/05/18 19:48
|
Joined: Feb 2017
Posts: 369
Dalla
OP
Senior Member
|
OP
Senior Member
Joined: Feb 2017
Posts: 369
|
I have a strategy that trades momentum over a stock universe of some ~200 stocks. It trades daily bars and has a one year lookback. Some of the stocks have been listed longer than others, e.g. if I run a backtest from 2000, some of the stocks was not listed until 2005, 2010 etc. My current problem is that sometimes after sorting stocks by momentum, trades are skipped because the one or more of the selected stocks are in a lookback. That is , they have a high momentum, but they were listed less than a year ago. I have tried adding some logic to the script, but it doesn´t seem to help. I guess this LOOKBACK variable is for the entire script, and not per asset? Can I somehow exclude assets that are still in their lookback period from my momentum calculations?
//Find composite momentum
while(loop(Assets))
{
asset(Loop1);
exitLong();
//This is my attempt to exclude stocks in lookback
if(is(LOOKBACK)) {
printf("nCurrently in lookback %s", Asset);
asset_num++;
continue;
}
var mom12 = (priceClose(TRADING_DAYS_1_MONTH) - priceClose(TRADING_DAYS_12_MONTH)) / priceClose(TRADING_DAYS_12_MONTH);
var mom6 = (priceClose(TRADING_DAYS_1_MONTH) - priceClose(TRADING_DAYS_6_MONTH )) / priceClose(TRADING_DAYS_6_MONTH);
var mom3 = (priceClose(TRADING_DAYS_1_MONTH) - priceClose(TRADING_DAYS_3_MONTH )) / priceClose(TRADING_DAYS_3_MONTH);
var compositeMomentum = (mom12+mom6+mom3)/3.;
Returns[asset_num] = compositeMomentum;
asset_num++;
}
//Capital = 100000;
//Margin = Capital+WinTotal-LossTotal;
// sort returns lowest to highest
int* idx = sortIdx(Returns, -asset_num);
sortData(Returns, -asset_num);
int i, j = 0;
for(; j < 10; i++)
{
asset(Assets[idx[i]]);
if (priceClose(0) == 0) {
printf("nPrice is 0 for %s, skipping", Asset);
continue;
}
var size = round(10000.0/priceClose(0));
printf("nBuying %f %s at %f", size, Asset, priceClose(0));
enterLong(size);
j++;
}
printf("n--------------------------");
|
|
|
Re: How to exclude individual asset in Lookback period from trading?
[Re: DdlV]
#475396
12/06/18 06:43
12/06/18 06:43
|
Joined: Feb 2017
Posts: 369
Dalla
OP
Senior Member
|
OP
Senior Member
Joined: Feb 2017
Posts: 369
|
I don't think I'm confused. The message I'm seeing in the log occationally when entering a trade is
[ABB::L] Skipped (outside bars 523..3073)
Looking through the manual regarding these messages "The trade was not entered because trading was disabled on that bar, for instance due to SKIP flags, in the LookBack period, inside a TimeFrame, or during weekends or holidays." The only thing that applies here is the lookback. I tested your solution since it would make sense, but unfortunatly it doesn´t help.
|
|
|
Re: How to exclude individual asset in Lookback period from trading?
[Re: Dalla]
#475402
12/06/18 17:18
12/06/18 17:18
|
Joined: Jun 2013
Posts: 1,609
DdlV
Serious User
|
Serious User
Joined: Jun 2013
Posts: 1,609
|
Well... LOOKBACK applies to the Bar, not the Asset(s). run() is executed every Bar. If the current Bar is in the Lookback period, LOOKBACK will be set, and trade entry attempts will fail with that message. This is all correct operation - trading doesn't start until after the Lookback period. Correct Zorro operation - your script's operation is a differnt issue - you may not want your script to try to enter trades during the Lookback period. But if you're seeing that message on a Bar after the Lookback period, then something else is causing it... HTH.
|
|
|
|