as36914 發表於 11-7-23 18:27

新手發問~

請問~各位大大~
這個程式碼~他為什麼不用抓取 VALUE2的高點值呢?我是少了什麼東西嗎?拜託請指教

if date <> date thendbar = 0;
dbar= dbar +1;
      
if dbar >= length then begin
value2 = pivothighvs(1,high,3,2,length);
    end else begin;
value2 =99999;
   end;

ifmarketposition = 0 and time>=0850 and time <=1315   then begin
ifhigh > value2then
buy next bar at value2 stop;
end;

ilpir 發表於 11-7-24 16:18

給個建議
初學時,盡量不要使用內建的函數,如pivothighvs,swingHigh..等
除非你知道內容是什麼,這很像以前老師要我們不要背公式,要自己推出來..
自己用自己的語法寫出來,進步會比較快.

當然還有一個進步超快的方式->把內建函數內容看懂.
如:
pivothighvs ->意思是:傳回最近反轉高點的價格.
內容是:
inputs:
        Instance( numericsimple ),
        PriceValue( numericseries ),
        LeftStrength( numericsimple ),
        RightStrength( numericsimple ),
        Len( numericsimple ) ;
variables:
        var0( 0 ),
        var1( 0 ) ;
Value1 = Pivot( PriceValue, Len, LeftStrength, RightStrength, Instance, 1, var0,
var1 ) ;
PivotHighVS = var0 ;

裡面又使用了另一個函數: Pivot->計算最近反轉點的K棒位置及價格.
內容是:
重點在於VAR0 & VAR1 這兩個變數,花個時間看懂保證功力急增!
inputs:
        PriceValue( numericseries ),
        Len( numericsimple ),
        LeftStrength( numericsimple ),
        RightStrength( numericsimple ),
        Instance( numericsimple ),
        HiLo( numericsimple ),                                                      
        oPivotPriceValue( numericref ),
        oPivotBar( numericref ) ;
variables:
        var0( 0 ),
        var1( 0 ),
        var2( 0 ),
        var3( 0 ),
        var4( false ),
        var5( false ) ;
var3 = 0 ;
var5 = false ;
var1 = RightStrength ;
while var1 < Len and var5 = false
        begin
                                                                      
        var0 = PriceValue ;
        var4 = true ;
                                                                
        var2 = var1 + 1 ;
        while var4 = true and var2 - var1 <= LeftStrength
                begin
                condition1 = ( HiLo = 1 and var0 < PriceValue )
               or ( HiLo = -1 and var0 > PriceValue ) ;
               
                if condition1 then
                        var4 = false
                else
                        var2 = var2 + 1 ;
                end ;
                                                                   
                                        
        var2 = var1 - 1 ;
        while var4 = true and var1 - var2 <= RightStrength
                begin
                condition1 = ( HiLo = 1 and var0 <= PriceValue )
               or ( HiLo = -1 and var0 >= PriceValue ) ;
               
                if condition1 then
                        var4 = false
                else
                        var2 = var2 - 1 ;
                end ;
                                                                               
        if var4 = true then
                var3 = var3 + 1 ;
                                                                                     
                                                                                     
        if var3 = Instance then
                var5 = true
        else
                var1 = var1 + 1 ;
        end ;
if var5 = true then
        begin
        oPivotPriceValue = var0 ;
        oPivotBar = var1 + ExecOffset ;
        Pivot = 1 ;                                    
        end
else
        begin
        oPivotPriceValue = -1 ;
        oPivotBar = -1 ;
        Pivot = -1 ;                                          
        end ;

as36914 發表於 11-7-24 17:50

回復 2# ilpir


大大~~謝謝你的解說超清楚的~

我的編寫工具~~好像跟您的不一樣我的是ts2000i 我沒有 PIVOT這個指令

還是很感謝~你給的指導~~謝啦

as36914 發表於 11-7-24 18:24

回復 2# ilpir


    大大~請問您也用MultiCharts 這一套的工具嗎?

ilpir 發表於 11-7-24 20:09

TS2000 easy-language 是沒有pivot 這個函數.
直接寫在pivothighvs內.
宣告陣列:Array: Pivot(0)
再把每個高點成立時往裡面丟.
Pivot就是前一個高點值,Pivot就是前前高點值..依此累推..
把函式內容看懂就會變強了.
會寫後接下來要面臨的就是策略問題了(這個遠比"寫"程式難)

之前已轉用MC...TS2000I太麻煩了.


PivotHighVS:
Inputs: Occur(Numeric), Price(NumericSeries), LStren(NumericSimple), RStren(NumericSimple), Length(Numeric);
Variables: SHBar(0), MainLoop(0), count(0), PivotFlag(False);
Array: Pivot(0);

PivotFlag = False;
For MainLoop = Length - 1 DownTo Rstren Begin
      Condition1 = True;
      Condition2 = True;
      SHBar = Price;

      For value1 = MainLoop - RStren To MainLoop -1 Begin
                IF SHBar <= Price Then
                        Condition1 = False;
      End;

      IF Condition1 Then Begin
                For value1 = MainLoop + 1 To MainLoop + LStren Begin
                        IF SHBar < Price Then
                              Condition2 = False;
                End;
      End Else
                Condition2 = False;
      
      IF Condition1 AND Condition2 Then Begin
                For count = 50 DownTo 2 Begin
                        Pivot = Pivot;
                End;
                Pivot = Price;
                PivotFlag = True;
      End;
End;

IF PivotFlag AND Pivot <> 0 Then
      PivotHighVS = Pivot
Else
      PivotHighVS = -1;

as36914 發表於 11-7-24 20:51

回復 5# ilpir

大大~太感謝您了~感恩~有你的指導~感激不盡
~~謝謝您~~{:4_82:}

winso 發表於 11-7-27 10:56

非常感謝 ilpir 大
code 有點長需要消化一下
頁: [1]
查看完整版本: 新手發問~