COCO研究院

 找回密碼
 註冊
搜索
查看: 3845|回復: 11

詢問一個訊號的盲點

[複製鏈接]
發表於 12-3-18 09:21 | 顯示全部樓層 |閱讀模式
我的流程控制大致如下


setstoploss(金額);


if 進場條件式成立 and 變數=false then begin
buy 進場;
指定變數=true;
end;

//設定額外 停損停利條件

if 停利出場條件成立 then begin
sell next bar market;
end;

if 停損出場條件成立 then begin
sell next bar market;
end;




現在問題來了!!!!

回測的時候發現(實際下單時也有出現)

我在多單進場後->setstoploss成立->平倉後
他會在當根K棒再進場一次!!! 然後再執行sell next bar market =>就是說我分別進了兩次多單,然後停損兩次!!

問題是: 我已經設定在買進多單的時候,就已經設定變數為true了 其中沒有其他部分會更動到變數的值,為什麼會下單兩次呢?!  

請各位大大幫我解惑 Orz拜託了
發表於 12-3-18 12:30 | 顯示全部樓層
本帖最後由 rockwell 於 12-3-18 12:34 編輯

會不會你跑迴圈的時間太短了,「指定變數=true」這個雖然會作,
但變數變換的時間太久,所以第二次買進時,你的變數其實還是false。
這樣產生兩次買進的動作,就有可能發生。
因為曾經遇過,EXCEL表格的公式變換,跟不上VBA的速度而發生非預期結果。

不然先這樣試試好了,

buy 進場;
指定變數=true;

換成

指定變數=true;
                             <---中間再加個延遲試試
buy 進場;


我不會MC,試著回答看看。反正也沒人回答,哈~~~
 樓主| 發表於 12-3-18 12:40 | 顯示全部樓層
rockwell 發表於 12-3-18 12:30
會不會你跑迴圈的時間太短了,「指定變數=true」這個雖然會作,
但變數變換的時間太久,所以第二次買進時, ...

謝謝你 :) 我試試看
發表於 12-3-18 12:51 | 顯示全部樓層
kaiwei0808 發表於 12-3-18 12:40
謝謝你 :) 我試試看

這樣說明比較有意思

每一個 Tick 進來 會觸發了 腳本 開始計算 相關數據
假如有一個段腳本是這樣寫的
Variables: A(0) ;
A = A+1;
如果在第一根K棒的時候 總共有 100個Ticks
請問 第一根K棒結束的時候 A 會等於多少?

再另一個情況
Variables:TF(False);
IF TF = Ture then TF = False else TF = True;
在第一根K棒的時候 總共有 100個Ticks 請問 第一根K棒結束的時候 TF 有幾次會是 True 的情況
想清楚 你就會知道  到底是怎麼回事了

發表於 12-3-18 13:11 | 顯示全部樓層
第一題的答案是這樣嗎?
100個Ticks,所以A(0)是從A=0開始嗎?
所以第一次Ticks,A會等於1,第100次Ticks A最後會等於100?

第二題
沒有半次嗎?因為TF(False),所以TF的值,一直為False,
所以TF永遠是False?

不解MC中的Variables: A(0) 是啥意思,MEI大,能請你來個解答,小教學一下嗎?
 樓主| 發表於 12-3-18 13:49 | 顯示全部樓層
meimeichen 發表於 12-3-18 12:51
這樣說明比較有意思

每一個 Tick 進來 會觸發了 腳本 開始計算 相關數據

大大! 我不太懂! 當啟動買進訊號的時候 不是也跟著更動變數的值了嗎?

然後 收到最新的TICK腳本重算的時候 不是以前一個TICK計算完的變數值為主嗎?  

卡關好久阿!! Orz
發表於 12-3-18 14:24 | 顯示全部樓層
本帖最後由 meimeichen 於 12-3-18 14:32 編輯
kaiwei0808 發表於 12-3-18 13:49
大大! 我不太懂! 當啟動買進訊號的時候 不是也跟著更動變數的值了嗎?

然後 收到最新的TICK腳本重算的時 ...


當然是跟你想的不一樣啊不然 怎麼會讓一堆人 搞不清楚呢
所以 我寫這兩段 讓你思考一下嘍
Variables:A(0),TF(False) 代表 初始值 A==0, TF == False


100個Ticks,所以A(0)是從A=0開始嗎? 對 從零開始
所以第一次Ticks,A會等於1,第100次Ticks A最後會等於100? 錯 第一個 Tick  到 100Ticks 都等於 1
第二根K棒 才會等於 2

第二題 第一根K棒 永遠都是 True  第二根K棒 永遠都是 False 不管 當根K棒有幾個 Ticks 進來 只有第一次 轉變 True or False 後面都不變




發表於 12-3-18 16:22 | 顯示全部樓層
本帖最後由 rockwell 於 12-3-18 16:23 編輯

哇~~~MC的語法有點難懂,要花點時間去適應一下。

不過這樣似乎有滿恐怖的地方,就是MC的進出場,
似乎是以K棒為單位來做進出的嗎?
所以,以這根K棒作進出場,或是以下根K棒作進出場,
這樣好像會有很大的差異。

再加上指標的變化是依不同根K棒完成當基準,
是不是又有差了?

難怪版上常常有大大在問滑價的問題,
不然就是要設滑價多少的問題。

發表於 12-3-18 18:00 | 顯示全部樓層
rockwell 發表於 12-3-18 16:22
哇~~~MC的語法有點難懂,要花點時間去適應一下。

不過這樣似乎有滿恐怖的地方,就是MC的進出場,

大大您又 誤會了呦
其實 是可以設定 當根K棒只能進出一次的 或是 多次進出的啦
MC 有客服電話 花了錢 買軟體 應該 沒事多跟他聯絡感情啦 讓他服務一下的啦

滑價問題不是因為條件判斷產生的
應該說是 MC 收到的資料已經慢了半拍
再送出決策又慢了半拍
最後 券商主機 再延誤半拍
最後 成交回來 那 個價位 就不會是你當下收到的價位了
用歷史資料在交易,永遠不要預期沒有滑價。除非你都下限價單 早就下好決定在哪裡出場排隊了,但這也只有出場可以這樣幹,我們的期交所 賺翻了錢,就是不願意提供觸價進場交易的機制,美其名是為了避免暴起暴落的交易狀況,其實看起來就似乎就為了某些特定對象在服務,讓它們掌握比我們有利的交易地位。身為散戶就只好 默默忍受滑價嘍。


發表於 12-3-18 19:49 | 顯示全部樓層
我們的期交所 賺翻了錢,就是不願意提供觸價進場交易的機制,美其名是為了避免暴起暴落的交易狀況,其實看起來就似乎就為了某些特定對象在服務,讓它們掌握比我們有利的交易地位。身為散戶就只好 默默忍受滑價嘍。?                                                這跟收盤前.關五分鐘一樣.美其名保護散戶.給你聽爽的.實際上是吃定你們! 如何?
 樓主| 發表於 12-3-18 21:43 | 顯示全部樓層
meimeichen 發表於 12-3-18 14:24
當然是跟你想的不一樣啊不然 怎麼會讓一堆人 搞不清楚呢
所以 我寫這兩段 讓你思考一下嘍
Variables: ...

感激感激 我下午看了一下 就匆忙出門 大致上懂了 看來要重新檢查一下邏輯 謝謝 :)
發表於 13-1-29 16:12 | 顯示全部樓層
看完MEIMEI大的解說
才想起之前看書上 好像有講到類似的東西..
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-12-27 01:51

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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