菲阿里四价tbquant源码
生活随笔
收集整理的這篇文章主要介紹了
菲阿里四价tbquant源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Params
Numeric M(35); //計算的周期數
Numeric SS(1); //手數
Numeric TR(5);//跟蹤止損比例
Vars
Series<Numeric> Nop;
Series<Numeric> HH1;
Series<Numeric> LL1;
Series<Numeric> CC1;
Series<Numeric> P;
Series<Numeric> R1;
Series<Numeric> R2;
Series<Numeric> R3;
Series<Numeric> S1;
Series<Numeric> S2;
Series<Numeric> S3;
Series<Numeric> RM1;
Series<Numeric> RM2;
Series<Numeric> RM3;
Series<Numeric> SM1;
Series<Numeric> SM2;
Series<Numeric> SM3;
Series<Numeric> SY;
Series<Numeric> XY;
Series<Numeric> LowerAfterEntry;
Series<Numeric> HigherAfterEntry;
Series<Numeric> Myprice;
Series<Numeric> Myprice2;
Series<Bool> bartoday;
Series<Bool> bartoday2;
Series<Bool> Condition1;
Series<Bool> Condition2;
Series<Bool> Condition3;
Series<Bool> Condition4;
Series<Bool> Condition5;
Series<Bool> Condition6;
Series<Bool> T1;
Series<Bool> T2;
Events
OnBar(ArrayRef<Integer> indexs)
{
bartoday=(barssinceToday==0);//今日第一根BAR線
bartoday2=(barssincetoday>0);//大于今日第一根BAR線
If(bartoday)
{
Nop=Open;//獲得今日開盤價
}
HH1=HighD(M);//M交易日內的最高價
LL1=LowD(M);//M交易日內的最低價
CC1=CloseD(M);//M交易日內的收盤價
P=(HH1+LL1+CC1)/3;//以上三個價格的均價,中軸線;
R1=2*P-LL1;//做第一個初始阻力價;
S1=2*P-HH1;//做第一個初始支撐價;
R2= P+(R1-S1);//第二個初始阻力價;
S2= P-(R1-S1);//第二個初始支撐價;
R3= HH1+2*(P-LL1);//第三個初始阻力價;
S3= LL1-2*(HH1-P);//第三個初始支撐價;
SM1=(P+S1)/2;//第一個區間的支撐;
SM2=(S1+S2)/2;//第二份區間的支撐;
SM3=(S2+S3)/2;//第三個區間的支撐;
RM1=(P+R1)/2;//第一個區間的阻力;
RM2=(R1+R2)/2;//第二個區間的阻力;
RM3=(R2+R3)/2;//第三個區間的阻力;
//設置6個區間,根據日開盤價所在區間所決定使用哪一個區間的上沿下沿作為突破開倉的條件;
Condition1 = Nop>P and Nop<RM1;//下沿是P,上沿是RM1
Condition2 = Nop>SM2 and Nop<SM1;//下沿是SM2,上沿是SM1
Condition3 = Nop>SM3 and Nop<SM2;//下沿是SM3,上沿是SM2
Condition4 = Nop>RM1 and Nop<RM2;//下沿是RM1,上沿是RM2
Condition5 = Nop>RM2 and Nop<RM3;//下沿是RM2,上沿是RM3
Condition6 = Nop<P and Nop>SM1; //下沿SM1,上沿就是P
If(Condition1)
{
SY=RM1;//上沿賦值
XY=P;//下沿賦值
}
If(Condition2)
{
SY=SM1;
XY=SM2;
}
if(Condition3)
{
SY=SM2;
XY=SM3;
}
If(Condition4)
{
SY=RM2;
XY=RM1;
}
if(Condition5)
{
SY=RM3;
XY=RM2;
}
if(Condition6)
{
SY=P;
XY=SM1;
}
//最新價格金叉SY且大于SY,并且SY不能是空值,SY與上一根 BAR線相等防止出現假連線
T1 = (CrossOver(C,SY) or C>SY )and SY>0 and SY[1]==SY;
//最新價格死叉XY且小于XY,并且XI不能是空值,XY與上一根BAR線相等防止出現假連線
T2 = (CrossUnder(C,XY) or C<XY )and XY>0 and XY[1]==XY;
If((T1[1] and Not(T2[1])) and MarketPosition<>1 and bartoday2)
{
Buy(SS,Open);
LowerAfterEntry=EntryPrice;
}
If((T2[1] and Not(T1[1])) and MarketPosition<>-1 and bartoday2)
{
SellShort(SS,Open);
HigherAfterEntry=EntryPrice;
}
//記錄多頭最低價和空頭最高價格
//有多頭持倉,剛進場時的本根BAR線的序號
if(MarketPosition==1 and BarsSinceEntry==0)
{
HigherAfterEntry=HigherafterEntry[1];
LowerAfterEntry=Max(LowerAfterEntry,Low);
}
//有空頭持倉,剛進場時的本根bar線的序號
if(MarketPosition==-1 and BarsSinceEntry==0)
{
HigherAfterEntry=Min(HigherafterEntry,High);
LowerAfterEntry=LowerAfterEntry[1];
}
if(MarketPosition<>0 and BarsSinceEntry>=1)
{
HigherAfterEntry=Min(HigherafterEntry,High);
LowerAfterEntry=Max(LowerAfterEntry,Low);
}
//跟蹤出場
//多頭出場線
Myprice=LowerAfterEntry -Open*TR/100;
//當持有多頭持倉,最新價格跌破出場線嗎,同時平倉信號和開倉信號不再同一根BAR線;
{
if(MarketPosition==1 and Low<=Myprice and BarsSinceEntry>0)
//如果跳空擊破,取值最新的bar線的開盤價,若不是則使用出場線價格;
Myprice = Min(Myprice,Open);
//多頭平倉
Sell(0,Myprice);
}
Myprice2=HigherAfterEntry + Open*TR/100;
//空頭出場線
if(MarketPosition==-1 and High>=Myprice2 and BarsSinceEntry>0)
{
Myprice2 = Max(Myprice2,Open);
BuyToCover(0,Myprice2);
}
}
總結
以上是生活随笔為你收集整理的菲阿里四价tbquant源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cmd.exe启动参数说明
- 下一篇: 刷力扣明白了官网代码的小心机(代码的优化