COCO研究院

 找回密碼
 註冊
搜索
查看: 12210|回復: 14

MA 或其他指標穿越價的語法-II

[複製鏈接]
發表於 16-11-13 20:08 | 顯示全部樓層 |閱讀模式
早前上來問過這問題 : http://www.coco-in.net/thread-49398-1-3.html
求MA 或其他指標穿越價的語法,如果用Entryprice只能用來作停損,但用來作獲利離場就不行了,意思是以價格穿越某技術指標時價格為參考,如果回破此穿越價格時離場.

blj0511兄提供了程式範例:

if close cross over averagefc(close,5) then value1=averagefc(close,5);
if value1>0 then sell next bar at value1 stop;

但試用後發現價位回穿MA就觸發出場訊號,而非價位回穿第一次突破MA時的價位才觸發出場訊號,因為上述語法value1=averagefc(close,5),MA會隨價格移動,如果想要標示第一次突破MA時的價位應該怎樣寫?
發表於 16-11-14 13:59 | 顯示全部樓層
本帖最後由 blj0511 於 16-11-14 14:13 編輯

所以當初我說你有些地方沒交待清楚,因為感覺怪怪的,果然您使用會有問題~

如果你要的效果是 "多單進場後,第一個往上穿越的ma做為之後往下掉的出場依據"的話


if marketposition<=0 then value1=0;

if maketposition>0 and barssinceentry>0 and value1=0 then begin
        if close cross over averagefc(close,5) then value1=averagefc(close,5);
end;


if value1>0 then sell next bar at value1 stop;


沒try過,不知道這樣對不對,大概這樣就只會把進場後第一個穿越記下來,因為之後value1不等於0,所以即使後面再發生穿越也不會變更value1的出場值,直到出場或翻單後的再多單進場,可能有些小地方(從哪根K棒開始算穿越?....等等)要在修改一下才會有你要的效果

回復 支持 1 反對 0

使用道具 舉報

 樓主| 發表於 16-11-14 01:41 | 顯示全部樓層
看過英文討論區,好像說Multichatrs無法處理這個問題吧?

https://futures.io/multicharts/3 ... mit.html#post424512
 樓主| 發表於 16-11-14 01:46 | 顯示全部樓層
講清楚一點,恐怕大家不明白,我的意思是如果價格穿越平均線時的價格是2500點,就用價格回破2500點做出場訊號,請問Multichatrs能否辦到我我要求?
發表於 16-11-14 12:38 | 顯示全部樓層
可以做到
所謂多單守均線,當然先要站上線後才守。反之亦同。
不可使用 cross over under,需自設函數 做一次性成立送出信號一次,後續歸零
然後主程式裡面去讀取含數值去控制回圈
 樓主| 發表於 16-11-14 13:38 | 顯示全部樓層
謝謝回應,請問有沒有網上資訊可供參考?
 樓主| 發表於 16-11-14 19:16 來自手機 | 顯示全部樓層
謝謝blj0511兄,明天試試看是否可行?
 樓主| 發表於 16-11-15 12:56 | 顯示全部樓層
今天試過blj0511兄的程式碼,仍然不能記下價格突破MA時的價位,價格回破MA時就觸發出場訊號,等於直接用MA做出場訊號,這話題從沒看過有人在這裏提出的,看來上邊英文討論區的結論是對的,Multicharts不提供這種常用的出場方式函數要顧客自己寫,樣樣都要自己動手做為什麼要那麼貴買你的軟件?對Multicharts十分失望,一點用處都沒有!
發表於 16-11-15 13:05 | 顯示全部樓層
"價格突破MA時的價位"

你是要突破時的ma價位還是突破時的close價位?
發表於 16-11-15 13:19 | 顯示全部樓層
本帖最後由 blj0511 於 16-11-15 13:25 編輯

if marketposition<=0 then value1=0;

if maketposition>0 and barssinceentry>0 and value1=0 then begin
        if close >averagefc(close,5)  then value1=averagefc(close,5);
end;


if value1>0 then sell next bar at value1 stop;

改這樣試試,我寫的還是以均價為出場點,應該不可能以穿越時的價位close當出場點,因為這樣下一根可能馬上就出場了


 樓主| 發表於 16-11-15 13:36 | 顯示全部樓層
本帖最後由 JimmyHK 於 16-11-15 13:37 編輯
blj0511 發表於 16-11-15 13:05
"價格突破MA時的價位"

你是要突破時的ma價位還是突破時的close價位?

我用High/Low價位突破的,要突破時的ma價位.
 樓主| 發表於 16-11-15 13:45 | 顯示全部樓層
blj0511 發表於 16-11-15 13:19
if marketposition0 and barssinceentry>0 and value1=0 then begin
        if close >averagefc(close,5) ...

謝謝blj0511兄熱心幫忙,會再試試看!

 樓主| 發表於 16-11-15 14:28 | 顯示全部樓層
試過了,結果都是一樣,就是不能記下價格突破MA時的價位.
發表於 16-11-15 15:10 | 顯示全部樓層
if d>d[1] then buy next bar at market;

if marketposition<=0 then value1=0;

if marketposition>0 and barssinceentry>0 and value1=0 then begin
        if close > averagefc(close,5) then value1=averagefc(close,5);
end;


if value1>0 then sell next bar at value1 stop;


setexitonclose;

跑5分K,我測試是可以的,並不會因為其他穿越改變進場後的第一個穿越ma5值,不過我這裡寫的事只要close>5ma就算穿越,若是close cross over 5ma才叫穿越的話,如果close一直都沒掉下來,會一直到高檔才發生close cross over 5ma
發表於 23-3-15 08:47 | 顯示全部樓層
blj0511 發表於 16-11-14 13:59
所以當初我說你有些地方沒交待清楚,因為感覺怪怪的,果然您使用會有問題~

如果你要的效果是 "多單進場後,第 ...

感謝分享
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-11-24 23:28

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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