开盘区间价策略(MC版).docx
开盘区间价策略(MC版)
一种基于开盘区间和收盘价交易条件的策略,旨在通过识别开盘区间内的最高价和最低价,并在特定条件下进行买入或卖空操作。
核心逻辑:
开盘区间设定:
开盘区间时间(OpenRangeTime)根据当前交易日的开盘时间和设定的最小区间长度(iRangeLengthMin)计算得出。
在此期间,策略记录并更新开盘区间内的最高价(RangeH)和最低价(RangeL),以及它们对应的时间(TimeH和TimeL)。
交易条件:
如果当前时间是开盘区间结束后且处于入场时间限制(EntryTimeLimit)内,且是首次交易(FirstTrade),则根据收盘价与开盘区间最高价和最低价的比较结果决定交易操作。
如果收盘价大于等于开盘区间最高价,则下一根K线开盘时买入。
如果收盘价小于等于开盘区间最低价,则下一根K线开盘时卖空。
交易执行:
买入或卖空操作均在下一根K线开盘时执行,且交易量为设定的合约数量(iContracts)。
首次交易后,FirstTrade标志设置为false,防止在同一天内重复执行首次交易逻辑。
退出策略:
默认情况下,策略在收盘时退出所有持仓。
其他设置:
策略包含了一些额外的变量和条件(如CustomCond,DateInFromTo等),但在此核心逻辑中未直接使用。
策略可通过设置ShowText参数来显示交易信号和相关信息。
本策略通过识别开盘区间内的价格极值,并结合首次交易条件和入场时间限制,在特定情况下执行买入或卖空操作。其交易执行和退出策略均较为简单直接,旨在捕捉开盘区间后的价格走势机会。
代码解释:
输入参数:
最小区间长度(iRangeLengthMin)为30
制动点数(iBrakePoints)
入场时间限制(iEntryTimeLimit)为-30
合约数量(iContracts)为1
盈利目标(iProfitTarget)为500
价格(Price)为收盘价
长度(Length)为12
是否显示文本(ShowText)为真
Inputs:
iRangeLengthMin(30),
iBrakePoints(1),
iEntryTimeLimit(-30),
iContracts(1),
iProfitTarget(500),
Price(Close),
Length(12),
ShowText(true)
定义变量:
Var:
OpenRangeTime(CalcTime(SessionStartTime(0,1),iRangeLengthMin)),开盘区间时间
EntryTimeLimit(CalcTime(SessionEndTime(0,1),iEntryTimeLimit)),入场时间限制
RangeH(0),RangeL(0),//区间的最高价和最低价
TimeH(0),TimeL(0),//最高价和最低价的时间
RangeHtime(0),RangeLtime(0),
vDollarStop(500),元止损
FirstTrade(true),首次交易标志
CustomCond(true),
Cond4trade(true),
vVolumeLenght(7),
ExpAvg(0),
firstcheck(true),
MaxP(0),
DateInFromTo(false)
新的一天设置
ifDateDate[1]thenbegin#如果当前日期与前一日不同
DateInFromTo=(Date=iFromYYYMMDDandDate=iToYYYMMDD);
FirstTrade=true;重置首次交易标志
RangeH=H;RangeL=L;第一天的最高价和最低价作为区间的初始值
TimeH=Time;TimeL=Time;记录最高价和最低价的时间
end
区间设置
IfLLowD(0)[1]thenTimeL=Time;如果新低,更新最低价的时间
IfHHighD(0)[1]thenTimeH=Time;如果新高,更新最高价的时间
IfTime=OpenRangeTimethenbegin如果达到开盘区间结束时间
RangeH=HighD(0);更新区间最高价
RangeL=LowD(0);更新区间最低价
RangeHtime=TimeH;