 |
trtc516
中級會員
註冊日期: Oct 2005
來 自: 台北市
文章數量: 82 |
請教各位前輩.........
請教各位前輩,如何讓 "停利1"."停利2"條件成立後,一直保持狀態直到另一"EMA1和EMA2"交叉出現:
EMA1:=EMA(C,5);
EMA2:=EMA(C,60);
停利1:=if(EMA1>EMA2,C-REF(C,(BARSSINCE(EMA1>EMA2))),0) ;
停利2:= if(EMA1<EMA2,REF(C,(BARSSINCE(EMA1<EMA2)))-C,0) ;
ck:=if(EMA1>EMA2,1,0);
ck:=if(EMA1>EMA2 and (停利1>20),0,ck);
ck:=if(EMA1<EMA2,-1,CK);
ck:=if(EMA1<EMA2 and (停利2>20),0,ck);
StickLine (ck=1,-1,1,7,0),Colorred;
StickLine (ck=-1,-1,1,7,0),Colorgreen;
StickLine (ck=0,-1,1,7,0),Coloryellow;
-----------------------------------------------------------------------------------------------
若使用
A1:=ref(停利1,BARSSINCE(停利1>20)) 來保持狀態,
則下次EMA1和EMA2剛交叉上來,停利1尚未>20,就一直維持1了
trtc516 附帶上了此圖片:
|
最後由 trtc516 在 2009-12-03 02:08 編輯 |
向版主報告此篇 |  |
|
2009-12-03 02:00 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18091 |
回覆: 請教各位前輩.........
引用: 最初由 trtc516 發表
請教各位前輩,如何讓 "停利1"."停利2"條件成立後,一直保持狀態直到另一"EMA1和EMA2"交叉出現:
EMA1:=EMA(C,5);
EMA2:=EMA(C,60);
停利1:=if(EMA1>EMA2,C-REF(C,(BARSSINCE(EMA1>EMA2))),0) ;
停利2:= if(EMA1<EMA2,REF(C,(BARSSINCE(EMA1<EMA2)))-C,0) ;
ck:=if(EMA1>EMA2,1,0);
ck:=if(EMA1>EMA2 and (停利1>20),0,ck);
ck:=if(EMA1<EMA2,-1,CK);
ck:=if(EMA1<EMA2 and (停利2>20),0,ck);
StickLine (ck=1,-1,1,7,0),Colorred;
StickLine (ck=-1,-1,1,7,0),Colorgreen;
StickLine (ck=0,-1,1,7,0),Coloryellow;
-----------------------------------------------------------------------------------------------
若使用
A1:=ref(停利1,BARSSINCE(停利1>20)) 來保持狀態,
則下次EMA1和EMA2剛交叉上來,停利1尚未>20,就一直維持1了
這段程式寫的可能有些問題唷
BARSSINCE 是取歷史第一次
可否表達出您想計算的內容, 這樣較易協助您
|
|
向版主報告此篇 |  |
|
2009-12-03 12:46 |
|
|
|  |
 |
