平靜的海 發表於 16-1-4 03:26

請教寫法

請問大大
設定三種情況   做空單--買回平倉

已賣一張空單 設定條件買回 條件共三種情況 如下(略)

if condition1=true then buytocover next bar market;//如果狀況一為成立 下一根K棒開盤價買回
if condition1=false and condition2=truethen buytocover next bar market ;//狀況一不成立 狀況二成立 則買回
if condition1=false and condition2=false and condition3=true then buytocover next bar market;
//狀況一及二都不成立 狀況三成立 則買回

請問是這樣的寫法嗎?
如果要更細一點的設定 狀況一狀況二   狀況三有(成立)與(不成立)的情況共八種..2x2x2=8

都要一次寫出來嗎?

或是有更好的寫法?

新手上路 煩請大大幫忙

感恩
                                 

easytrader788 發表於 16-1-4 09:27

1. 如果有條件有先後順序

if condition1 then buytocover ...
   else if condition2 then buytocover ...
       else if condition3 then buytocover ...

每一個 else 代表條件不成立的

2. 若是任何一個條件成立都可以

if Condition1 or Condition2 or ..... ConditionN then BuytoCover ....

3. 如果需符合任兩個以上條件時 , 作法要改變


input : TriggerNo(2) ;
var: CountCond(0) ;

重新定義 condition 如下

if 條件1 then cond1 = 1 else cond1 = 0 ;
if 條件2 then cond2 = 2 else cond2 = 0 ;
if 條件3 then cond3 = 3 else cond3 = 0 ;
...
...
if 條件N then condN = 1 else condN = 0 ;

CountCond = Cond1 + Cond2 + ..... CondN ;

if CountCond = TriggerNo then BuytoCover .....

若 TriggerNo = 1 時 ,等同上述 2 的任一條件成立

easytrader788 發表於 16-1-4 09:29

easytrader788 發表於 16-1-4 09:27 static/image/common/back.gif
1. 如果有條件有先後順序

if condition1 then buytocover ...


if 條件1 then cond1 = 1 else cond1 = 0 ;
if 條件2 then cond2 = 1 else cond2 = 0 ;
if 條件3 then cond3 = 1 else cond3 = 0 ;

打錯 , 每一個 CondN 用 1 代表成立 , 0代表不成立

平靜的海 發表於 16-1-6 19:22

再請問 已經使用了else if 第二行是需要空一格嗎?

if marketposition=0 andvalue1 cross over value2then
sellshort("S")next bar at market;

if marketposition<0 and c < MMthen buytocover ("SW") next bar at market;
else if marketposition<0 and value2 cross over value1 thenbuytocover ("SW") next bar at market;
end else

我無法編譯成功 爬文找不到類似的寫法 煩請大大指正

感恩

pcking2008 發表於 16-1-6 19:39

本帖最後由 pcking2008 於 16-1-6 19:44 編輯

平靜的海 發表於 16-1-6 19:22 static/image/common/back.gif
再請問 已經使用了else if 第二行是需要空一格嗎?

if marketposition=0 andvalue1 cross over value2t ...
if ...then A else if ...then B else C;

A 跟 B 如果只有一行不能加 ; (兩行以上就一定要用 begin end)
不然就要用
begin
   A;
end

的寫法



平靜的海 發表於 16-1-6 20:06

pcking2008 發表於 16-1-6 19:39 static/image/common/back.gif
if ...then A else if ...then B else C;

A 跟 B 如果只有一行不能加 ; (兩行以上就一定要用 begin end)


if marketposition<0 and c < MMthen buytocover ("SW") next bar at market   //第一行
else if marketposition<0 and value2 cross over value1 then buytocover ("SW") next bar at market; //第二行

這樣可以編譯成功 謝謝
頁: [1]
查看完整版本: 請教寫法