דלגו לתוכן
פתיחת RaamTrade

RC2_LEARNING_SET_NOT_OPTIMIZABLE

תוכן זה אינו זמין עדיין בשפה שלך.

In <set>, <name> has no optimizer range (opt_min/opt_max), so no learning set can search or change it.

What it means

A learning set lives inside the strategy’s own optimizer space. A number Param with no opt_min/opt_max is outside it — the author chose not to let the optimizer move it — so no set can search it or fix it at another value. A text Param cannot be set at all.

Why it happens

Moving a Param that has no optimizer range:

class LockedParam(Strategy):
trade = Symbol()
sizing = FixedCapital()
fast = Param(10, min=2, max=100, opt_min=5, opt_max=30)
slow = Param(30, min=10, max=200, opt_min=20, opt_max=80, opt_step=5)
offset = Param(0.01, min=0.0, max=1.0)
use_filter = Param(False)
learning_set_2 = LearningSet(offset=0.02)
def execute(self):
f = SMA(self.fast, on=self.trade)
s = SMA(self.slow, on=self.trade)
if f.value > s.value and self.trade.is_flat:
self.buy(self.trade)

Searching it is refused the same way:

class SwitchRange(Strategy):
trade = Symbol()
sizing = FixedCapital()
fast = Param(10, min=2, max=100, opt_min=5, opt_max=30)
slow = Param(30, min=10, max=200, opt_min=20, opt_max=80, opt_step=5)
offset = Param(0.01, min=0.0, max=1.0)
use_filter = Param(False)
learning_set_2 = LearningSet(offset=Range(0.0, 0.5))
def execute(self):
f = SMA(self.fast, on=self.trade)
s = SMA(self.slow, on=self.trade)
if f.value > s.value and self.trade.is_flat:
self.buy(self.trade)

How to fix it

Leave locked Params out of the set. If a number should be searchable, give its Param opt_min and opt_max first.

class InsideTheSpace(Strategy):
trade = Symbol()
sizing = FixedCapital()
fast = Param(10, min=2, max=100, opt_min=5, opt_max=30)
slow = Param(30, min=10, max=200, opt_min=20, opt_max=80, opt_step=5)
offset = Param(0.01, min=0.0, max=1.0)
use_filter = Param(False)
learning_set_2 = LearningSet(fast=Range(5, 15), use_filter=True)
def execute(self):
f = SMA(self.fast, on=self.trade)
s = SMA(self.slow, on=self.trade)
if f.value > s.value and self.trade.is_flat:
self.buy(self.trade)
  • Learning sets
  • RC2_LEARNING_SET_OUTSIDE_RANGE — the Param has a range, but the set goes past it.