Юрий Иванович (jc_trader) wrote,
Юрий Иванович
jc_trader

Category:
  • Mood:

Амиброкер. Учимся программировать циклы. :)

Итак, возьмем простейшую систему и попробуем запрограммировать ее. Если это проделывать без циклов, то все элементарно, для первоклассников. Но возникают проблемы со стопами. Если тестируем портфель акций, то как выяснили ранее, если срабатывает стоп по какой-то из позиций в портфеле, то новая позиция по другим акциям открывается на открытии этой же сессии, если был сигнал на вход перед этой сессией. То есть, налицо подглядывание в будущее. Подробнее было тут
http://jc-trader.livejournal.com/433905.html
Чтобы этого избежать, посоветовали писать циклы. Чем и займемся.

Система гипотетическая с произвольными условиями, на дневных таймфреймах -- например:

Вход
1) акция ликвидная, долларовый объем более 10 000 000 долларов
2) цена закрытия больше чем МА(200)
3) цена закрытия меньше чем МА(20)
Если все три условия верны, выставляем лимитный ордер на открытие длинной позиции на следующую сессию по цене LOW последнего дня.

Выход (один по стопу и один по условию)
1) защитный стоп выставляется на следующем баре после бара открытия позиции на расстоянии 1ATR от цены открытия позиции.
2) если цена закрытия больше MA(20), закрываем позицию на открытии следующей сесии.

Пишем циклический код, тестируем, и...... получаем не то что хотим, а что-то непонятное. Что-то не так:

---------------------------------------------------------------------------------------
SetFormulaName("zzz");
SetPositionSize( 20, spsPercentOfEquity );
SetOption("MaxOpenPositions", 5 ); 
SetOption("InitialEquity", 100000 );
SetTradeDelays(0,0,0,0);
SetOption( "UsePrevBarEquityForPosSizing", 1 );
RoundLotSize = 1;
ATRr = 1 * Ref(ATR(20), -1);
CLevel = MA(Close, 20);
SetupBuy = MA(  Volume , 20 ) * MA( Close, 20) > 10000000     
                   AND Close > MA(Close, 200)
                   AND Close < CLevel;  
HV40 = round(StDev(log(C/Ref(C,-1)),40)*100*sqrt(252));
PositionScore = HV40;
position = 0;
Sell = BarIndex() == BarCount-1;
/////////////////////////////////////////////////////////
for(i = 201; i < BarCount - 1; i++) 
   if(position!=1) 
      { 
         if(SetupBuy[i-1]  AND Low[i] < Low[i-1])
            { 
               Buy[i] = SetupBuy[i-1];
               BuyPrice[i] = Min(Low[i-1], Open[i]); 
               position = 1; 
               pricebuy = BuyPrice[i]; 
             } 
      } 
   else 
      { 
         Buy[i] = 0; 
         if(Low[i] <= pricebuy - ATRr[i]) 
            {    
               Sell[i] = 1; 
               SellPrice[i] = Min(pricebuy - ATRr[i], Open[i]);   
               position=0; 
            } 
         else 
            {    
               if(Close[i-1] > CLevel[i-1]) 
                  { 
                     Sell[i ]= 1;  
                     position = 0;
                  } 
            } 
      } 
}
Tags: амиброкер
Subscribe

  • Какие песенки популярны нынче в передовых странах мира.

    Решил поинтересоваться какую музыку слушает мир, какая тенденция наиболее популярная в данный момент. Для этого логично зайти на BILLBOARD TOP-100.…

  • Сделки в портфеле JC-100

    Портфель уменьшился процентов на 20-30 после сегодняшней ребалансировки. То есть больше позиций закрыл чем открыл новых. Среди них одни из бывших…

  • Тает снег.

    Так как несколько дней держится плюсовая температура, снеговики худели и уменьшались в росте прямо на глазах, а также постоянно выпадали глаза и рты.…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 59 comments

  • Какие песенки популярны нынче в передовых странах мира.

    Решил поинтересоваться какую музыку слушает мир, какая тенденция наиболее популярная в данный момент. Для этого логично зайти на BILLBOARD TOP-100.…

  • Сделки в портфеле JC-100

    Портфель уменьшился процентов на 20-30 после сегодняшней ребалансировки. То есть больше позиций закрыл чем открыл новых. Среди них одни из бывших…

  • Тает снег.

    Так как несколько дней держится плюсовая температура, снеговики худели и уменьшались в росте прямо на глазах, а также постоянно выпадали глаза и рты.…