以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  TB转金字塔  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=155907)

--  作者:expkkk
--  发布时间:2017/7/12 14:55:20
--  TB转金字塔
//请技术人员帮我把这个改成金字塔的程序,谢谢!! //------------------------------------------------------------------------ Params Numeric lots(1); Numeric PAR_1(2); Numeric PAR_2(12); Numeric PAR_3(4.25); Numeric PAR_4(32); Numeric PAR_5(2); Numeric PAR_6(1); Numeric PAR_7(86); Numeric PAR_8(6); Numeric PAR_9(930); Numeric PAR_10(1400); Vars NumericSeries VAR_1; Numeric VAR_2(0); Numeric VAR_3; Numeric VAR_4; Numeric VAR_5; Numeric VAR_6; NumericSeries VAR_7; NumericSeries VAR_8; Numeric VAR_9; Numeric VAR_10; bool boll_1; Numeric tmp; Numeric tmp2; bool boll_2; bool boll_3; bool boll_4; Begin VAR_1=AvgTrueRange(PAR_7); boll_1=Time>0.0001*PAR_9 And Time 1) { VAR_7 = Max(VAR_7[1],High[1]); VAR_8 = Min(VAR_8[1],Low[1]); } Else { VAR_7 = VAR_7[1]; VAR_8 = VAR_8[1]; } VAR_6 = MinMove*PriceScale; VAR_3=Average(high[1]-low[1],PAR_1); VAR_4=Average(open,PAR_2)+VAR_3*PAR_3; VAR_5=Average(open,PAR_2)-VAR_3*PAR_3; boll_4=boll_1 and MarketPosition<>-1 && Low<=VAR_5 ; boll_3=boll_1 and MarketPosition<>1 && high>=VAR_4 ; If(boll_4) { VAR_10 = VAR_5-VAR_2*VAR_6; If(Open < VAR_5) VAR_10 = Open-VAR_2*VAR_6; sellshort(lots,VAR_10); Return; } If(boll_3) { VAR_10 = VAR_4+VAR_2*VAR_6; If(Open > VAR_4) VAR_10 = Open+VAR_2*VAR_6; Buy(lots,VAR_10); Return; } If(MarketPosition==1 && BarsSinceEntry >0) { VAR_9 = EntryPrice * (1-PAR_4/1000); If (VAR_7 >= EntryPrice * (1 + PAR_5/1000)) { VAR_9 = VAR_7*(1-PAR_6/1000); } } If(Low <= VAR_9) { VAR_10 = VAR_9; If(Open < VAR_10) VAR_10 = Open; Sell(Lots,VAR_10); } Else If(MarketPosition ==-1 && BarsSinceEntry >0) { VAR_9 = EntryPrice * (1+PAR_4/1000); If(VAR_8 <= EntryPrice*(1-PAR_5/1000)) { VAR_9 = VAR_8 * (1+PAR_6/1000); } } If(High >= VAR_9) { VAR_10 = VAR_9; If(Open > VAR_10) VAR_10 =Open; BuyToCover(Lots,VAR_10); } If(MarketPosition==1) { VAR_9 = VAR_7 - PAR_8*VAR_1[1]; } If(Low <= VAR_9) { VAR_10 = VAR_9; If(Open < VAR_10) VAR_10 = Open; Sell(Lots,VAR_10); } Else If(MarketPosition ==-1) { VAR_9 = VAR_8 + PAR_8*VAR_1[1]; } If(High >= VAR_9) { VAR_10 = VAR_9; If(Open > VAR_10) VAR_10 =Open; BuyToCover(Lots,VAR_10); } End
--  作者:wenarm
--  发布时间:2017/7/12 15:15:07
--  
抱歉,你把你的代码整理出来。上面格式的代码。工作人员无法处理。
--  作者:expkkk
--  发布时间:2017/7/12 15:24:40
--  
Params
Numeric lots(1);  
Numeric PAR_1(2);
Numeric PAR_2(12);
Numeric PAR_3(4.25);
Numeric PAR_4(32);    
Numeric PAR_5(2); 
Numeric PAR_6(1);  
Numeric PAR_7(86); 
Numeric PAR_8(6);  
Numeric PAR_9(930);     
Numeric PAR_10(1400);   
Vars
NumericSeries VAR_1;           
Numeric VAR_2(0);
Numeric VAR_3; 
Numeric VAR_4; 
Numeric VAR_5; 
Numeric VAR_6; 
NumericSeries VAR_7;        
NumericSeries VAR_8;     
Numeric VAR_9;
Numeric VAR_10;
bool boll_1;
Numeric tmp;
Numeric tmp2;
bool boll_2;
bool boll_3;
bool boll_4;
Begin


