![]() |
總頁數 (2): [1] 2 » 在這個頁面顯示本主題全部的 17 個文章 |
奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [問題]請問: 多空=0 跟 多空[i]=0 有什麼不一樣?我發現有時加上[i]可以編過,有時不行? (http://www.chiefox.com.tw/bbs/showthread.php?threadid=17433)
[問題]請問: 多空=0 跟 多空[i]=0 有什麼不一樣?我發現有時加上[i]可以編過,有時不行?
P:EMA(C,5);
A:=C>P;
X:=C>P+20;
S:=C<P;
Z:=C<P-20;
多進:A or barpos=0,COLORRED;
平多:X or barpos=0,COLORGREEN;
空進:S or barpos=0,COLORGREEN;
平空:Z or barpos=0,COLOR5500AA;
利潤:C*0;//因為不會寫記下當時的買賣值, 所以還沒寫???
// 平多:=賺50點 or barpos=0;//H-多進>=50多先出一口=做多平倉
// 平多:=賠50點 or barpos=0;//多進-L>=50多先出一口=多單停損
// 平空:=賺50點 or barpos=0;//空進-L>=50多先出一口=做空平倉
// 平空:=賠50點 or barpos=0;//H-空進>=50多先出一口=空單停損
進出:c*0;
TEST:0;//檢查是否進入判斷式的旗標
//[進出] 這變數值代表進出的點數.
// 1.多進, -1.空進 0.空手
多空:c*0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
for i = 1 to datacount do
begin
if 多空[i]=0 then
begin
多空[i]:=多進[i]-空進[i];test:=0;
end
else if 多空[i]=1 then
begin
if 平多[i]=1 then
begin
多空[i]:=0;test:=1;
end
else if 空進[i]=1 then
begin
多空[i]:=-1;test:=2;
end
else break
end
else if 多空[i]=-1 then
begin
if 平空[i]=1 then
begin
多空[i]:=0;test:=3;
end
else if 多進[i]=1 then
begin
多空[i]:=1;test:=4;
end
else break
end
else break
end;
我想做的效果:
1. 買訊出現, 多空=1, 並且記下那根K線的P值(=進出)
2. 賣訊出現, 多空=-1, 並且記下那跟K線的P值(=進出)
同時,計算出PR值=利潤=(P買-P賣)
3. 停損停利點滿足時, 做出平多或是平空, 並且將 多空=0(還沒寫)
請問版主, 我應該如何修改程式?我嘗試了10天了, 實在搞不懂奇狐的公式寫法? 求助解答下
__________________
win365
回覆: [問題]請問: 多空=0 跟 多空[i]=0 有什麼不一樣?我發現有時加上[i]可以編過,有時不行?
引用:
最初由 P2372 發表
P:EMA(C,5);
A:=C>P;
X:=C>P+20;
S:=C<P;
Z:=C<P-20;
多進:A or barpos=0,COLORRED;
平多:X or barpos=0,COLORGREEN;
空進:S or barpos=0,COLORGREEN;
平空:Z or barpos=0,COLOR5500AA;
利潤:C*0;//因為不會寫記下當時的買賣值, 所以還沒寫???
// 平多:=賺50點 or barpos=0;//H-多進>=50多先出一口=做多平倉
// 平多:=賠50點 or barpos=0;//多進-L>=50多先出一口=多單停損
// 平空:=賺50點 or barpos=0;//空進-L>=50多先出一口=做空平倉
// 平空:=賠50點 or barpos=0;//H-空進>=50多先出一口=空單停損
進出:c*0;
TEST:0;//檢查是否進入判斷式的旗標
//[進出] 這變數值代表進出的點數.
// 1.多進, -1.空進 0.空手
多空:c*0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
for i = 1 to datacount do
begin
if 多空[i]=0 then
begin
多空[i]:=多進[i]-空進[i];test:=0;
end
else if 多空[i]=1 then
begin
if 平多[i]=1 then
begin
多空[i]:=0;test:=1;
end
else if 空進[i]=1 then
begin
多空[i]:=-1;test:=2;
end
else break
end
else if 多空[i]=-1 then
begin
if 平空[i]=1 then
begin
多空[i]:=0;test:=3;
end
else if 多進[i]=1 then
begin
多空[i]:=1;test:=4;
end
else break
end
else break
end;
我想做的效果:
1. 買訊出現, 多空=1, 並且記下那根K線的P值(=進出)
2. 賣訊出現, 多空=-1, 並且記下那跟K線的P值(=進出)
同時,計算出PR值=利潤=(P買-P賣)
3. 停損停利點滿足時, 做出平多或是平空, 並且將 多空=0(還沒寫)
請問版主, 我應該如何修改程式?我嘗試了10天了, 實在搞不懂奇狐的公式寫法? 求助解答下
補充圖形
補充圖形說明
__________________
win365
回覆: 補充圖形
引用:
最初由 P2372 發表
補充圖形說明
我修改了程式, 從test的值=2可以看出, 沒有進入(多空=-1迴圈)為什麼
第3根k線時,應該進入這個判斷式迴圈中, 但是 不管我的游標如何移動, 結果都沒有改變?
從test的值=2可以看出, 沒有進入(多空=-1迴圈)為什麼?
並且奇怪的是, 為何不管游標如何移動到任何點, 畫面上的輸出的(變數多空)值, 永遠都沒有改變?從第1根到最後1根都是-1?
請協助解答, 謝謝
__________________
win365
補充:補上程式原碼
P:EMA(C,5),colorffffff,linethick3;
A:=C>P;
X:=C>P+20;
S:=C<P;
Z:=C<P-20;
多進:A or barpos=0,COLORRED;
drawicon(A,L-2,4);
平多:X or barpos=0,COLORGREEN;
drawicon(X,H+5,11);
空進:S or barpos=0,COLORGREEN;
drawicon(S,H+2,5);
平空:Z or barpos=0,COLOR5500AA;
drawicon(Z,L-5,10);
// 平多:=賺50點 or barpos=0;//H-多進>=50多先出一口=做多平倉
// 平多:=賠50點 or barpos=0;//多進-L>=50多先出一口=多單停損
// 平空:=賺50點 or barpos=0;//空進-L>=50多先出一口=做空平倉
// 平空:=賠50點 or barpos=0;//H-空進>=50多先出一口=空單停損
進出:c*0,COLOR000000;
TEST:0,COLOR000000;
//[進出] 這變數值代表進出的點數.
// 1.多進, -1.空進 0.空手
//多空[i]:=0;是將 "多" 這個數列, 其中的第 i 個元素, 設定為零
//多空:=0;是將 "多" 這個變數(非數列), 設定為零
多空:0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
多進t:0;
利潤:0;
for i = 1 to datacount do
begin
if 多空=0 then
begin
多空:=多進[i]-空進[i];test:=0;
end
else if 多空=1 then
begin
if 平多[i]=1 then
begin
多空:=0;test:=1;
end
else if 空進[i]=1 then
begin
多空:=-1;test:=2;
end
else break
end
else if 多空=-1 then
begin
if 平空[i]=1 then
begin
多空:=0;test:=3;
end
else if 多進[i]=1 then
begin
多空:=1;test:=4;
end
else break
end
else break
end;
__________________
win365
回覆: 我修改了程式, 從test的值=2可以看出, 沒有進入(多空=-1迴圈)為什麼
引用:
最初由 P2372 發表
第3根k線時,應該進入這個判斷式迴圈中, 但是 不管我的游標如何移動, 結果都沒有改變?
從test的值=2可以看出, 沒有進入(多空=-1迴圈)為什麼?
並且奇怪的是, 為何不管游標如何移動到任何點, 畫面上的輸出的(變數多空)值, 永遠都沒有改變?從第1根到最後1根都是-1?
請協助解答, 謝謝
上個問題您已經回復數列跟變數的不同,我已經修改了
上個問題您已經回復數列跟變數的不同,我已經修改了程式裡頭多空:=c*0;這個錯誤, 所以附上新的原碼板主可能沒有注意到,
謝謝您的指導, 數列跟變數我知道的,
a[5]:=a[0,1,2,3,4]共有5個元素,
a:=5; 只有1個元素
這我知道,
麻煩板主看新的原碼, 再次麻煩下, 不好意思, 請您再次指點:
新的原碼的多空變數已經改變如下了:
多空:0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
P:EMA(C,5),colorffffff,linethick3;
A:=C>P;
X:=C>P+20;
S:=C<P;
Z:=C<P-20;
多進:A or barpos=0,COLORRED;
drawicon(A,L-2,4);
平多:X or barpos=0,COLORGREEN;
drawicon(X,H+5,11);
空進:S or barpos=0,COLORGREEN;
drawicon(S,H+2,5);
平空:Z or barpos=0,COLOR5500AA;
drawicon(Z,L-5,10);
// 平多:=賺50點 or barpos=0;//H-多進>=50多先出一口=做多平倉
// 平多:=賠50點 or barpos=0;//多進-L>=50多先出一口=多單停損
// 平空:=賺50點 or barpos=0;//空進-L>=50多先出一口=做空平倉
// 平空:=賠50點 or barpos=0;//H-空進>=50多先出一口=空單停損
進出:c*0,COLOR000000;
TEST:0,COLOR000000;
//[進出] 這變數值代表進出的點數.
// 1.多進, -1.空進 0.空手
//多空[i]:=0;是將 "多" 這個數列, 其中的第 i 個元素, 設定為零
//多空:=0;是將 "多" 這個變數(非數列), 設定為零
多空:0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
多進t:0;
利潤:0;
for i = 1 to datacount do
begin
if 多空=0 then
begin
多空:=多進[i]-空進[i];test:=0;
end
else if 多空=1 then
begin
if 平多[i]=1 then
begin
多空:=0;test:=1;
end
else if 空進[i]=1 then
begin
多空:=-1;test:=2;
end
else break
end
else if 多空=-1 then
begin
if 平空[i]=1 then
begin
多空:=0;test:=3;
end
else if 多進[i]=1 then
begin
多空:=1;test:=4;
end
else break
end
else break
end;
__________________
win365
回覆: 上個問題您已經回復數列跟變數的不同,我已經修改了
引用:
最初由 P2372 發表
上個問題您已經回復數列跟變數的不同,我已經修改了程式裡頭多空:=c*0;這個錯誤, 所以附上新的原碼板主可能沒有注意到,
謝謝您的指導, 數列跟變數我知道的,
a[5]:=a[0,1,2,3,4]共有5個元素,
a:=5; 只有1個元素
這我知道,
麻煩板主看新的原碼, 再次麻煩下, 不好意思, 請您再次指點:
新的原碼的多空變數已經改變如下了:
多空:0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
P:EMA(C,5),colorffffff,linethick3;
A:=C>P;
X:=C>P+20;
S:=C<P;
Z:=C<P-20;
多進:A or barpos=0,COLORRED;
drawicon(A,L-2,4);
平多:X or barpos=0,COLORGREEN;
drawicon(X,H+5,11);
空進:S or barpos=0,COLORGREEN;
drawicon(S,H+2,5);
平空:Z or barpos=0,COLOR5500AA;
drawicon(Z,L-5,10);
// 平多:=賺50點 or barpos=0;//H-多進>=50多先出一口=做多平倉
// 平多:=賠50點 or barpos=0;//多進-L>=50多先出一口=多單停損
// 平空:=賺50點 or barpos=0;//空進-L>=50多先出一口=做空平倉
// 平空:=賠50點 or barpos=0;//H-空進>=50多先出一口=空單停損
進出:c*0,COLOR000000;
TEST:0,COLOR000000;
//[進出] 這變數值代表進出的點數.
// 1.多進, -1.空進 0.空手
//多空[i]:=0;是將 "多" 這個數列, 其中的第 i 個元素, 設定為零
//多空:=0;是將 "多" 這個變數(非數列), 設定為零
多空:0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
多進t:0;
利潤:0;
for i = 1 to datacount do
.............................
我修改了程式, 但是仍然沒有進入迴圈?
P:EMA(C,5),colorffffff,linethick3;
A:=C>P;
X:=C>P+20;
S:=C<P;
Z:=C<P-20;
多進:A or barpos=0,COLORRED;
drawicon(A,L-2,4);
平多:X or barpos=0,COLORGREEN;
drawicon(X,H+5,11);
空進:S or barpos=0,COLORGREEN;
drawicon(S,H+2,5);
平空:Z or barpos=0,COLOR5500AA;
drawicon(Z,L-5,10);
// 平多:=賺50點 or barpos=0;//H-多進>=50多先出一口=做多平倉
// 平多:=賠50點 or barpos=0;//多進-L>=50多先出一口=多單停損
// 平空:=賺50點 or barpos=0;//空進-L>=50多先出一口=做空平倉
// 平空:=賠50點 or barpos=0;//H-空進>=50多先出一口=空單停損
進出:c*0,COLOR000000;
TEST:0,COLOR000000;
//[進出] 這變數值代表進出的點數.
// 1.多進, -1.空進 0.空手
//多空[i]:=0;是將 "多" 這個數列, 其中的第 i 個元素, 設定為零
//多空:=0;是將 "多" 這個變數(非數列), 設定為零
多空:0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
多進t:0;
利潤:0;
for i = 1 to datacount do
begin
if 多空=0 then
begin
多空:=多進[i]-空進[i];test:=0;
end
else if 多空=1 then
begin
if 平多[i]=1 then
begin
多空:=(多進[i]-平多[i])-空進[i];test:=1;
end
else if 空進[i]=1 then
begin
多空:=(多進[i]-平多[i])-空進[i];test:=2;
end
else break
end
else if 多空=-1 then
begin
if 平空[i]=1 then
begin
多空:=多進[i]-(空進[i]-平空[i]);test:=3;
end
else if 多進[i]=1 then
begin
多空:=多進[i]-(空進[i]-平空[i]);test:=4;
end
else break
end
else break
end;
__________________
win365
補充: 我加入了我的想法, 請指點哪裡錯了?
版主老大:
我的疑問: 為何沒有進入迴圈: 多空=-1的多進=1的這個迴圈?
如果有進入, TEST這個FLAG應該被改成了4,
但是驗證的結果-->TEST旗標永遠都是2, 不管我的游標如何移動, 從2008年到2013年都是如此?
請指點下, 謝謝
__________________
win365
回覆: 補充: 我加入了我的想法, 請指點哪裡錯了?
引用:
最初由 P2372 發表
P:EMA(C,5),colorffffff,linethick3;
A:=C>P;
X:=C>P+20;
S:=C<P;
Z:=C<P-20;
多進:A or barpos=0,COLORRED;
drawicon(A,L-2,4);
平多:X or barpos=0,COLORGREEN;
drawicon(X,H+5,11);
空進:S or barpos=0,COLORGREEN;
drawicon(S,H+2,5);
平空:Z or barpos=0,COLOR5500AA;
drawicon(Z,L-5,10);
// 平多:=賺50點 or barpos=0;//H-多進>=50多先出一口=做多平倉
// 平多:=賠50點 or barpos=0;//多進-L>=50多先出一口=多單停損
// 平空:=賺50點 or barpos=0;//空進-L>=50多先出一口=做空平倉
// 平空:=賠50點 or barpos=0;//H-空進>=50多先出一口=空單停損
進出:c*0,COLOR000000;
TEST:0,COLOR000000;
//[進出] 這變數值代表進出的點數.
// 1.多進, -1.空進 0.空手
//多空[i]:=0;是將 "多" 這個數列, 其中的第 i 個元素, 設定為零
//多空:=0;是將 "多" 這個變數(非數列), 設定為零
多空:0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
多進t:0;
利潤:0;
for i = 1 to datacount do
begin
if 多空=0 then
begin
多空:=多進[i]-空進[i];test:=0;
end
else if 多空=1 then
begin
if 平多[i]=1 then
begin
多空:=(多進[i]-平多[i])-空進[i];test:=1;
end
else if 空進[i]=1 then
begin
多空:=(多進[i]-平多[i])-空進[i];test:=2;
end
else break
end
else if 多空=-1 then
begin
if 平空[i]=1 then
begin
多空:=多進[i]-(空進[i]-平空[i]);test:=3;
end
else if 多進[i]=1 then
begin
多空:=多進[i]-(空進[i]-平空[i]);test:=4;
end
else break
end
else break
end;
我的疑問: 為何沒有進入迴圈: 多空=-1的多進=1的這個迴圈?
如果有進入, TEST這個FLAG應該被改成了4,
但是驗證的結果-->TEST旗標永遠都是2, 不管我的游標如何移動, 從2008年到2013年都是如此?
請指點下, 謝謝
感謝版主的回覆, 我依照您的說明重新修改了原碼做測試, 仍然有問題
請版主協助看下我的觀念有沒有錯?
附上原碼及語句理解圖, 請看看對不對?
如果沒有錯, 為何不管游標如何移動, 結果仍然是不對?
修改內容:
1..我拿掉了 BREAK
2..拿掉了多空[N]的觀念, 把 多空 及 進出都當作一般的變數來用
3..檢查了我的迴圈關係.
執行的結果:迴圈永遠在TEST4,
但是這行明明有:這語句, 為何結果還是都不變?
多空:=多進[i]-(空進[i]-平空[i]);進出:=P[i];test:=4
P:EMA(C,5),colorffffff,linethick3;
A:=C>P;
X:=C>P+50;
S:=C<P;
Z:=C<P-50;
多進:A or barpos=0,COLORRED;
drawicon(A,L-2,4);
平多:X or barpos=0,COLORGREEN;
drawicon(X,H+5,11);
空進:S or barpos=0,COLORGREEN;
drawicon(S,H+2,5);
平空:Z or barpos=0,COLOR5500AA;
drawicon(Z,L-5,10);
進出:0,COLOR000000;
TEST:0,COLOR000000;
//[進出] 這變數值代表進出的點數.
多空:0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
利潤:0;
for i = 1 to datacount do begin
if 多空=0 then begin
多空:=多進[i]-空進[i];進出:=P[i];test:=0;end
else begin {多空<>0}
if 多空=1 then begin
if 平多[i]=1 then begin
多空:=(多進[i]-平多[i])-空進[i];進出:=P[i];test:=1;end;
else if 空進[i]=1 then begin
多空:=(多進[i]-平多[i])-空進[i];進出:=P[i];test:=2;end;end;
else begin
if 多空=-1 then begin
if 平空[i]=1 then begin
多空:=多進[i]-(空進[i]-平空[i]);進出:=P[i];test:=3;end;
else if 多進[i]=1 then begin
多空:=多進[i]-(空進[i]-平空[i]);進出:=P[i];test:=4;end;end;
else test:=5;
end;
end;
end;
__________________
win365
補充說明:前4根K線的變數關係
修改內容:
1..我拿掉了 BREAK
2..拿掉了多空[N]的觀念, 把 多空 及 進出都當作一般的變數來用
3..檢查了我的迴圈關係.
執行的結果:迴圈永遠在TEST4,
但是這行明明有:這語句, 為何結果還是都不變?
多空:=多進[i]-(空進[i]-平空[i]);進出:=P[i];test:=4
__________________
win365
回覆: 補充說明:前4根K線的變數關係
引用:
最初由 P2372 發表
修改內容:
1..我拿掉了 BREAK
2..拿掉了多空[N]的觀念, 把 多空 及 進出都當作一般的變數來用
3..檢查了我的迴圈關係.
執行的結果:迴圈永遠在TEST4,
但是這行明明有:這語句, 為何結果還是都不變?
多空:=多進[i]-(空進[i]-平空[i]);進出:=P[i];test:=4
全部時間均為台灣時間, 現在時間為02:16 | 總頁數 (2): [1] 2 » 在這個頁面顯示本主題全部的 17 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.