kaiwei0808 發表於 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拜託了

rockwell 發表於 12-3-18 12:30

本帖最後由 rockwell 於 12-3-18 12:34 編輯

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

不然先這樣試試好了,

buy 進場;
指定變數=true;

換成

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


我不會MC,試著回答看看。反正也沒人回答,哈~~~

kaiwei0808 發表於 12-3-18 12:40

rockwell 發表於 12-3-18 12:30 static/image/common/back.gif
會不會你跑迴圈的時間太短了,「指定變數=true」這個雖然會作,
但變數變換的時間太久,所以第二次買進時, ...

謝謝你 :) 我試試看

meimeichen 發表於 12-3-18 12:51

kaiwei0808 發表於 12-3-18 12:40 static/image/common/back.gif
謝謝你 :) 我試試看

這樣說明比較有意思

每一個 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 的情況
想清楚 你就會知道到底是怎麼回事了

rockwell 發表於 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大,能請你來個解答,小教學一下嗎?

kaiwei0808 發表於 12-3-18 13:49

meimeichen 發表於 12-3-18 12:51 static/image/common/back.gif
這樣說明比較有意思

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


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

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

卡關好久阿!! Orz

meimeichen 發表於 12-3-18 14:24

本帖最後由 meimeichen 於 12-3-18 14:32 編輯

kaiwei0808 發表於 12-3-18 13:49 static/image/common/back.gif
大大! 我不太懂! 當啟動買進訊號的時候 不是也跟著更動變數的值了嗎?

然後 收到最新的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 後面都不變




rockwell 發表於 12-3-18 16:22

本帖最後由 rockwell 於 12-3-18 16:23 編輯

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

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

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

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

meimeichen 發表於 12-3-18 18:00

rockwell 發表於 12-3-18 16:22 static/image/common/back.gif
哇~~~MC的語法有點難懂,要花點時間去適應一下。

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


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

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


sbox1024 發表於 12-3-18 19:49

我們的期交所 賺翻了錢,就是不願意提供觸價進場交易的機制,美其名是為了避免暴起暴落的交易狀況,其實看起來就似乎就為了某些特定對象在服務,讓它們掌握比我們有利的交易地位。身為散戶就只好 默默忍受滑價嘍。?                                                這跟收盤前.關五分鐘一樣.美其名保護散戶.給你聽爽的.實際上是吃定你們! 如何?

kaiwei0808 發表於 12-3-18 21:43

meimeichen 發表於 12-3-18 14:24 static/image/common/back.gif
當然是跟你想的不一樣啊不然 怎麼會讓一堆人 搞不清楚呢
所以 我寫這兩段 讓你思考一下嘍
Variables: ...

感激感激 我下午看了一下 就匆忙出門 大致上懂了 看來要重新檢查一下邏輯 謝謝 :)

MagicPi 發表於 13-1-29 16:12

看完MEIMEI大的解說
才想起之前看書上 好像有講到類似的東西..
頁: [1]
查看完整版本: 詢問一個訊號的盲點