VAR_1=AvgTrueRange(PAR_7);

boll_1=Time>0.0001*PAR_9 And Time <PAR_10 * 0.0001;

if (BarsSinceEntry == 1)
{
VAR_7 = AvgEntryPrice;
VAR_8 = AvgEntryPrice;
}
Else If(BarsSinceEntry > 1)
{
VAR_7 = Max(VAR_7[1],High[1]);
VAR_8 = Min(VAR_8[1],Low[1]);
}
Else
{
VAR_7 = VAR_7[1];
VAR_8 = VAR_8[1];
}


   VAR_6 = MinMove*PriceScale;

VAR_3=Average(high[1]-low[1],PAR_1);

VAR_4=Average(open,PAR_2)+VAR_3*PAR_3;
VAR_5=Average(open,PAR_2)-VAR_3*PAR_3;


boll_4=boll_1  and MarketPosition<>-1 && Low<=VAR_5 ;

boll_3=boll_1  and MarketPosition<>1 && high>=VAR_4 ;
If(boll_4)
    {
     VAR_10 = VAR_5-VAR_2*VAR_6;
     If(Open < VAR_5) 
VAR_10 = Open-VAR_2*VAR_6;

sellshort(lots,VAR_10);
Return;
    }

If(boll_3)
    {
VAR_10 = VAR_4+VAR_2*VAR_6;
     If(Open > VAR_4) 
VAR_10 = Open+VAR_2*VAR_6;
 
Buy(lots,VAR_10);
Return;
    }

    If(MarketPosition==1 && BarsSinceEntry >0)  
{
VAR_9 = EntryPrice * (1-PAR_4/1000);  
If (VAR_7 >= EntryPrice * (1 + PAR_5/1000))  
{
VAR_9 = VAR_7*(1-PAR_6/1000);
}
}
If(Low <= VAR_9)               
VAR_10 = VAR_9;
If(Open < VAR_10) VAR_10 = Open;
Sell(Lots,VAR_10);
}
    Else If(MarketPosition ==-1 && BarsSinceEntry >0) 
{       
VAR_9 = EntryPrice * (1+PAR_4/1000);  
If(VAR_8 <= EntryPrice*(1-PAR_5/1000))  
{
VAR_9 = VAR_8 * (1+PAR_6/1000);
}
}
If(High >= VAR_9) 
{
VAR_10 = VAR_9;
If(Open > VAR_10)  VAR_10 =Open;
BuyToCover(Lots,VAR_10);
}

If(MarketPosition==1)
{
VAR_9 = VAR_7 - PAR_8*VAR_1[1];          
}
If(Low <= VAR_9)               
VAR_10 = VAR_9;
If(Open < VAR_10) VAR_10 = Open;
Sell(Lots,VAR_10);
}
Else If(MarketPosition ==-1)
{
VAR_9 = VAR_8 + PAR_8*VAR_1[1];         
}
If(High >= VAR_9) 
{
VAR_10 = VAR_9;
If(Open > VAR_10)  VAR_10 =Open;
BuyToCover(Lots,VAR_10);
}

End

