有什么方法可以使这些布尔的选项更加优雅?
我写了一个很大的if块来让用户定义策略用于订单的设置。它由趋势定义的三个规则和四个选择条目组成。
FHEQ = input.bool(defval=false, title="Equator check?", group='Trend')
FHMA = input.bool(defval=false, title="4H ACC > 4H CR?", group='Trend')
var bool longConditionTrend = na
if FHTL and FHEQ and FHMA
longConditionTrend := FHCheckTL and FHCheckMA and PhaseCheckBull
else if FHTL
longConditionTrend := FHCheckTL
else if FHEQ
longConditionTrend := PhaseCheckBull
else if FHMA
longConditionTrend := FHCheckMA
else if FHTL and FHEQ
longConditionTrend := FHCheckTL and PhaseCheckBull
else if FHTL and FHMA
longConditionTrend := FHCheckTL and FHCheckMA
else if FHMA and FHEQ
longConditionTrend := FHCheckMA and PhaseCheckBull
else
longConditionTrend := na
plotshape(longConditionTrend, color=color.new(color.green, 0), style=shape.arrowup, size=size.normal, location=location.bottom, title='PlotsTrendConditions')
//////////////////////////////////////////////////////////////
///////////////////////Entry Conditions//////////////////////
FHACC = input.bool(defval=false, title="Close > FACC?", group='Entry')
FHCR = input.bool(defval=false, title="Close > FCR?", group='Entry')
FHPB = input.bool(defval=false, title='4H Pinball?', group='Entry')
OHPB = input.bool(defval=false, title="1H Pinball?", group='Entry')
var bool longConditionEntry = na
if FHACC and FHCR and OHPB and FHPB
longConditionEntry := FHSignalACC and FHSignalCR and OHSignalTLB and FHSignalTLB
else if FHACC and FHCR and OHPB
longConditionEntry := FHSignalACC and FHSignalCR and OHSignalTLB
else if FHACC and FHCR and FHPB
longConditionEntry := FHSignalACC and FHSignalCR and FHSignalTLB
else if FHACC and OHPB and FHPB
longConditionEntry := FHSignalACC and OHSignalTLB and FHSignalTLB
else if FHACC and OHPB
longConditionEntry := FHSignalACC and OHSignalTLB
else if FHACC and FHCR
longConditionEntry := FHSignalACC and FHSignalCR
else if FHACC and FHPB
longConditionEntry := FHSignalACC and FHSignalTLB
else if FHCR and OHPB and FHPB
longConditionEntry := FHSignalCR and OHSignalTLB and FHSignalTLB
else if FHCR and OHPB
longConditionEntry := FHSignalCR and OHSignalTLB
else if FHCR and FHPB
longConditionEntry := FHSignalCR and FHSignalTLB
else if FHPB and OHPB
longConditionEntry := FHSignalTLB and OHSignalTLB
else if OHPB
longConditionEntry := OHCheckTLB
else if FHACC
longConditionEntry := FHSignalACC
else if FHCR
longConditionEntry := FHSignalCR
else if FHPB
longConditionEntry := FHCheckTL
else
longConditionEntry := na
plotshape(longConditionEntry, color=color.new(color.green, 0), style=shape.arrowup, size=size.normal, location=location.top, title='PlotsEntryConditions')
LongCondition = longConditionEntry and longConditionTrend
if strategy.position_size > 0
LongCondition := na
我试图在IF块中编写所有可能的组合,但这使我很大。我想知道是否有更有效的方法可以做到这一点?
I have written a big IF block to let users define the settings the strategy uses for orders. It consists of three rules for trend definition and four rules to pick the entry.
FHEQ = input.bool(defval=false, title="Equator check?", group='Trend')
FHMA = input.bool(defval=false, title="4H ACC > 4H CR?", group='Trend')
var bool longConditionTrend = na
if FHTL and FHEQ and FHMA
longConditionTrend := FHCheckTL and FHCheckMA and PhaseCheckBull
else if FHTL
longConditionTrend := FHCheckTL
else if FHEQ
longConditionTrend := PhaseCheckBull
else if FHMA
longConditionTrend := FHCheckMA
else if FHTL and FHEQ
longConditionTrend := FHCheckTL and PhaseCheckBull
else if FHTL and FHMA
longConditionTrend := FHCheckTL and FHCheckMA
else if FHMA and FHEQ
longConditionTrend := FHCheckMA and PhaseCheckBull
else
longConditionTrend := na
plotshape(longConditionTrend, color=color.new(color.green, 0), style=shape.arrowup, size=size.normal, location=location.bottom, title='PlotsTrendConditions')
//////////////////////////////////////////////////////////////
///////////////////////Entry Conditions//////////////////////
FHACC = input.bool(defval=false, title="Close > FACC?", group='Entry')
FHCR = input.bool(defval=false, title="Close > FCR?", group='Entry')
FHPB = input.bool(defval=false, title='4H Pinball?', group='Entry')
OHPB = input.bool(defval=false, title="1H Pinball?", group='Entry')
var bool longConditionEntry = na
if FHACC and FHCR and OHPB and FHPB
longConditionEntry := FHSignalACC and FHSignalCR and OHSignalTLB and FHSignalTLB
else if FHACC and FHCR and OHPB
longConditionEntry := FHSignalACC and FHSignalCR and OHSignalTLB
else if FHACC and FHCR and FHPB
longConditionEntry := FHSignalACC and FHSignalCR and FHSignalTLB
else if FHACC and OHPB and FHPB
longConditionEntry := FHSignalACC and OHSignalTLB and FHSignalTLB
else if FHACC and OHPB
longConditionEntry := FHSignalACC and OHSignalTLB
else if FHACC and FHCR
longConditionEntry := FHSignalACC and FHSignalCR
else if FHACC and FHPB
longConditionEntry := FHSignalACC and FHSignalTLB
else if FHCR and OHPB and FHPB
longConditionEntry := FHSignalCR and OHSignalTLB and FHSignalTLB
else if FHCR and OHPB
longConditionEntry := FHSignalCR and OHSignalTLB
else if FHCR and FHPB
longConditionEntry := FHSignalCR and FHSignalTLB
else if FHPB and OHPB
longConditionEntry := FHSignalTLB and OHSignalTLB
else if OHPB
longConditionEntry := OHCheckTLB
else if FHACC
longConditionEntry := FHSignalACC
else if FHCR
longConditionEntry := FHSignalCR
else if FHPB
longConditionEntry := FHCheckTL
else
longConditionEntry := na
plotshape(longConditionEntry, color=color.new(color.green, 0), style=shape.arrowup, size=size.normal, location=location.top, title='PlotsEntryConditions')
LongCondition = longConditionEntry and longConditionTrend
if strategy.position_size > 0
LongCondition := na
I have tried to write every possible combination in the IF blocks but this gets me very big blocks. I was wondering if there is a more efficient way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论