プログラマ化取引に最初に接触する多くの人は,最適化パラメータの方法を選択してパラメータを選択します. 取引環境が変化するにつれて,トレーダーは徐々にパラメータを自主的に調整し始めます. すべてのパラメータは,私たちが常に調整する必要があるわけではありませんが,環境が変化するにつれて,私たちのプログラム内のパラメータを調整すると,このような行動は,プログラムをより柔軟にすることができます.
では,この順勢突破戦略はどの市場でより儲かるのでしょうか? それは,傾向が明らかに大きな空頭または多くの空頭市場を走行することで,より儲かるでしょう. しかし,もし私たちが整合のパターンの動きに遭遇したら,多空信号の反復の問題が発生する可能性があります.しかし,整合はすべての順勢戦略の死穴であり,この戦略の問題だけでなく,この戦略の問題であることを私たちは知っています.Nは,N天域の突破戦略の問題の鍵です.
では,プログラム取引の分野では,このNがどのような問題になるのでしょうか? Nを5に設定してみましょう. もし,現在トレンドがはっきりしているなら,私たちはより早く入場できます. しかし,トレンドがはっきりしていない場合,一瞬にして,これは非常に面倒です.
まず,トレンドは,非常に明白なものがNの大きさを決定しているかどうかである.トレンドが明白であるならば,インデックスが波動する比率が大きいことを意味する.逆に,トレンドが整合であるならば,インデックスが特定の区間内で整理されることを意味する,つまり波動は比率が小さいことを意味する.したがって,波動はNの大きさを決定する鍵である.
Nを20に設定すると,20K棒の標準差が得られます.ここではV20と呼びましょう. 短時間で測定したい場合は,10K棒で10K棒の標準差が得られます. V10を仮定します.
今日の価格の高さが過去N日間の最高値を突破したときに購入し,今日の低い値が過去N日間の最低値を突破したときに売ると仮定します. この戦略は,傾向が顕著な商品,特に一面商品に適しています.
商品株式指数IFをテストし,サブグラフ1の周期は1 hour,サブグラフ2の周期は1 dayである2つのグラフを使用する.ソースコードは以下のとおりです:
inputs: x(20),y(10) ;
//定义波动率参数
Vars: V20(10),V10(10),N2(10),N1(10),N(10);
//定义变量
V20=Volatility(x)of data2;
V10=Volatility(y)of data2;
//定义波动率取日线数据,取子图2的日线线数。这个Volatility函数是分别取20日跟10日ATR的移动平均数值
if V10<>0 and N2<>0 then begin
N1=(N*V20)/V10;
//定义N1的值,前提让分母不为0时执行,
//这N1=(N*V20)/V10是此参数自动化的核心, 代表你将原本固定N天的参考值改成会/根据V20和V10而变动的N1值, V20是较长期的,而V10是近期,大家看到这个公式应该可以发现,当你近期的波动率变大时,表示趋势出现,你的N1就会变小,而近期的波动率变得越小时,表示在盘整,N1就会变大,这样新的N变化似乎比较合理一点。
N2=IntPortion(N1);
//给N1取整赋值给N2
end;
value1=Average(high of data2,N2)of data2;
value2=Average(low of data2,N2)of data2;
//定义前N2天的高点跟低点的值给value1和value2
if close crosses above value1 then begin
buy next bar at market;
end;
//当价格上穿高点时买入或者反向
if close crosses below value2 then begin
sellshort next bar at market;
end;
//当价格下穿低点时开空或者反向

突破口戦略のパラメータの自動化について,皆さんと一緒に学び,議論してください!