COCO研究院

 找回密碼
 註冊
搜索
查看: 4143|回復: 13

Multicharts Singal 語法

[複製鏈接]
發表於 15-10-19 15:09 | 顯示全部樓層 |閱讀模式
Multicharts Singal 中的PercentR LE:

inputs: Length( 14 ), OverSold( 20 ), OverBought( 80 ), Trigger( 62 ) ;

variables: var0( 0 ), var1( 0 ), var2( false ) ;

var0 = PercentR( Length ) ;
var1 = Average( Close, Length ) ;

if var0 < OverSold then
       var2 = true
else if var0 > OverBought then
       var2 = false ;

condition1 = var2 and var1 > var1[1] and var0 crosses over Trigger ;
if condition1 then                                 
begin
       Buy ( "PctRLE" ) next bar at market ;
       var2 = false ;
end ;

請問其中var2( false )的作用是否var2false條件之下不執行,var2true條件之下執行?

是否指
PercentR < OverSold條件之下執行?PercentR > OverBought條件之下不執行?

發表於 15-10-19 15:32 | 顯示全部樓層
var2( false ) 只是定義 var2 一開始是 false, 屬於布林值

評分

參與人數 1金錢 +1 收起 理由
JimmyHK + 1 感謝分享

查看全部評分

 樓主| 發表於 15-10-19 15:59 | 顯示全部樓層
本帖最後由 JimmyHK 於 15-10-19 16:00 編輯
pcking2008 發表於 15-10-19 15:32
var2( false ) 只是定義 var2 一開始是 false, 屬於布林值

即是和我所說的剛剛相反?

為什麼不直接寫成這樣?

condition1 = var1 > var1[1] and var0 crosses over Trigger ;
condition2 = var0 > OverSold ;
condition3 = var0 < OverBought ;

if condition1 and condition2 and condition3 then                                 

       Buy ( "PctRLE" ) next bar at market ;


發表於 15-10-19 16:25 | 顯示全部樓層
有進過oversold就記住 var=true 直到 overbougt

評分

參與人數 1金錢 +1 收起 理由
JimmyHK + 1

查看全部評分

發表於 15-10-19 16:32 | 顯示全部樓層
JimmyHK 發表於 15-10-19 15:59
即是和我所說的剛剛相反?

為什麼不直接寫成這樣?

variables: var2,()裡的東西,不過就是 var2 這個變數的起始預設值,因為填入了 false,所以把 var2 的分類歸為 布林。

跟後續的 code 怎麼去利用 var2 沒有什麼關係,就這樣。

評分

參與人數 1金錢 +1 收起 理由
JimmyHK + 1 感謝分享

查看全部評分

發表於 15-10-19 16:38 | 顯示全部樓層
JimmyHK 發表於 15-10-19 15:59
即是和我所說的剛剛相反?

為什麼不直接寫成這樣?

就如同曾老師說的
你注意看看 var2 出現的地方是直接引用, 也就是看這個變數是 true 或 false 而已
跟程式其他地方沒有關係
能不能怎麼精簡也沒有關係, 程式本來就是隨人寫



評分

參與人數 1金錢 +1 收起 理由
JimmyHK + 1 感謝分享

查看全部評分

發表於 15-10-19 16:42 | 顯示全部樓層
002.png


如圖,  語法上,
        if var2=true 可以簡略為(或懶惰為)
        if var2
這兩句是完全相同的

評分

參與人數 1金錢 +1 收起 理由
JimmyHK + 1 感謝分享

查看全部評分

發表於 15-10-20 03:56 | 顯示全部樓層
本帖最後由 TrendRover 於 15-10-20 04:00 編輯
JimmyHK 發表於 15-10-19 15:59
即是和我所說的剛剛相反?

為什麼不直接寫成這樣?

"是否指PercentR < OverSold條件之下執行?PercentR > OverBought條件之下不執行?"
你誤會了 if 那裏的一四:
    是  < oversold ----var2=true ,
   如果沒爬升到 overbought level前不會把 var2 清為 false ~~
===============================
那如果沒有 touch 到 Oversold以下也別想有var2=true condition ====也就是只等超賣發生後等待均線轉正和ratio 爬上62%(0.618 fibo ratio ) 才開買!!


