有什么方法可以使这些布尔的选项更加优雅?

发布于 2025-01-25 06:22:54 字数 2932 浏览 2 评论 0原文

我写了一个很大的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文