奇狐社區論壇
在這個頁面顯示本主題全部的 8 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [求救] (http://www.chiefox.com.tw/bbs/showthread.php?threadid=12460)


由 hamson 在 2009-11-06 22:05 發表:

[求救]

菜鳥發問 基本語法概念弄不懂請教前輩
ao:=c*0;與ao=c;有何分別各代表意義為何?

CC:=C;
SP1:=barslast(date<>ref(date,1) or barpos=1);
SP2:=barslast(time=091500);
TH:ref(hhv(h,SP1+1),SP2);
TL:ref(llv(L,SP1+1),SP2);
強出:=time>=132500;
限進:=time<=091500;
多進:=REF(C,1)<TL and V>1000 and 強出=0 and 限進=0 or barpos=0;
空進:=REF(C,1)>TH and V>1000 and 強出=0 and 限進=0 or barpos=0;
控損:=10; 控利:=20; 進價:=0; <==此進價=0又代表什麼?
多空:=0; //1.多 -1.空 0.無
進出:C*0 NOAXIS; <==此句與下一句都是c*0是代表什麼意思?
盈虧:c*0 linethick;
for i = 1 to datacount do begin
  if 多空=0 then begin
    多空:=多進[i]-空進[i]; 進出[i]:=多空;
    if 多空<>0 then 進價:=CC[i];
  end else if 多空<>0 then begin
    盈虧[i]:=(CC[i]-進價)*多空;
    if 強出[i] then begin
      進出[i]:=多空*4; 多空:=0;
    end else if 盈虧[i]>=控利 then begin
      進出[i]:=多空*2; 多空:=0;
    end else if 盈虧[i]<=-控損 then begin
      進出[i]:=多空*3; 多空:=0;
    end;
  end;
end;
又若要將倉位顯示出來該如何處理?感恩


由 king220.shih 在 2009-11-06 22:55 發表:

這個程式是我問的,應該不用新開主題,直接在原版面上發問即可!

我先試著回答一下,若有謬誤,還請網站上的大大指正!

ao:=c*0;與ao=c;有何分別各代表意義為何?
ao是數列,*0只是讓初始值為零。

控損:=10; 控利:=20; 進價:=0; <==此進價=0又代表什麼?

進價是自設變數,是在記憶體上指定一個記憶體空間,初始值設為0

進出:C*0 NOAXIS; <==此句與下一句都是c*0是代表什麼意思?

同上解釋,進出是數列,*0是讓其初始值為零。

又若要將倉位顯示出來該如何處理?感恩

在我另一篇文章中,我有寫出圖示的原碼以及圖檔,可參考 之!

------------------------------------------------------------------

基本上,以上問題,必須要看程式設計的書,才能對程式設計原理
有所了解。不然很難理解。以奇狐的語法來看,與VB的語法很類似
,而且又支援VBS。所以可以從學VB下手。只要了解程式設計的關
念即可。那大致上奇狐的語法即能理解。不外乎是陣列,迴圈,流程控制,以及函數使用等等.....

希望以上解答能對你有幫助,也望路過大大們不吝指正。


由 king220.shih 在 2009-11-06 22:59 發表:

ZAry:=C*0; CC:=C;
S30:=time>=132500 or barpos=0; //強制出場
S11:=ref(c<o and v>4000,1) and S30=0 or barpos=0; //多進
S12:=ref(c>o and v<1000,1) or barpos=0; //多出
S21:=ref(c>o and v>4000,1) and S30=0 or barpos=0; //空進
S22:=ref(c<o and v<1000,1) or barpos=0; //空出
盈虧:ZAry linethick0;
進出:ZAry;
多空:=0; //1.多 -1.空 0.無
做價:=0; 停損:=30;
for i = lbound(ZAry) to datacount do begin
if 多空=0 then begin
多空:=S11[i]-S21[i]; 進出[i]:=多空;
if 多空<>0 then 做價:=CC[i];
end else if 多空<>0 then begin
盈虧[i]:=(CC[i]-做價)*多空;
CKO:=S12[i]-S22[i];
if CKO=多空 then begin
進出[i]:=CKO*2; 多空:=0;
end else if S30[i] then begin
進出[i]:=多空*3; 多空:=0;
end else if 盈虧[i]<-停損 then begin
進出[i]:=多空*4; 多空:=0;
end;
end;
end;

//[進出] 這變數值代表意義如下:
//1.為多單進場, 2.為多單平倉, 3.為多單強制平倉, 4.為多單控損平倉
//-1.為空單賣出,-2.為空單回補,-3.為空單強制回補,-4.為空單控損回補

DRAWICON(進出=1,L,4),PXDN40;
DRAWNUMBER(進出=1,L,O,0),PXDN70,COLORRED,ALIGN0;
DRAWTEXT(進出=1,L,'多單進場'),PXDN100,COLORYELLOW,ALIGN0;

DRAWICON(進出=2,H,5),PXUP40;
DRAWNUMBER(進出=2,H,O,0),PXUP70,COLORGREEN,ALIGN0;
DRAWTEXT(進出=2,H,'多單平倉'),PXUP100,COLORYELLOW,ALIGN0;

DRAWICON(進出=3,H,5),PXUP40;
DRAWNUMBER(進出=3,H,O,0),PXUP70,COLORGREEN,ALIGN0;
DRAWTEXT(進出=3,H,'多單強制平倉'),PXUP100,COLORYELLOW,ALIGN0;

DRAWICON(進出=4,H,5),PXUP40;
DRAWNUMBER(進出=4,H,O,0),PXUP70,COLORGREEN,ALIGN0;
DRAWTEXT(進出=4,H,'多單控損平倉'),PXUP100,COLORYELLOW,ALIGN0;

DRAWICON(進出=-1,H,5),PXUP40;
DRAWNUMBER(進出=-1,H,O,0),PXUP70,COLORGREEN,ALIGN0;
DRAWTEXT(進出=-1,H,'空單賣出'),PXUP100,COLORYELLOW,ALIGN0;

DRAWICON(進出=-2,L,4),PXDN40;
DRAWNUMBER(進出=-2,L,O,0),PXDN70,COLORRED,ALIGN0;
DRAWTEXT(進出=-2,L,'空單回補'),PXDN100,COLORYELLOW,ALIGN0;

DRAWICON(進出=-3,L,4),PXDN40;
DRAWNUMBER(進出=-3,L,O,0),PXDN70,COLORRED,ALIGN0;
DRAWTEXT(進出=-3,L,'空單強制回補'),PXDN100,COLORYELLOW,ALIGN0;

DRAWICON(進出=-4,L,4),PXDN40;
DRAWNUMBER(進出=-4,L,O,0),PXDN70,COLORRED,ALIGN0;
DRAWTEXT(進出=-4,L,'空單控損回補'),PXDN100,COLORYELLOW,ALIGN0;


由 king220.shih 在 2009-11-07 22:49 發表:

CC:=C;
SP1:=barslast(date<>ref(date,1) or barpos=1);
SP2:=barslast(time=085000);
TH:ref(hhv(h,SP1+1),SP2);
TL:ref(llv(L,SP1+1),SP2);
強出:=time>=132500;
限進:=time<=091500;
多進:=REF(c,1)<TL and REF(v,1)>1000 and 強出=0 and 限進=0 or barpos=0;
空進:=REF(C,1)>TH and REF(v,1)>1000 and 強出=0 and 限進=0 or barpos=0;
控損:=10; 控利:=50; 進價:=0;
多空:=0; //1.多 -1.空 0.無
進出:C*0 linethick;
盈虧:c*0 linethick;
for i = 1 to datacount do begin
if 多空=0 then begin
多空:=多進[i]-空進[i]; 進出[i]:=多空;
if 多空<>0 then 進價:=CC[i];
end else if 多空<>0 then begin
盈虧[i]:=(CC[i]-進價)*多空;
if 強出[i] then begin
進出[i]:=多空*4; 多空:=0;
end else if 盈虧[i]>=控利 then begin
進出[i]:=多空*2; 多空:=0;
end else if 盈虧[i]<=-控損 then begin
進出[i]:=多空*3; 多空:=0;
end;
end;
end;

//進出] 這變數值代表意義如下:
//1.多單進場, 2.多控利出, 3.多控損出, 4.多強制出場
//-1.空單進場,-2.空控利出,-3.空控損出,-4.空強制出場

DRAWICON(進出=1,L,4),PXDN40;
DRAWNUMBER(進出=1,L,CC,0),PXDN70,COLORRED,ALIGN0;
DRAWTEXT(進出=1,L,'多單進場'),PXDN100,COLORYELLOW,ALIGN0;

DRAWICON(進出=2,H,1),PXUP40;
DRAWNUMBER(進出=2,H,盈虧,0),PXUP70,COLORRED,ALIGN0;
DRAWTEXT(進出=2,H,'多控利出'),PXUP100,COLORYELLOW,ALIGN0;

DRAWICON(進出=3,H,2),PXUP40;
DRAWNUMBER(進出=3,H,盈虧,0),PXUP70,COLORGREEN,ALIGN0;
DRAWTEXT(進出=3,H,'多控損出'),PXUP100,COLORYELLOW,ALIGN0;

DRAWICON(進出=4,H,5),PXUP40;
DRAWNUMBER(進出=4,H,O,0),PXUP70,COLORGREEN,ALIGN0;
DRAWTEXT(進出=4,H,'多強制出場'),PXUP100,COLORYELLOW,ALIGN0;

DRAWICON(進出=-1,H,5),PXUP40;
DRAWNUMBER(進出=-1,H,CC,0),PXUP70,COLORGREEN,ALIGN0;
DRAWTEXT(進出=-1,H,'空單進場'),PXUP100,COLORYELLOW,ALIGN0;

DRAWICON(進出=-2,L,1),PXDN40;
DRAWNUMBER(進出=-2,L,盈虧,0),PXDN70,COLORRED,ALIGN0;
DRAWTEXT(進出=-2,L,'空控利出'),PXDN100,COLORYELLOW,ALIGN0;

DRAWICON(進出=-3,L,2),PXDN40;
DRAWNUMBER(進出=-3,L,盈虧,0),PXDN70,COLORGREEN,ALIGN0;
DRAWTEXT(進出=-3,L,'空控損出'),PXDN100,COLORYELLOW,ALIGN0;

DRAWICON(進出=-4,L,4),PXDN40;
DRAWNUMBER(進出=-4,L,O,0),PXDN70,COLORRED,ALIGN0;
DRAWTEXT(進出=-4,L,'空強制出場'),PXDN100,COLORYELLOW,ALIGN0;


由 hamson 在 2009-11-08 01:51 發表:

感謝king220.shih大大熱心幫忙,
依大大所發原碼,小弟引入放在主圖則ok若放在附圖,則發現有些訊號箭頭或文字看不見用PXDN/PXUP處理也無法調進畫面來,請問有何解決方案?感恩!!!


由 king220.shih 在 2009-11-08 02:54 發表:

附圖喔!這好像不太適合放在附圖耶!
我也很少寫附圖的程式。可能要請教別人喔!


由 july2008 在 2009-11-08 13:09 發表:

引用:
最初由 hamson 發表
感謝king220.shih大大熱心幫忙,
依大大所發原碼,小弟引入放在主圖則ok若放在附圖,則發現有些訊號箭頭或文字看不見用PXDN/PXUP處理也無法調進畫面來,請問有何解決方案?感恩!!!



試試用這個 ALIGN 放在最後面


由 hamson 在 2009-11-08 17:23 發表:

感謝指導 再請教以下例子
CC:=C;
SP1:=barslast(date<>ref(date,1) or barpos=1);
SP2:=barslast(time=084500);
TH:ref(hhv(h,SP1+1),SP2);
TL:ref(llv(L,SP1+1),SP2);
強出:=time>=134400;
限進:=time<=084500;
多進:=REF(C,1)<TL and V>1000 and 強出=0 and 限進=0 or barpos=0;
空進:=REF(C,1)>TH and V>1000 and 強出=0 and 限進=0 or barpos=0;
控損:=10; 控利:=20; 進價:=0;
多空:=0; //1.多 -1.空 0.無
進出:C*0 NOAXIS;
盈虧:c*0 linethick;
for i = 1 to datacount do begin
if 多空=0 then begin
多空:=多進[i]-空進[i]; 進出[i]:=多空;
if 多空<>0 then 進價:=CC[i];
end else if 多空<>0 then begin
盈虧[i]:=(CC[i]-進價)*多空;
if 強出[i] then begin
進出[i]:=多空*4; 多空:=0;
end else if 盈虧[i]>=控利 then begin
進出[i]:=多空*2; 多空:=0;
end else if 盈虧[i]<=-控損 then begin
進出[i]:=多空*3; 多空:=0;
end;
end;
end;
要將此轉文字檔到下單機,我在網路上查到用下列語法輸入
cur_cmd:=numtostr(year,0) + '/' +numtostr(month,0)+ '/'+numtostr(day,0) + ' ' +numtostr(hour,0)+':'+numtostr(minute,0)+':00,'+numtostr(MarketPosition,0)+','+ numtostr(c,0)+'';
<%
on error resume next
Dim fso, MyFile
cur_cmd5= FFL.VarData("cur_cmd")
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("d:\winner\cur_cmd.txt", True)
MyFile.WriteLine(cur_cmd)
MyFile.Close
err.clear
%>
現在問題是此處之"MarketPosition"以上例言是要導入哪一個?多空?進出?進價?又該如何導入?因我多次測試均無法在文字檔中產生文字,下單機會出現"策略檔案格式錯誤,無法取得目前倉位"
再次感謝各位指導!!!MarketPosition


全部時間均為台灣時間, 現在時間為04:57
在這個頁面顯示本主題全部的 8 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.