評分

參與人數 1金錢 +1 收起 理由
JimmyHK + 1 感謝分享

查看全部評分

 樓主| 發表於 15-10-20 11:54 | 顯示全部樓層
謝謝大家!沒想到是這麼複雜的,不過正想寫這種條件的策略,竟然給我誤打誤撞碰上了!  

但不明白為什麼條件成立並且執行之後還要有這句:

Buy ( "PctRLE" ) next bar at market ;

       var2 = false ;

是否表示訊號觸發一次之後,沒有再進過oversold之前自動成為var2 = false?

發表於 15-10-20 12:12 | 顯示全部樓層
JimmyHK 發表於 15-10-20 11:54
謝謝大家!沒想到是這麼複雜的,不過正想寫這種條件的策略,竟然給我誤打誤撞碰上了!  

但不明白為 ...


下單後,一些條件得 "還原",
否則, 一直條件都成立,將不斷下單...

評分

參與人數 1金錢 +1 收起 理由
JimmyHK + 1 感謝分享

查看全部評分

 樓主| 發表於 15-10-24 12:53 | 顯示全部樓層
本帖最後由 JimmyHK 於 15-10-24 13:00 編輯

先謝謝大家幫忙!現打算用上述布林值語法寫個比較複雜的策略,舉個例,如果收市價跌破10MA那麼不執行原先的Trigger,到收市價升破10MA才執行,應該寫成:

inputs: Price(Close), Length( 10 ),......................;

variables: var0( 0 ),var1( false ) ,.........................;

var0 = AverageFC( Price,Length ) ;
................................................;

if Close < var0 then
       var1 = false  
else if Close > var0 then
       var1 = true;

condition1 = var1 and................................... ;
if condition1 then                                 

       Sellshort ( "MASE" ) next bar at market ;

不過再加上如果收市價跌破20MA那麼那麼不執行原先的Trigger,到收市價升破20MA才執行,是否應該寫成:

inputs: Price(Close), Length1( 10 ),Length2( 20 ),......................;

variables: var0( 0 ) ,var1( 0 ) ,var2( false ) ,.........................;

var0 = AverageFC( Price,Length1 ) ;
var1= AverageFC( Price,Length2 ) ;
................................................;

if Close < var0 then
       var2 = false  
else if Close > var0 then
       var2= true ;

End else if Close > var1 then
       var2= false
else if Close > var1 then
       var2= true ;

condition1 = var2 and................................... ;
if condition1 then                                 

       Sellshort ( "MASE" ) next bar at market ;

還是應該是這樣:

inputs: Price(Close), Length1( 10 ),Length2( 20 ),......................;

variables: var0( 0 ) ,var1( 0 ) ,var2( false ) ,var3( false ) ,.........................;

var0 = AverageFC( Price,Length1 ) ;
var1= AverageFC( Price,Length2 ) ;
................................................;

if Close < var0 then
       var2 = false  
else if Close > var0 then
       var2= true ;

End else if Close > var1 then
       var3= false
else if Close > var1 then
       var3= true ;

condition1 = var2 and var3................................... ;
if condition1 then                                 

       Sellshort ( "MASE" ) next bar at market ;






 樓主| 發表於 15-10-25 12:45 | 顯示全部樓層
全都試過了,兩種都不能做到想要的效果!

如果想要第一條件:

if Close < var0 then

       var2 = false  

else if Close > var0 then

       var2= true ;

受第二條件限制:

if Close < var1 then
       var3= false

else if Close > var1 then

       var3= true ;

即只要第二條件Close < var1 ,就算第一條件Close > var0達到但仍然是var2 = false
發表於 15-10-26 03:48 | 顯示全部樓層
JimmyHK 發表於 15-10-25 12:45
全都試過了,兩種都不能做到想要的效果!

如果想要第一條件:

建議你先學學logic design 的state machine 圖 ,你好像還沒搞懂隱藏性狀態變化
 樓主| 發表於 15-10-26 10:49 | 顯示全部樓層
TrendRover 發表於 15-10-26 03:48
建議你先學學logic design 的state machine 圖 ,你好像還沒搞懂隱藏性狀態變化

問題已解決,謝謝關注!
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-11-29 10:57

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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