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



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

СообщениеДобавлено: Вт Ноя 15, 2011 10:39 pm Ответить с цитатой Вернуться к началу

Привет!
Затеял тут системку. Она подразумевает 2 уровня входов с 3мя типами входа
Дано: берем 2 линии - По хаял и По лоу за ...ну пусть 100 дней
Разберемся пока с лонгами
1/если клоуз больше линии между имеющимися 2ми (50% диапазона) а опен меньше то имеем пробой и входим 2мя контрактами
2/если уже имеем 2 контракта и прбой под номером 1 и пробиваем линию Хая то докупаем еще 1 контракт
3/если у нас 0 контрактов и пробили линию хая (типо цена болталась вверху и мы были без позиции) то входим сразу 3мя контрактами
Выходы пока не трогаем

Я написал правила входа. Но никак не удается вписать объемы покупи/докупки правильно
Буду благодарен за помощь
Код:
ad=TimeNum();
for (i = 1; i < BarCount; i++)
   {

   if (C[i]>HC[i] AND O[i]<HC[i]  AND ad[i]<=230000 AND fl1[i] AND Lent==0)//контрактов нет и пробиваем серединную линию Вариант 1
      {      
         Buy[ i ] = 1;
         BuyPrice[ i ] =C[ i ];
         Lent = 1;
      }      

    if (H[i]>Uv[i] AND O[i]<Uv[i] AND ad[i]<=230000 AND Lent ==1) //контрактов2 и пробиваем верхнюю линию Вариант 2
      {
         Buy[ i ] = 1;
         BuyPrice[ i ] =Uv[ i ];
         Lent = 2;

      }

if (H[i]>Uv[i] AND O[i]<Uv[i] AND ad[i]<=230000 AND Lent ==0) //контрактов нет и пробиваем верхнюю линию Вариант 3
      {

         Buy[ i ] = 1;
         BuyPrice[ i ] =Uv[ i ];
         Lent = 3;

      }
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Ноя 15, 2011 11:07 pm Ответить с цитатой Вернуться к началу

А в чем вопрос то?
Ошибка во втором варианте. Там доливка т.е. Buy[i] = 1; не правильно. Правильно Buy[i] = sigscalein;
Ну и соответственно вводишь массив сколько покупать/докупать. Типа так
Код:

ad=TimeNum();
 for (i = 1; i < BarCount; i++)
    {

    if (C[i]>HC[i] AND O[i]<HC[i]  AND ad[i]<=230000 AND fl1[i] AND Lent==0)//контрактов нет и пробиваем серединную линию Вариант 1
       {       
          Buy[ i ] = 1;
          BuyPrice[ i ] =C[ i ];
          Lent = 1;
          Pos = 2;
       }       

     if (H[i]>Uv[i] AND O[i]<Uv[i] AND ad[i]<=230000 AND Lent ==1) //контрактов2 и пробиваем верхнюю линию Вариант 2
       {
          Buy[ i ] = 1;
          BuyPrice[ i ] =Uv[ i ];
          Lent = 2;
          Pos = 1;
       }

 if (H[i]>Uv[i] AND O[i]<Uv[i] AND ad[i]<=230000 AND Lent ==0) //контрактов нет и пробиваем верхнюю линию Вариант 3
       {
          Buy[ i ] = 1;
          BuyPrice[ i ] =Uv[ i ];
          Lent = 3;
          Pos = 3;
       }
}
SetPositionSize(Pos, 4);


Вот как то так...

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



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

СообщениеДобавлено: Ср Ноя 16, 2011 9:57 am Ответить с цитатой Вернуться к началу

000 писал(а):
А в чем вопрос то?
Ошибка во втором варианте. Там доливка т.е. Buy[i] = 1; не правильно. Правильно Buy[i] = sigscalein;
Ну и соответственно вводишь массив сколько покупать/докупать. Типа так
.


Значит я переписываю
if (H[i]>Uv[i] AND O[i]<Uv[i] AND ad[i]<=230000 AND Lent ==1) //контрактов2 и пробиваем верхнюю линию Вариант 2
{
Buy[ i ] = 1;
BuyPrice[ i ] =Uv[ i ];
Lent = 2;
Pos = 1;
}

В такой вариант
if (H[i]>Uv[i] AND O[i]<Uv[i] AND ad[i]<=230000 AND Lent ==1) //контрактов2 и пробиваем верхнюю линию Вариант 2
{
Buy[ i ] = sigscalein;
BuyPrice[ i ] =Uv[ i ];
Lent = 2;
Pos = 1;
}

Вроде бы так.

Тогда вот еще уточнить. Смотри – имеем два варианта развития событий 1-набор позы по частям и 2-набор позы сразу.
Как было бы правильнее конструкцию If – else изобразить
If (условие на вход 2 контрактами)
{
Buy
}
If(условие на вход 1 контрактом+условие что вошли уже 2 ранее)
{
Buy=sigscalein
}
А вот дальше как…
По идее второй вариант валиден если нет первого. Т.е. мы имеем «else»
Т.е. правильнее
If условие 1.1.
If условие 1.1. true и условия 1.2.true
Else условие 1.1.false и условие 2 true

У меня же вышло
If условие 1.1.
If условие 1.1. true и условия 1.2.true
If условие 1.1.false и условие 2 true

Вроде бы в данном случае не важно. Но результаты разные Sad

Спасибо за помощь
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Ноя 16, 2011 10:28 am Ответить с цитатой Вернуться к началу

тебе надо в условия if вставить исключения чтобы не было ситуации когда срабатывают сразу несколько.
Типа так.
Код:
if (C[i]>HC[i] AND O[i]<HC[i]  AND ad[i]<=230000 AND fl1[i] AND Lent==0)//контрактов нет и пробиваем серединную линию Вариант 1

замени на
Код:
if (C[i]>HC[i] AND O[i]<HC[i] AND ad[i]<=230000 AND fl1[i] AND Lent==0 AND H[i]<Uv[i])//контрактов нет и пробиваем серединную линию Вариант 1

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen