為什么每根K線出現(xiàn)這樣如附圖的情況 - TradeBlazer公式 [開(kāi)拓者 TB]
- 咨詢內(nèi)容:
為什么每根K線出現(xiàn)這樣如附圖的情況?我編程的是破十日實(shí)體K線交易,怎么避免?
程序如:Params
Numeric TrailingSet(0.01); // 回撤開(kāi)倉(cāng)比例設(shè)置,從最高點(diǎn)下跌的比例
Numeric StopLossSet(0.015); // 止損比例設(shè)置
Numeric ndates(10); // 10天的突破
Numeric nOffset(20); // 突破式的價(jià)格偏移
Numeric ATRLength(10);
Numeric MyPos(0);
Numeric InvalidNumric(1);
Numeric FastLength(5);
Numeric SlowLength(10);
Numeric Con1(0);
Numeric Length(1);
Bool LastProfitableTradeFilter(True); // 使用入市過(guò)濾條件
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Numeric myPrice;
Numeric DatePoint;
Numeric lots(1);
Bool SendOrderThisBar(False); // 當(dāng)前Bar有過(guò)交易
NumericSeries preEntryPrice(0); // 前一次開(kāi)倉(cāng)的價(jià)格
Numeric myEntryPrice(0); // 開(kāi)倉(cāng)價(jià)格
Numeric myExitPrice(0); // 平倉(cāng)價(jià)格
NumericSeries AvgTR; // ATR 平均波動(dòng)周期
Numeric N; // N 值
NumericSeries CloseD(10);
NumericSeries OpenD(10);
Numeric temp;
Numeric temp1;
Numeric mytradecount;
Numeric Midprice;
Numeric CURRENTemp;
NumericSeries highest;
NumericSeries Lowest;
BoolSeries PreBreakoutFailure(false);
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
datePoint = nOffset*PriceScale;
Highest=Max(OpenD(10),CloseD(10));
lowest=Min(OpenD(10),CloseD(10));
AvgTR = XAverage(TrueRange,ATRLength); //平均波動(dòng)周期=指數(shù)平均數(shù)=平均波動(dòng)周期內(nèi)的真值范圍
N = AvgTR[1]; // N=上一周期平均波動(dòng)周期
//限制一天中的交易次數(shù)?需要限制最大交易次數(shù)為1次
if( Close[Length] == InvalidNumeric)
{
temp=InvalidNumeric;
}Else
{
CURRENTemp=(myEntryprice-close[1])/close[1];
temp = (Open -close[1])/ close[1];
temp1=(close[1]-close[2])/close[2];
}
if(BarStatus==0)
{
mypos=0;
SetGlobalVar(0,mypos);
}Else
{
mypos=GetGlobalVar(0);
}
If ( GetGlobalVar(0)==InvalidNumric &&(BarStatus == 2));
{ SetGlobalVar(0,MyPos);
If(MarketPosition == 0 &&Date != Date[1]&&(!LastProfitableTradeFilter));
{
IF(myEntryPrice>=highest&&GetGlobalVar(0)==0 OR temp>=0.02 OR CURRENTemp>=0.02 ) ;
{(MYpos!=1);//沒(méi)有記錄有多單的信息
myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice);
SendOrderThisBar=true ;
preEntryPrice = myEntryPrice;
buy(1,myEntryprice+PriceScale()*MinMove+datePoint);
SetGlobalVar(0,1); //全局變量的值記錄為1,表示此時(shí)已經(jīng)開(kāi)了多單
mytradecount = mytradecount + 1;
}If(myEntryPrice<=lowest&&GetGlobalVar(0)==0 OR temp<=-0.02 or CURRENTemp<=-0.02) ;
{(MYpos!=-1);//沒(méi)有記錄有空單的信息
myEntryPrice = IIF(myEntryPrice > Open, Open,myEntryPrice); // 大跳空的時(shí)候用開(kāi)盤(pán)價(jià)代替
SendOrderThisBar=true ;
preEntryPrice = myEntryPrice;
SellShort(1,myEntryPrice-PriceScale()*MinMove-datePoint);
SetGlobalVar(0,-1); //全局變量的值記錄為1,表示此時(shí)已經(jīng)開(kāi)了空單
mytradecount = mytradecount + 1;
}
}
If ( GetGlobalVar(0)==InvalidNumric &&(BarStatus == 2));//////如果前一日K線漲幅大于2%,今日K線又順勢(shì)跳空或者在昨日收盤(pán)價(jià),(不管逆勢(shì)否),則順勢(shì)跟進(jìn)
{ SetGlobalVar(0,MyPos);
If(MarketPosition == 0 &&Date != Date[1]&&(!LastProfitableTradeFilter));
{
IF(temp1>=0.02&&open>=close[1]&&GetGlobalVar(0)==0 ) ;
{(MYpos!=1);//沒(méi)有記錄有多單的信息
myEntryPrice = open;
SendOrderThisBar=true ;
preEntryPrice = myEntryPrice;
buy(1,myEntryprice+PriceScale()*MinMove+datePoint);
SetGlobalVar(0,1); //全局變量的值記錄為1,表示此時(shí)已經(jīng)開(kāi)了多單
mytradecount = mytradecount + 1;
}
IF(temp1<=-0.02&&open<=close[1]&&GetGlobalVar(0)==0 ) ;
{(MYpos!=1);//沒(méi)有記錄有多單的信息
myEntryPrice = open;
SendOrderThisBar=true ;
preEntryPrice = myEntryPrice;
SellShort(1,myEntryprice-PriceScale()*MinMove+datePoint);
SetGlobalVar(0,-1); //全局變量的值記錄為1,表示此時(shí)已經(jīng)開(kāi)了多單
mytradecount = mytradecount + 1;
}
}
}////////////////
If(MarketPosition == 1&&Date != Date[1]) // 有多倉(cāng)的情況
{
If(close<open)
{(MYpos!=-1);
Abs((High-Close)/Open)>=StopLossSet;
mytradecount = mytradecount + 1;
myExitPrice = Max(highest,close);
myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 跳空的時(shí)候用開(kāi)盤(pán)價(jià)代替
Sell(0,myExitPrice-PriceScale()*MinMove-datePoint); // 數(shù)量用0的情況下將全部平倉(cāng)//產(chǎn)生一個(gè)多頭平倉(cāng)的操作 ??????????
SetGlobalVar(0,1);
}Else
{
If(preEntryPrice!=InvalidNumeric&&Date != Date[1] );//前一次開(kāi)倉(cāng)價(jià)格為有郊值
{
If(Open >= preEntryPrice + 0.5*N) ;// 如果開(kāi)盤(pán)就超過(guò)設(shè)定的1/2N,則直接用開(kāi)盤(pán)價(jià)增倉(cāng)。//上一周期的平均波動(dòng)周期
{(MYpos!=-1);
myEntryPrice = Open;//開(kāi)倉(cāng)價(jià)為開(kāi)盤(pán)價(jià)
mytradecount = mytradecount + 1;
preEntryPrice = myEntryPrice;//以預(yù)先價(jià)為入市價(jià)
Buy(1,myEntryPrice+PriceScale()*MinMove+datePoint);//以可開(kāi)手?jǐn)?shù)開(kāi)多倉(cāng)
SetGlobalVar(0,1);
SendOrderThisBar=true;//當(dāng)前BAR沒(méi)有交易過(guò)
}
while(High>= preEntryPrice + 0.5*N) // 以最高價(jià)為標(biāo)準(zhǔn),判斷能進(jìn)行幾次增倉(cāng).反復(fù)執(zhí)行該操作直到<為止.執(zhí)行一次.就進(jìn)行下面操作.直到<0
{(myPos!=-1);
myEntryPrice = preEntryPrice + 0.5 * N;//設(shè)定價(jià)為入市價(jià)增倉(cāng)
preEntryPrice = myEntryPrice;//以預(yù)先價(jià)格為入市價(jià)
mytradecount = mytradecount + 1;
Buy(1,myEntryPrice+PriceScale()*MinMove+datePoint);//開(kāi)多倉(cāng)
SetGlobalVar(0,1);
SendOrderThisBar=true;//當(dāng)前BAR沒(méi)有交易過(guò)
}
}
// 止損指令
If( close<open && SendOrderThisBar == True&&GetGlobalVar(0)==1); // 最低價(jià)小于等于預(yù)先價(jià)-設(shè)定價(jià)且當(dāng)前BAR未交易過(guò)
{(mypos!=-1);
Abs((High-Close)/Open)>=StopLossSet;
myExitPrice = Max(highest,(close+open)/2);
mytradecount = mytradecount + 1;
Sell(0,myExitPrice-PriceScale()*MinMove-datePoint); // 數(shù)量用0的情況下將全部平倉(cāng)//平多倉(cāng)
PreBreakoutFailure=True;//前一次已突破
SetGlobalVar(0,0);
}
}
}Else If(MarketPosition ==-1) // 有空倉(cāng)的情況
{
If(open<close&&GetGlobalVar(0)==-1)
{(myPos!=1);
Abs((Close-Low)/Open)>=StopLossSet;
mytradecount = mytradecount + 1;
myExitPrice = Min(lowest,(open+close)/2);
myExitPrice = IIF(myExitPrice < Open, Open,myExitPrice); // 大跳空的時(shí)候用開(kāi)盤(pán)價(jià)代替//當(dāng)大跳空時(shí).以開(kāi)倉(cāng)價(jià)為平倉(cāng)價(jià)
BuyToCover(0,myExitPrice+PriceScale()*MinMove+datePoint); // 數(shù)量用0的情況下將全部平倉(cāng)//空頭平倉(cāng)
SetGlobalVar(0,0);
}
}
}
End-
-
未命名.rar
2011-11-28 22:45:55 上傳
下載次數(shù): 8
-
- TB技術(shù)人員:
回復(fù) 1# 603602982
是因?yàn)樵谝桓鵥ar上同時(shí)滿足多個(gè)條件,導(dǎo)致一個(gè)bar上又開(kāi)又平。
使用buy、sell、sellshort、buytocover的交易指令,不需要配合全局變量,并且也是不能防止信號(hào)消失.
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容