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


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

СообщениеДобавлено: Ср Дек 19, 2012 11:19 am Ответить с цитатой Вернуться к началу

Как то так
Код:

....
// попытка сделать запоминание диапазона в момент входа и выход по 161.8%. Неудачная. Считает неверно, перерисовывает после новых сигналов
B1 = (BC1 OR BC4 OR BC3) AND BC2 AND TM4;
S1 = (SC1 OR SC3 OR SC4) AND SC2 AND TM4;

H1 = ValueWhen(B1, NewHigh, n = 1);
L1 = ValueWhen(S1, NewLow, n = 1);
Delta = H1-L1;
D161H = L1 + Delta*1.618;
D161S = H1 - Delta*1.618;

Lout3 = Cross (H, D161H);

Sout3 = Cross (D161S, L);

pos = 0
for(i = 0; i < BarCount; i++)
{
  if(pos == 0)
  {
    if(B1[i])
    {
      Buy[i] = 1;
      pos = 1;
      D161Hc = D161H[i];
      D161Sc = D161S[i];
    }
    else if(S1[i])
    {
      Short[i] = 1;
      pos = -1;
      D161Hc = D161H[i];
      D161Sc = D161S[i];
    }
  }
  else if(pos == 1)
  {
    if(тут условия выхода в виде Lout1[i] OR Lout2[i] OR Lout4[i] OR TM[i] OR H[i] >= D161Hc)
    {
      Sell[i] = 1;
      pos = 0;
      SellPrice[i] = ....; // цена выхода
    }
  }
  else if(pos == -1)
  {
    if(тут условия выхода в виде Sout1[i] OR Sout2[i] OR Sout4[i] OR TM[i] OR L[i] <= D161Sc)
    {
      Cover[i] = 1;
      pos = 0;
      CoverPrice[i] = ....; // цена выхода
    }
  } 
}



Plot( NewHigh, "NewHigh", colorRed, 32);
Plot( NewLow, "NewLow", colorGreen, 32);

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Ср Дек 19, 2012 11:42 am Ответить с цитатой Вернуться к началу

Вот так надо прописать?

Код:

....
  else if(pos == 1)
  {
    if(Lout1[i] OR Lout2[i] OR Lout4[i] OR TM[i] OR H[i] >= D161Hc)
    {
      Sell[i] = 1;
      pos = 0;
      SellPrice[i] = Close; // цена выхода
    }
  }
  else if(pos == -1)
  {
    if(Sout1[i] OR Sout2[i] OR Sout4[i] OR TM[i] OR L[i] <= D161Sc)
    {
      Cover[i] = 1;
      pos = 0;
      CoverPrice[i] = Close; // цена выхода
    }
  } 
}



Plot( NewHigh, "NewHigh", colorRed, 32);
Plot( NewLow, "NewLow", colorGreen, 32);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Дек 19, 2012 12:08 pm Ответить с цитатой Вернуться к началу

Да.
Только с ценой сделки не понятно. Почему по Close?

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

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

000 писал(а):
Да.
Только с ценой сделки не понятно. Почему по Close?


Я тоже не понял. И система отказалась понимать. Убрал вообще строки CoverPrice[i] = Close; // цена выхода и Sell... Заработало.

А что там должно быть написано заместо многоточия? Я не понял.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Дек 19, 2012 12:34 pm Ответить с цитатой Вернуться к началу

Вообще говоря если выходишь по уровню, то и должен быть написан уровень (цена) по которой выходишь. А не работало потому, что надо было писать C[i]

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Ср Дек 19, 2012 2:39 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Вообще говоря если выходишь по уровню, то и должен быть написан уровень (цена) по которой выходишь. А не работало потому, что надо было писать C[i]


А, ну я тут по системе просто по цене закрытия выхожу.

Тем не менее, что-то частенько скрипт отрабатывает неверно. К примеру, на картинке. Видим вход в районе 11 часов. Натягиваем фибу на экстремумы, существующие в момент входа. Уровень 161.8% на 144228. Как можно видеть, выход произошел гораздо раньше.

Да, там есть еще условия выхода, а именно: if(Lout2[i] OR Lout4[i] OR TM[i] OR H[i] >= D161Hc)

Но,
Lout2 = Cross (NewLow, C);
Lout4 = Cross (300, CCIT);

В данном случае лой не пересекается, ССИ также не пересекает 300.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Дек 21, 2012 12:14 am Ответить с цитатой Вернуться к началу

В общем так.
Не смотря на то, что код я написал, логики того, что именно надо я до конца не понял.
Что могу посоветовать.
Найди место где не правильно выходит и постарайся выяснить по какому сигналу выходит.
Убирай поочередно из условия выхода вот эти условия
Код:

Lout1[i] OR Lout2[i] OR Lout4[i] OR TM[i] OR H[i] >= D161Hc

Таким макаром сначала найдешь что именно косячит, а уж потом будем разбираться что не так.

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



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

СообщениеДобавлено: Вт Янв 22, 2013 5:01 pm Ответить с цитатой Вернуться к началу

Может быть уже будет лишним, но для тестирования системы может подойти StaticVarSet(). Соотвественно, раз эта функция имеет дело с константой, то и прежде чем проводить проверку на выход по стопу, следует массив цены приводить к константе? Это уже видимо из VarGet()?
Хотя... Может быть получится взять массив от этой константы?
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Вт Янв 22, 2013 5:49 pm Ответить с цитатой Вернуться к началу

StaticVarSet() это не обязательно константа. Это статическая переменная. Может быть и константой и массивом.

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



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

СообщениеДобавлено: Сб Фев 20, 2016 12:14 am Ответить с цитатой Вернуться к началу

000 писал(а):
StaticVarSet() это не обязательно константа. Это статическая переменная. Может быть и константой и массивом.

Если это так, как обратиться к определенному элементу массива? Вроде такого? Smile

StaticVarGet("Var"[1])
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Фев 20, 2016 8:57 am Ответить с цитатой Вернуться к началу

Может быть можно и так. Наверняка можно так.
Код:
qqq = StaticVarGet("Var");
www = qqq[1];

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



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

СообщениеДобавлено: Сб Фев 20, 2016 9:38 am Ответить с цитатой Вернуться к началу

000 писал(а):
Может быть можно и так. Наверняка можно так.
Код:
qqq = StaticVarGet("Var");
www = qqq[1];

Как я написал - нельзя. Да, тоже через Temp переменную обращаюсь, по козьи конечно это .. ))

Код:
temp=StaticVarGet("Var");
temp[barecount-5]=100;
StaticVarSet("Var",temp);
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen