Skip to content
Open RaamTrade

RC2_LEARNING_SET_SHAPE

<name> is a learning set’s name, so its value must be LearningSet(...).

What it means

A learning set line is learning_set_N = LearningSet(param=value, ...). Each value is Range(from, to), Range(from, to, step) with plain numbers, or a plain value. LearningSet(...) names everything it holds: its parameters, and optionally title= and run=. No unnamed values.

Why it happens

A label inside the set:

class LabelledSet(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("trend", fast=Range(5, 15))
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)

A Range with one number:

class ShortRange(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))
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

Name the parameters, and give each Range its two ends (and optionally a step). A set’s name goes in title=.

class PlainSet(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))
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_NAME — the line’s name is not learning_set_1 to learning_set_5.