trtc516
中級會員
註冊日期: Oct 2005
來 自: 台北市
文章數量: 82 |
感謝版主大大.................
感謝大大........
因為我是用30秒圖做當沖,所以開盤就是歷史資料第1根,所以用BARSSINCE
(還是要用barslast???)
我的思維是:
假設開盤後,EMA1>EMA2,則作買入動作 (ck:=if(EMA1>EMA2,1,0);(
當獲利超過20點,我就停利平倉
(ck:=if(EMA1>EMA2 and (停利1>20),0,ck);)
直到EMA1<EMA2,則作賣空動作(ck:=if(EMA1<EMA2,-1,CK);)
獲利20點就平倉(ck:=if(EMA1<EMA2 and (停利2>20),0,ck);)
小弟碰到的問題是,當獲利20點平倉後,價格又下來使得停利1低於20點時,買訊(空訊)又會出現, (ck:=if(EMA1>EMA2 and (停利1>20),0,ck);)()停利1<20則CK=CK=if(EMA1>EMA2,1,0)=1又再買入..........
有什麼方法,可讓"停利1>20成立後CK=0"一直維持到EMA1<EMA2 ,不管期間停利1>20, 停利1<20 上上下下............
因為小弟要用自動下單機下單,所以,輸出CK=1表買多1口,輸出CK=0
,表平倉,輸出CK=-1,表空單1口
|
最後由 trtc516 在 2009-12-04 00:22 編輯 |
向版主報告此篇 |  |
|
2009-12-04 00:19 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18091 |
回覆: 感謝版主大大.................
引用: 最初由 trtc516 發表
感謝大大........
因為我是用30秒圖做當沖,所以開盤就是歷史資料第1根,所以用BARSSINCE
(還是要用barslast???)
我的思維是:
假設開盤後,EMA1>EMA2,則作買入動作 (ck:=if(EMA1>EMA2,1,0);(
當獲利超過20點,我就停利平倉
(ck:=if(EMA1>EMA2 and (停利1>20),0,ck);)
直到EMA1<EMA2,則作賣空動作(ck:=if(EMA1<EMA2,-1,CK);)
獲利20點就平倉(ck:=if(EMA1<EMA2 and (停利2>20),0,ck);)
小弟碰到的問題是,當獲利20點平倉後,價格又下來使得停利1低於20點時,買訊(空訊)又會出現, (ck:=if(EMA1>EMA2 and (停利1>20),0,ck);)()停利1<20則CK=CK=if(EMA1>EMA2,1,0)=1又再買入..........
有什麼方法,可讓"停利1>20成立後CK=0"一直維持到EMA1<EMA2 ,不管期間停利1>20, 停利1<20 上上下下............
因為小弟要用自動下單機下單,所以,輸出CK=1表買多1口,輸出CK=0
,表平倉,輸出CK=-1,表空單1口
原碼:
EMA1:=EMA(C,5);
EMA2:=EMA(C,60);
多:=cross(EMA1,EMA2);
空:=cross(EMA2,EMA1);
多SP:=BARSLAST(多);
空SP:=BARSLAST(空);
多利:=c-ref(c,多SP+1) linethick;
空利:ref(c,空SP+1)-c linethick;
多停利:=EMA1>EMA2 and 多利>20;
多停利:=多停利 and sum(多停利,多SP)=1;
空停利:=EMA1<EMA2 and 空利>20;
空停利:=空停利 and sum(空停利,空SP)=1;
CK:多-空+多停利*2-空停利*2;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK>1 or CK<-1,0,CK);
|
|
向版主報告此篇 |  |
|
2009-12-04 12:17 |
|
|
|  |
 |
trtc516
中級會員
註冊日期: Oct 2005
來 自: 台北市
文章數量: 82 |
非常.非常.非常感謝版主大大!!
非常.非常.非常感謝版主大大!!
終於解決停利的問題了,
不好意思!!再請教如何解決開盤初期無訊號的問題
EMA1:=EMA(C,5);
EMA2:=EMA(C,60);
多:=cross(EMA1,EMA2);
空:=cross(EMA2,EMA1);
多SP:=BARSLAST(多);
空SP:=BARSLAST(空);
多利:=c-ref(c,多SP+1) linethick;
空利:ref(c,空SP+1)-c linethick;
多停利:=EMA1>EMA2 and 多利>20;
多停利:=多停利 and sum(多停利,多SP)=1;
空停利:=EMA1<EMA2 and 空利>20;
空停利:=空停利 and sum(空停利,空SP)=1;
CK:多-空+多停利*2-空停利*2;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK>1 or CK<-1,0,CK);
StickLine (ck=1,-1,1,7,0),Colorred;
StickLine (ck=-1,-1,1,7,0),Colorgreen;
StickLine (ck=0,-1,1,7,0),Coloryellow;
trtc516 附帶上了此圖片:
|
最後由 trtc516 在 2009-12-05 11:33 編輯 |
向版主報告此篇 |  |
|
2009-12-05 11:25 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18091 |
回覆: 非常.非常.非常感謝版主大大!!
引用: 最初由 trtc516 發表
非常.非常.非常感謝版主大大!!
終於解決停利的問題了,
不好意思!!再請教如何解決開盤初期無訊號的問題
EMA1:=EMA(C,5);
EMA2:=EMA(C,60);
多:=cross(EMA1,EMA2);
空:=cross(EMA2,EMA1);
多SP:=BARSLAST(多);
空SP:=BARSLAST(空);
多利:=c-ref(c,多SP+1) linethick;
空利:ref(c,空SP+1)-c linethick;
多停利:=EMA1>EMA2 and 多利>20;
多停利:=多停利 and sum(多停利,多SP)=1;
空停利:=EMA1<EMA2 and 空利>20;
空停利:=空停利 and sum(空停利,空SP)=1;
CK:多-空+多停利*2-空停利*2;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK>1 or CK<-1,0,CK);
StickLine (ck=1,-1,1,7,0),Colorred;
StickLine (ck=-1,-1,1,7,0),Colorgreen;
StickLine (ck=0,-1,1,7,0),Coloryellow;
原碼:
EMA1:=EMA(C,5);
EMA2:=EMA(C,60);
多:=cross(EMA1,EMA2);
空:=cross(EMA2,EMA1);
多SP:=BARSLAST(多);
空SP:=BARSLAST(空);
多利:=c-ref(c,多SP+1) linethick;
空利:=ref(c,空SP+1)-c linethick;
多停利:=EMA1>EMA2 and 多利>20;
多停利:=多停利 and sum(多停利,多SP)=1 or barpos=0;
空停利:=EMA1<EMA2 and 空利>20;
空停利:=空停利 and sum(空停利,空SP)=1 or barpos=0;
CK:多-空+多停利*2-空停利*2;
CKSP:=barslast(CK<>0);
CKSP:=if(barpos<lbound(CKSP),0,CKSP);
CK:=ref(CK,CKSP);
CK:=if(CK>1 or CK<-1,0,CK);
StickLine (ck=1,-1,1,7,0),Colorred;
StickLine (ck=-1,-1,1,7,0),Colorgreen;
StickLine (ck=0,-1,1,7,0),Coloryellow;
|
|
向版主報告此篇 |  |
|
2009-12-05 13:45 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|