COCO研究院

 找回密碼
 註冊
搜索
查看: 11395|回復: 6

新手發問~

[複製鏈接]
發表於 11-7-23 18:27 | 顯示全部樓層 |閱讀模式
請問~各位大大~
這個程式碼~他為什麼不用抓取 VALUE2的高點值呢?  我是少了什麼東西嗎?  拜託請指教

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

if  marketposition = 0 and time>=0850 and time <=1315   then begin
if  high > value2  then
buy next bar at value2 stop;
end;
發表於 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[var1] ;
        var4 = true ;
                                                                
        var2 = var1 + 1 ;
        while var4 = true and var2 - var1 <= LeftStrength
                begin
                condition1 = ( HiLo = 1 and var0 < PriceValue[var2] )
                 or ( HiLo = -1 and var0 > PriceValue[var2] ) ;
                 
                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[var2] )
                 or ( HiLo = -1 and var0 >= PriceValue[var2] ) ;
                 
                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 ;
 樓主| 發表於 11-7-24 17:50 | 顯示全部樓層
回復 2# ilpir


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

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

還是很感謝~你給的指導~~謝啦
 樓主| 發表於 11-7-24 18:24 | 顯示全部樓層
回復 2# ilpir


    大大~請問您也用  MultiCharts 這一套的工具嗎?
發表於 11-7-24 20:09 | 顯示全部樓層
TS2000 easy-language 是沒有pivot 這個函數.
直接寫在pivothighvs內.
宣告陣列:Array: Pivot[50](0)
再把每個高點成立時往裡面丟.
Pivot[1]就是前一個高點值,Pivot[2]就是前前高點值..依此累推..
把函式內容看懂就會變強了.
會寫後接下來要面臨的就是策略問題了(這個遠比"寫"程式難)

之前已轉用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[50](0);

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

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

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

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

評分

參與人數 1金錢 +1 收起 理由
winso + 1

查看全部評分

 樓主| 發表於 11-7-24 20:51 | 顯示全部樓層
回復 5# ilpir

大大~太感謝您了~感恩~有你的指導~感激不盡
~~謝謝您~~
發表於 11-7-27 10:56 | 顯示全部樓層
非常感謝 ilpir 大
code 有點長需要消化一下
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-23 07:40

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |