Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Не выходит каменный цветок Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Marcello



Зарегистрирован: 30.05.2015
Сообщения: 69

СообщениеДобавлено: Пн Авг 01, 2016 6:57 pm Ответить с цитатой Вернуться к началу

Приветствую!

Есть простая системка на дневках.
EMA50 по хаям, EMA15 по клоузу. MACD( 35, 70), "сигнал" от MACD 12, ATR200, умноженный на параметр (далее по тексту просто ATR).

Свеча-триггер входа в лонг: EMA15 выше EMA50, лоу свечи ниже EMA15, клоуз свечи выше EMA15, MACD выше "сигнала". Вход на пробое хая триггера + отступ частью ATR. Важно, чтоб хай триггера был не выше ATR от EMA15. Стоп 2 * ATR. Первая цель ATR, вторая цель 2 * ATR. Когда дошло до первой цели, перевод в б/у. Фикс либо по стопу, либо по второй цели. Шорт не рассматриваем, но по сути также, только наоборот.

Закодить по-правильному (без циклов) не получается, да и циклы мне ближе. На картинке все красиво и понятно, а тестер выдает всего 1-2 сделки, хотя "стрелок" явно больше.

Вот цикл.
Код:
Mult = Param( "Mult", 5, 1, 50, 1 ) / 10;
Plot(C, "Price", colorDefault, styleBar);

EH = EMA( H, 50 );
EL = EMA( L, 50 );
E15 = WMA( C, 15 );
M = MACD( 35, 70 );
S = Signal( 35, 70, 12 );

A = EMA( ATR(1), 200 ) * Mult;

Plot( EH, "EH", colorDefault );
Plot( EL, "EL", colorDefault );
Plot( E15, "E15", colorYellow );

pos = 0;
Buy = Sell = 0;
ePrice = sPrice = pPrice1 = pPrice2 = null;
// ePrice - уровень входа
// sPrice - стоплосс
// pPrice1, pPrice2 - цели

vBE = 0; // признак того, что переведено в б/у
eBar = 0; // бар входа

for ( i = 200; i < BarCount; i++ ) {
   
   pPrice1[i] = pPrice1[i-1];
   pPrice2[i] = pPrice2[i-1];
   sPrice[i] = sPrice[i-1];
   ePrice[i] = ePrice[i-1];
   
   if ( pos == 0 )
   if ( ePrice[i] > 0 )
   if ( H[i] >= ePrice[i] ) {
      Buy[i] = 1;
      BuyPrice[i] = Max( O[i], ePrice[i] );
      
      ePrice[i] = BuyPrice[i];
      sPrice[i] = ePrice[i] - A[i-1] * 2;
      pPrice1[i] = ePrice[i] + A[i-1];
      pPrice2[i] = ePrice[i] + A[i-1] * 2;
      
      sPrice[i-1] = sPrice[i]; // чтоб увидеть уровни короче 1 бара
      pPrice1[i-1] = pPrice1[i];
      pPrice2[i-1] = pPrice2[i];

      pos = 1;
      vBE = 0;
      eBar = i;
   }
   
   if ( pos == 1 )
   if ( i != eBar )
   if ( L[i] < sPrice[i] ) {
      Sell[i] = 1;
      SellPrice[i] = Min( O[i], sPrice[i] );
      pPrice1[i] = Null;
      pPrice2[i] = Null;
      sPrice[i] = Null;
      ePrice[i] = null;
      pos = 0;
   }
   
   if ( pos == 1 )
   if ( vBE == 0 )
   if ( H[i] > pPrice1[i] ) {
      sPrice[i] = ePrice[i] * 1.002; // перевод в б/у с учетом комиссии
      vBE = 1;
   }

   if ( pos == 1 )
   if ( H[i] > pPrice2[i] ) {
      Sell[i] = 1;
      SellPrice[i] = Max( O[i], pPrice2[i] );
      pPrice1[i] = Null;
      pPrice2[i] = Null;
      sPrice[i] = Null;
      ePrice[i] = null;
      pos = 0;
   }
   
   if ( pos == 1 )
   if ( vBE == 1 )
   if ( C[i] < sPrice[i] ) {
      Sell[i] = 1;
      SellPrice[i] = C[i];
      pPrice1[i] = Null;
      pPrice2[i] = Null;
      sPrice[i] = Null;
      ePrice[i] = null;
      pos = 0;
   }

   if ( pos == 0 )
   if ( E15[i] > EH[i] )
   if ( L[i] < E15[i] )
   if ( C[i] > E15[i] )
   if ( H[i] < E15[i] + A[i] )
   if ( M[i] > S[i] ) ePrice[i] = H[i] + A[i] / 5;
   
   if ( pos == 0 )
   if ( ePrice[i] > 0 )
   if ( C[i] < E15[i] ) ePrice[i] = null;
   
}
Plot( pPrice1, "P1", colorYellow );
Plot( pPrice2, "P2", colorBrightGreen );
Plot( sPrice, "S", colorRed );
Plot( ePrice, "E", colorTurquoise );

PlotShapes( Buy * shapeUpArrow, colorBrightGreen, 0, BuyPrice, 0 );
PlotShapes( Sell * shapeDownArrow, colorRed, 0, SellPrice, 0 );


Что не так в этом цикле? AmiBroker 5.90 (32-bit), Win10 (вдруг важно).
Посмотреть профиль Отправить личное сообщение
Marcello



Зарегистрирован: 30.05.2015
Сообщения: 69

СообщениеДобавлено: Пн Авг 01, 2016 7:12 pm Ответить с цитатой Вернуться к началу

Странно. Переключил на Detailed Log. Одна сделка. Потом переключил на Trade List - все сделки появились. И в Summary тоже теперь все видно.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen