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


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

СообщениеДобавлено: Пт Июл 17, 2015 2:28 am Ответить с цитатой Вернуться к началу

Бля, чуть всю голову не сломал.
Короче, надо вот так.
Код:

Buy1 = DayOfWeek() == 2 AND Ref(DayOfWeek(), -1) == 1;
BuyPrice = C;
s1 = 1; // (начальный стоп для лонга)
Sell = 0;

Short1 = DayOfWeek() == 5 AND Ref(DayOfWeek(), -1) == 4;
ShortPrice = C;
s2 = 1; //(начальный стоп для шорта)
Cover = 0;

pos = 0;

for( i = 1; i < BarCount; i++)
{
   if( pos == 0)
   {
      if(Buy1[i])                                  // покупаем
      {
         Buy[i] = 1;
         pos = 1;
         Pricebuy = BuyPrice[i];
         stop = s1[i];
      }
      else if( Short1[i])                               // продаем                                           
      {
         Short[i] = 1;
         pos = -1;
         Priceshort = ShortPrice[i];
         stop = s2[i];
      }
   }
   else if( pos == 1)                                           
   {
      if( L[i] <= (Pricebuy - stop))      // закрываем, если дошло до стопа                         
      {
         Sell[i] = 2;
         SellPrice[i] = Pricebuy - stop;
         pos = 0;
      }
      else if( H[i] >= (Pricebuy*1.005))      // переносим стоп в безубыток, если цена прошла в мою сторону на 0,5%                           
      {
         stop = 0;
         if( L[i] <= Pricebuy)      // закрываем, если дошло до стопа                         
         {
            Sell[i] = 2;
            SellPrice[i] = Pricebuy;
            pos = 0;
         }
         else if( H[i] >= Pricebuy*1.01)         // тейк-профит 1%                             
         {
            Sell[i] = 3;
            SellPrice[i] = Pricebuy*1.01;
            pos = 0;
         }
      }
   }
   else if( pos == -1)                          // все то же самое, но для шорта
   {
      if( H[i] >= (Priceshort + stop))
      {
         Cover[i] = 2;
         CoverPrice[i] = Priceshort + stop;
         pos = 0;
      }
      else if( L[i] <= (Priceshort*0.995))
      {
         stop = 0;
         if( H[i] >= Priceshort)
         {
            Cover[i] = 2;
            CoverPrice[i] = Priceshort;
            pos = 0;
         }
         else if( L[i] <= Priceshort*0.99)
         {
            Cover[i] = 3;
            CoverPrice[i] = Priceshort*0.99;
            pos = 0;
         }
      }
   }
}

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
SPR



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

СообщениеДобавлено: Пт Июл 17, 2015 12:28 pm Ответить с цитатой Вернуться к началу

Работает!!
Гениально!
Готов выслать вискарь по полученным реквизитам Very Happy
Посмотреть профиль Отправить личное сообщение
Marcello



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

СообщениеДобавлено: Сб Июл 18, 2015 12:27 pm Ответить с цитатой Вернуться к началу

Код:
   else if( pos == 1)                                           
   {
      if( L[i] <= (Pricebuy - stop))      // закрываем, если дошло до стопа                         
      {
         Sell[i] = 2;
         SellPrice[i] = Pricebuy - stop;
         pos = 0;
      }

Тут не учтен гэп в сторону стопа, поэтому на мой взгляд правильнее будет так:
Код:
   else if( pos == 1)                                           
   {
      if( L[i] <= (Pricebuy - stop))      // закрываем, если дошло до стопа                         
      {
         Sell[i] = 2;
         SellPrice[i] = Pricebuy - stop;
         if ( SellPrice[i] > O[i] ) SellPrice[i] = O[i];      // если открытие ниже стопа, то закрываем с открытия
         pos = 0;
      }
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Июл 18, 2015 12:59 pm Ответить с цитатой Вернуться к началу

Совершенно верно.
А еще лучше так
Код:

if( L[i] <= (Pricebuy - stop))      // закрываем, если дошло до стопа                         
      {
         Sell[i] = 2;
         SellPrice[i] = min((Pricebuy - stop), O[i]);
         pos = 0;
      }

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen