andrewhlleung 發表於 16-3-17 11:16

BUY之後十日 SELL

請問點寫?

priceatbuy=0;

for( i = 0; i < BarCount; i++ )
{
   if( priceatbuy == 0 && Buy[ i ] )
   priceatbuy = BuyPrice[ i ];

   if( priceatbuy > 0 && BUY之後十日 )
   {
       Sell[ i ] = 1;
       SellPrice[ i ] = 1.1 * priceatbuy;
       priceatbuy = 0;
   }else {
       Sell[ i ] = 0;
      }
}

lwhuang 發表於 16-3-17 15:43

要在day 的 timeframe中
Ref(Buy, -10);

iamblwb 發表於 16-3-17 17:28

不知道你這裡10日Sell是指10天後(不管是不是交易日都算), 還是指10個交易日後?
我想你應該是想在10天後的同一個時點的K棒才做Sell
兩種我合併在一起提供你範例
你自己再選擇囉

nDayPass = 10;
nDateAtSell = 0;
nDayCountAtBuy = 0;
nTodayBarIndexAtBuy = -1;

vDateNumCompare = (DateNum() != Ref(DateNum(), -1));
vDateNumCompare = True;
vTodayBarIndex = BarsSince(vDateNumCompare);

vDateTime = DateTime();
vTargetDateTime = DateTimeAdd(vDateTime, nDayPass, inDaily);

for(i = 0;i < BarCount;i++)
{
        if(Buy == True)
        {
                nDateAtSell = vTargetDateTime;
                nDayCountAtBuy = 0;
                nTodayBarIndexAtBuy = vTodayBarIndex;
        }
       
        //這一個Sell是發生在買之後的第10天同一個時點的K棒, 但要注意如果不是交易日則不會發生Sell
        if(vDateTime == nDateAtSell)
        {
                Sell = True;
                nDateAtSell = 0;
        }
       
        //這一個Sell是發生在買之後的第10個交易日同一個時點的K棒, 但要注意如果在下午1:30後買的, 第10個交易日若為期指結算日那也不會發生Sell, 結算只到1:30
        if(nDayCountAtBuy == nDayPass AND vTodayBarIndex == nTodayBarIndexAtBuy)
        {
                Sell = True;
                nDayCountAtBuy = 0;
                nTodayBarIndexAtBuy = -1;
        }
       
        if(vDateNumCompare == True)
        {
                nDayCountAtBuy++;
        }
}

andrewhlleung 發表於 16-3-17 21:48

謝幫忙
THX
另外用這BACKTEST CODE時LOOP緊可以攞到 CLOSE<MA(20) 嗎
我想加條CONDITION, 如CLOSE<MA(20) 都SELL走.

iamblwb 發表於 16-3-17 23:23

看不懂你的問題...什麼叫"LOOP緊可以攞到"?
如果你要在loop檢查是否Close < MA(Close, 20)
那可以在loop外先得到vConditon1
vCondition1 = Close < MA(Close, 20);
然後在loop內使用判斷式來檢查是否要Sell
if(vCondition1)

andrewhlleung 發表於 16-3-18 12:27

明白了. 在上面製造一個ARRAY, 再LOOP 時使用作CONDITION.
頁: [1]
查看完整版本: BUY之後十日 SELL