--  作者:expkkk
--  发布时间:2017/7/12 15:26:14
--  
Params
Numeric lots(1);  
Numeric PAR_1(2);
Numeric PAR_2(12);
Numeric PAR_3(4.25);
Numeric PAR_4(32);    
Numeric PAR_5(2); 
Numeric PAR_6(1);  
Numeric PAR_7(86); 
Numeric PAR_8(6);  
Numeric PAR_9(930);     
Numeric PAR_10(1400);   
Vars
NumericSeries VAR_1;           
Numeric VAR_2(0);
Numeric VAR_3; 
Numeric VAR_4; 
Numeric VAR_5; 
Numeric VAR_6; 
NumericSeries VAR_7;        
NumericSeries VAR_8;     
Numeric VAR_9;
Numeric VAR_10;
bool boll_1;
Numeric tmp;
Numeric tmp2;
bool boll_2;
bool boll_3;
bool boll_4;
Begin


VAR_1=AvgTrueRange(PAR_7);

boll_1=Time>0.0001*PAR_9 And Time <PAR_10 * 0.0001;

if (BarsSinceEntry == 1)
{
VAR_7 = AvgEntryPrice;
VAR_8 = AvgEntryPrice;
}
Else If(BarsSinceEntry > 1)
{
VAR_7 = Max(VAR_7[1],High[1]);
VAR_8 = Min(VAR_8[1],Low[1]);
}
Else
{
VAR_7 = VAR_7[1];
VAR_8 = VAR_8[1];
}


   VAR_6 = MinMove*PriceScale;

VAR_3=Average(high[1]-low[1],PAR_1);

VAR_4=Average(open,PAR_2)+VAR_3*PAR_3;
VAR_5=Average(open,PAR_2)-VAR_3*PAR_3;


boll_4=boll_1  and MarketPosition<>-1 && Low<=VAR_5 ;

boll_3=boll_1  and MarketPosition<>1 && high>=VAR_4 ;
If(boll_4)
    {
     VAR_10 = VAR_5-VAR_2*VAR_6;
     If(Open < VAR_5) 
VAR_10 = Open-VAR_2*VAR_6;

sellshort(lots,VAR_10);
Return;
    }

If(boll_3)
    {
VAR_10 = VAR_4+VAR_2*VAR_6;
     If(Open > VAR_4) 
VAR_10 = Open+VAR_2*VAR_6;
 
Buy(lots,VAR_10);
Return;
    }

    If(MarketPosition==1 && BarsSinceEntry >0)  
{
VAR_9 = EntryPrice * (1-PAR_4/1000);  
If (VAR_7 >= EntryPrice * (1 + PAR_5/1000))  
{
VAR_9 = VAR_7*(1-PAR_6/1000);
}
}
If(Low <= VAR_9)               
VAR_10 = VAR_9;
If(Open < VAR_10) VAR_10 = Open;
Sell(Lots,VAR_10);
}
    Else If(MarketPosition ==-1 && BarsSinceEntry >0) 
{       
VAR_9 = EntryPrice * (1+PAR_4/1000);  
If(VAR_8 <= EntryPrice*(1-PAR_5/1000))  
{
VAR_9 = VAR_8 * (1+PAR_6/1000);
}
}
If(High >= VAR_9) 
{
VAR_10 = VAR_9;
If(Open > VAR_10)  VAR_10 =Open;
BuyToCover(Lots,VAR_10);
}

If(MarketPosition==1)
{
VAR_9 = VAR_7 - PAR_8*VAR_1[1];          
}
If(Low <= VAR_9)               
VAR_10 = VAR_9;
If(Open < VAR_10) VAR_10 = Open;
Sell(Lots,VAR_10);
}
Else If(MarketPosition ==-1)
{
VAR_9 = VAR_8 + PAR_8*VAR_1[1];         
}
If(High >= VAR_9) 
{
VAR_10 = VAR_9;
If(Open > VAR_10)  VAR_10 =Open;
BuyToCover(Lots,VAR_10);
}

End

--  作者:expkkk
--  发布时间:2017/7/12 15:27:11
--  
跟贴在下面



--  作者:wenarm
--  发布时间:2017/7/12 16:44:12
--  

你自己先根据代码逻辑尝试编写。有关于金字塔编程上疑问的问题,可以询问技术人员。