奇狐社區論壇 總頁數 (4): « 第一頁 ... « 2 3 [4]
在這個頁面顯示本主題全部的 57 個文章

奇狐社區論壇 (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=17082)


由 wqew2002 在 2012-10-27 12:45 發表:

^^


由 co2 在 2013-01-28 21:57 發表:

[QUOTE]最初由 cgjj 發表
[B]

原碼:

StDoTime
:=085000;
多進:=多進 and time>=StDoTime or barpos=0;
空進:=空進 and time>=StDoTime or barpos=0;
進場:=多進-空進;
強出:=time>=133500;
限進:=time>=131000;
限停損次:=2//每日
損控點數:=18;
黑五:=sum(C<O,5)=5;
OO:=OCC:=CHH:=HLL:=L;
StDE:=barpos=or time=StDoTime;
DoBS:C*0 NOAXIS;
多空:=0//1.多 -1.空 0.無
for i=1 to datacount do begin
  
if StDE[ithen 累停損次:=0;
  if 
多空=and 強出[i]=and 限進[i]=and 累停損次<限停損次 then begin
    多空
:=進場[i]*2
    if 
多空<>0 then begin 
      進價
:=OO[i]; Max盈:=0PreTN:=0;
    
end;
  
end else if 多空<>0 then begin
    NowDir
:=SGN(多空);
    if 
強出[ithen begin
      多空
:=0;
    
end else if NowDir=-進場[ithen begin
      多空
:=-NowDir*2*(限進[i]=0); //反手
      
if 多空<>0 then begin
        進價
:=OO[i]; Max盈:=0PreTN:=0;
      
end;
    
end else begin      
      損HL
:=LL[i]*(NowDir=1)+HH[i]*(NowDir=-1);
      
盈HL:=HH[i]*(NowDir=1)+LL[i]*(NowDir=-1);
      
盈利L:=(損HL-進價)*NowDir;
      if (
損HL-進價)*NowDir<=-損控點數 then begin
        多空
:=0累停損次:=累停損次+1//停損
      
end else if Max盈>=61 then begin
        
if 黑五[i] or 盈利L<Max盈*0.75 then 多空:=0;
      
end else if Max盈>=41 then begin
        
if 盈利L<=Max盈*0.4 then begin
          多空
:=0;
        
end else if 盈利L<=Max盈*0.7 and PreTN<>0.7 then begin
          多空
:=多空-NowDirPreTN:=0.7;
        
end;
      
end else if Max盈>=21 then begin
        
if 盈利L<=Max盈-32 then begin
          多空
:=0;
        
end else if 盈利L<Max盈-16 and PreTN<>16 then begin
          多空
:=多空-NowDirPreTN:=16;
        
end;
      
end;
      
盈利H:=(盈HL-進價)*NowDir;
      if 
盈利H>Max盈 then Max盈:=盈利H;
    
end;
  
end;
  
DoBS[i]:=多空;
end;



總版主您好!
經過一段時間試用,發現有一點不甚理想之處,因此再來求教:
是關於:"限停損次:=2; //每日" 的問題
想改成:每日限制交易次數(二次),來回算一次(進場之後反手即算一次),
這樣在實際操作上比較合乎現實要求。謝謝您!


由 cgjj 在 2013-01-29 09:05 發表:

引用:
最初由 co2 發表

總版主您好!
經過一段時間試用,發現有一點不甚理想之處,因此再來求教:
是關於:"限停損次:=2; //每日" 的問題
想改成:每日限制交易次數(二次),來回算一次(進場之後反手即算一次),
這樣在實際操作上比較合乎現實要求。謝謝您!



您帶入的多空訊號必定是正反輪換延續嗎? 例如:
多進,空進,多進,空進,多進,空進,多進,空進 .... 共四次
空進,多進,空進,多進,空進,多進 .... 共三次
多進,多停,空進,多進,空進,空停,多進,空進 ........ 共三次

若非正反輪換, 則您要如何算? 例如:
多進,空進,多進,多停,多進,空進,多進,空進,空停,多進,空進 ...算幾次?


由 co2 在 2013-01-29 10:22 發表:

引用:
最初由 cgjj 發表
您帶入的多空訊號必定是正反輪換延續嗎? 例如:
多進,空進,多進,空進,多進,空進,多進,空進 .... 共四次
空進,多進,空進,多進,空進,多進 .... 共三次
多進,多停,空進,多進,空進,空停,多進,空進 ........ 共三次

若非正反輪換, 則您要如何算? 例如:
多進,空進,多進,多停,多進,空進,多進,空進,空停,多進,空進 ...算幾次?



早安!
抱歉,怱忙中忘了提,這個式子我土法煉鋼已經簡化改為一口單,正在
測試中,因為有些點位不會很快出現,所以正確與否尚在觀察中。

我的作法大致如下:

1. 開盤後若先有多訊:則 多、空、多、空………循環作單,一多一空就是交易一次。
    或先有空訊:則 空、多、空、多………循環作單,一空一多也是交易一次。

2. 不論作多或作空,遇 "停利點" 則平倉空手,此一來回即視為限制交易次數的 "一次"。
 停利後如果沒有超過限制交易次數的話,就等待 "反向" 作單機會。

3. 改成一口單後已暫時將 "停損" 關閉 (放大損控點數至9999),
 所以 "反手點" 等於是 "停損點" 。

4. 若作單後一路順風,則時間到【強出】平倉空手。

補充說明如上,當中若有不妥,請不吝賜教指正。


由 cgjj 在 2013-01-29 21:41 發表:

引用:
最初由 co2 發表
總版主您好!
經過一段時間試用,發現有一點不甚理想之處,因此再來求教:
是關於:"限停損次:=2; //每日" 的問題
想改成:每日限制交易次數(二次),來回算一次(進場之後反手即算一次),
這樣在實際操作上比較合乎現實要求。謝謝您!



剛要答覆您新的需求時
發現原來回應的這段程式碼, 有遺漏一個地方

限制停損次數只對一般進場有用, 反手的進場並無被限制到

需將此行
多空:=-NowDir*2*(限進[i]=0); //反手

修正為:
多空:=-NowDir*2*(限進[i]=0 and 累停損次<限停損次); //反手


由 cgjj 在 2013-01-29 21:42 發表:

引用:
最初由 co2 發表
早安!
抱歉,怱忙中忘了提,這個式子我土法煉鋼已經簡化改為一口單,正在
測試中,因為有些點位不會很快出現,所以正確與否尚在觀察中。

我的作法大致如下:

1. 開盤後若先有多訊:則 多、空、多、空………循環作單,一多一空就是交易一次。
    或先有空訊:則 空、多、空、多………循環作單,一空一多也是交易一次。

2. 不論作多或作空,遇 "停利點" 則平倉空手,此一來回即視為限制交易次數的 "一次"。
 停利後如果沒有超過限制交易次數的話,就等待 "反向" 作單機會。

3. 改成一口單後已暫時將 "停損" 關閉 (放大損控點數至9999),
 所以 "反手點" 等於是 "停損點" 。

4. 若作單後一路順風,則時間到【強出】平倉空手。

補充說明如上,當中若有不妥,請不吝賜教指正。



試試看這樣是否為您要的

原碼:

StDoTime
:=085000;
多進:=多進 and time>=StDoTime or barpos=0;
空進:=空進 and time>=StDoTime or barpos=0;
進場:=多進-空進;
強出:=time>=133500;
限進:=time>=131000;
限制趟數:=2//每日
損控點數:=18;
黑五:=sum(C<O,5)=5;
OO:=OCC:=CHH:=HLL:=L;
StDE:=barpos=or time=StDoTime;
DoBS:C*0 NOAXIS;
多空:=0//1.多 -1.空 0.無
for i=1 to datacount do begin
  
if StDE[ithen begin
    累計趟數
:=0RecChgDir:=0;
  
end;
  if 
多空=and 強出[i]=and 限進[i]=and 累計趟數<限制趟數 then begin
    多空
:=進場[i]*2;
    if 
多空<>0 then begin 
      進價
:=OO[i]; Max盈:=0PreTN:=0NowDir:=SGN(多空);
      if 
RecChgDir=0 then begin
        RecChgDir
:=NowDir;
      
end else if RecChgDir=-NowDir then begin
        累計趟數
:=累計趟數+1RecChgDir:=0;
      
end;
    
end;
  
end else if 多空<>0 then begin
    NowDir
:=SGN(多空);
    if 
強出[ithen begin
      多空
:=0;
    
end else if NowDir=-進場[ithen begin
      多空
:=-NowDir*2*(限進[i]=and 累計趟數<限制趟數); //反手
      
if 多空<>0 then begin
        進價
:=OO[i]; Max盈:=0PreTN:=0;
        if 
RecChgDir=0 then begin
          RecChgDir
:=SGN(多空);
        
end else if RecChgDir=-SGN(多空then begin
          累計趟數
:=累計趟數+1RecChgDir:=0;
        
end;
      
end;
    
end else begin      
      損HL
:=LL[i]*(NowDir=1)+HH[i]*(NowDir=-1);
      
盈HL:=HH[i]*(NowDir=1)+LL[i]*(NowDir=-1);
      
盈利L:=(損HL-進價)*NowDir;
      if (
損HL-進價)*NowDir<=-損控點數 then begin
        多空
:=0//停損
      
end else if Max盈>=61 then begin
        
if 黑五[i] or 盈利L<Max盈*0.75 then 多空:=0;
      
end else if Max盈>=41 then begin
        
if 盈利L<=Max盈*0.4 then begin
          多空
:=0;
        
end else if 盈利L<=Max盈*0.7 and PreTN<>0.7 then begin
          多空
:=多空-NowDirPreTN:=0.7;
        
end;
      
end else if Max盈>=21 then begin
        
if 盈利L<=Max盈-32 then begin
          多空
:=0;
        
end else if 盈利L<Max盈-16 and PreTN<>16 then begin
          多空
:=多空-NowDirPreTN:=16;
        
end;
      
end;
      
盈利H:=(盈HL-進價)*NowDir;
      if 
盈利H>Max盈 then Max盈:=盈利H;
    
end;
  
end;
  
DoBS[i]:=多空
end;


由 co2 在 2013-01-30 07:44 發表:

早安!
多謝,套用測試中,有結果再回報。


由 co2 在 2013-01-30 09:45 發表:

請問:
1. 輸出表達式可以用類似以下的方式表達嗎?
//[進出] 這變數值代表意義如下:
//1.多單進場, 2.多單出場, 3.多控利出, 4.多控損出, 5.強制出場, 6.空出轉多
//-1.空單進場,-2.空單出場,-3.空控利出, -4.空控損出, -5.強制出場, -6.多出轉空
※若可簡化則簡化之。

2. 當停利後隔筆好像同向的訊號又再出現(如:作多盈出後下一根又出現多訊)。

以上為初步發現的小問題,其餘則等收盤後再研究。謝謝!


由 cgjj 在 2013-01-30 10:33 發表:

引用:
最初由 co2 發表
請問:
2. 當停利後隔筆好像同向的訊號又再出現(如:作多盈出後下一根又出現多訊)。



DoBS 變數
其為該根動作完成後所持有的口數, 本身不是代表進場訊

若非誤看
請幫忙確認一下, 原始訊號是不是一正一反?
還是有 多多空多空空多 類似這種情況

若是用兩條線交叉去做正反, 應該不會如此唷
除非您是用 A>B 和 A<B 類似這種去做訊號


由 co2 在 2013-01-30 13:35 發表:

引用:
最初由 cgjj 發表
DoBS 變數
其為該根動作完成後所持有的口數, 本身不是代表進場訊

若非誤看
請幫忙確認一下, 原始訊號是不是一正一反?
還是有 多多空多空空多 類似這種情況

若是用兩條線交叉去做正反, 應該不會如此唷
除非您是用 A>B 和 A<B 類似這種去做訊號



了解,原來 DoBS 是持有的口數而不是進場訊。

我目前使用的原始訊號就是當許多條件都成立時才產生(成立時就是 =1 )

※我想用這樣來說明應該比較清楚:
多訊:= if(條件A and 條件B and 條件C and 條件D,1,0) ;
空訊:= if(條件A and 條件B and 條件C and 條件D,1,0);

簡單的說,就是作多後就等著有空訊再反空或者是停利、停損。

這套用在您的範例式子裡就類似:進出:= 多訊-空訊;
不知道這樣是否適合您現在所示範的式子?

※若只要作一口單,修改那一部份最簡單。


由 cgjj 在 2013-01-30 15:07 發表:

引用:
最初由 co2 發表
了解,原來 DoBS 是持有的口數而不是進場訊。

我目前使用的原始訊號就是當許多條件都成立時才產生(成立時就是 =1 )

※我想用這樣來說明應該比較清楚:
多訊:= if(條件A and 條件B and 條件C and 條件D,1,0) ;
空訊:= if(條件A and 條件B and 條件C and 條件D,1,0);

簡單的說,就是作多後就等著有空訊再反空或者是停利、停損。

這套用在您的範例式子裡就類似:進出:= 多訊-空訊;
不知道這樣是否適合您現在所示範的式子?

※若只要作一口單,修改那一部份最簡單。



這樣的多空訊
可能就會有 多多空多空空多 這種情況
(條件規則決定特性, 將多空訊輸出檢視就可觀察現象)
會導致有連續同方向的進場訊號
需用程式濾訊
可先在迴圈外先濾訊後, 再帶入運算
亦可於迴圈內去加程式處理
通常選擇在迴圈外處理比較好(可先觀察濾訊後的結果)

不是怎麼改比較簡單的問題
您原先的相關定義是基於兩口單的規則
規則沒被重新調整定義, 是無法修改的


由 co2 在 2013-01-30 15:23 發表:

了解,再研究囉。謝謝。


全部時間均為台灣時間, 現在時間為21:17 總頁數 (4): « 第一頁 ... « 2 3 [4]
在這個頁面顯示本主題全部的 57 個文章


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

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