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



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

СообщениеДобавлено: Вт Апр 19, 2022 4:49 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Может такая-же ошибка как в той теме?


Попробую проверить после такого ))
Если что могу скинуть в личку код на поглядеть?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Ну если тебе надо, то кидай. Гляну.

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



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

СообщениеДобавлено: Ср Апр 20, 2022 1:04 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Ну если тебе надо, то кидай. Гляну.


Ок...

Олег подскажи еще по роботу, в настройках АА вкладка trade нужно ставить
1 и Open или 0 и Close, или это одно и тоже, там на странице с кодом про это не сказано, может АА вообще пофиг чего там, достаточно того что внутри кода?

По якобы проблемному скрипту, нашел одну строку, которую я сам дописывал в скрипт :
CondLong = Ref(VWAP,5) > VWAP;
CondShort = Ref(VWAP,5) < VWAP;
По идее там где Ref то бары слева вроде, значит со знаком "-" должны быть Smile))
Буду смотреть.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Апр 21, 2022 4:49 pm Ответить с цитатой Вернуться к началу

DennyV8 писал(а):

Олег подскажи еще по роботу, в настройках АА вкладка trade нужно ставить
1 и Open или 0 и Close, или это одно и тоже, там на странице с кодом про это не сказано, может АА вообще пофиг чего там, достаточно того что внутри кода?

Это пофиг.
DennyV8 писал(а):

По якобы проблемному скрипту, нашел одну строку, которую я сам дописывал в скрипт :
CondLong = Ref(VWAP,5) > VWAP;
CondShort = Ref(VWAP,5) < VWAP;
По идее там где Ref то бары слева вроде, значит со знаком "-" должны быть Smile))
Буду смотреть.

Да. Тут у тебя код смотрит вперед, поэтому когда появляется возможность подсмотреть (добавляются новые бары) он смотрит и убирает сигнал....

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



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

СообщениеДобавлено: Ср Июн 01, 2022 2:57 pm Ответить с цитатой Вернуться к началу

Что-то захотелось сделать сканер баров с отправкой сообщения, накропал код, но уперся в одну фигню, например идентифицируем внутренний бар, левая свеча -1, правая текущая, после закрытия текущей проходит проверка и если бар получился, то отправляется сообщение сразу после закрытия, т.е. на открытии нового бара. Но что-то у меня сообщение отправляется столько раз пока бар новый текущий формируется.

Если я делаю сканер из робота, то все норм.

Я правильно понимаю что без записи в файл и проверки не обойтись в сканере?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Июн 03, 2022 9:53 am Ответить с цитатой Вернуться к началу

Правильно. не обязательно прямо в файл. Можно "так" запоминать. )) ВарСет ВарГет...

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



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

СообщениеДобавлено: Пт Июн 03, 2022 1:07 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Правильно. не обязательно прямо в файл. Можно "так" запоминать. )) ВарСет ВарГет...


А что так можно было ? Very Happy
Надо посмотреть что это такое ))

А вообще в Амиброкере можно просто оповещать не только звуками, а сообщением в телегу без покупки и т.д.?

Я пока реализовал сигнал через Buy но потом сразу Sell на следующем баре, хотелось бы мгновенно , но не получается, да и без Sell что-то у меня новые Buy не проходят, даже при неограниченных покупках в лонг ...Если бы убрать Sell и оставить только Buy например.

Тут на форуме не нашел чисто сканеров, одни роботы кругом...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Июн 03, 2022 1:48 pm Ответить с цитатой Вернуться к началу

DennyV8 писал(а):


А вообще в Амиброкере можно просто оповещать не только звуками, а сообщением в телегу без покупки и т.д.?

На почту (имейл) можно. Может можно и в телегу через АПИ. Не знаю.

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



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

СообщениеДобавлено: Пт Июн 03, 2022 10:05 pm Ответить с цитатой Вернуться к началу

000 писал(а):
DennyV8 писал(а):


А вообще в Амиброкере можно просто оповещать не только звуками, а сообщением в телегу без покупки и т.д.?

На почту (имейл) можно. Может можно и в телегу через АПИ. Не знаю.


Я не об этом, по ютубу настроил отправку в телегу боту, работает отлично. Я про то , что нельзя ли обойтись без покупок и продаж при формировании сигнала? Может какие другие есть функции?
А то приходится на второй свече сразу делать продажу, чтобы освободить место для следующего сигнала ))
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Июн 04, 2022 2:46 pm Ответить с цитатой Вернуться к началу

DennyV8 писал(а):


Я не об этом, по ютубу настроил отправку в телегу боту, работает отлично. Я про то , что нельзя ли обойтись без покупок и продаж при формировании сигнала? Может какие другие есть функции?
А то приходится на второй свече сразу делать продажу, чтобы освободить место для следующего сигнала ))

Не понимаю вопроса...

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



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

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

000 писал(а):
DennyV8 писал(а):


Я не об этом, по ютубу настроил отправку в телегу боту, работает отлично. Я про то , что нельзя ли обойтись без покупок и продаж при формировании сигнала? Может какие другие есть функции?
А то приходится на второй свече сразу делать продажу, чтобы освободить место для следующего сигнала ))

Не понимаю вопроса...


начал все заново, чтоб понять где косяк

Я взял сейчас для теста чистый код того бота с главной
заменил там на свои

inbar= L>=Ref(L,-1) AND H<=Ref(H,-1);

Buy = inbar ;
Sell = Ref(Buy, -1);

шорты убрал остальное все оставил.
Робот пишет в файл Buy и сообщение в телегу уходит, но когда следующая свеча пошла, после закрытия бот пишет Sell в файл,
но в течение формирования свечи сообщения в телегу летят, хотя запись такая, получается что и Buy должен писать постоянно в цикле, но нет
{
price = Close[BarCount-1] + Otstup;
dir = "1";
makeandsave("B", price);
BuyMessage =""+Name()+" Внутренний бар H2 - " +NumToStr(price, format = form, separator=False);
tg.Telegram(BuyMessage);
}

Походу из-за телеги все это, она на vbscript

И еще хотел спросить как разделять потоки после Buy
Например у меня в коде
Buy = inbar OR outbar;

сработал inbar, и дальше я хочу отправить сообщение, а когда сработает outbar - другое сообщение.
С стрелками разобрался
PlotShapes(IIf(Buy*inbar, shapeSmallSquare, shapeNone),colorGreen, 0, L, Offset=-10);
PlotShapes(IIf(Buy*outbar, shapeSmallSquare, shapeNone),colorBlue, 0, L, Offset=-10);

но в коде эта штука if Buy*inbar то отправить сообщение, чет не работает))
Спасибо за ответ...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Июн 06, 2022 9:34 am Ответить с цитатой Вернуться к началу

1. Функция savetrifile
Код:

procedure savetrifile(stransid,sstr)
{
   f = fopen(FileName, "r");
   found = 0;
   if(f)
   {
      while(!feof(f))
      {
         s = fgets(f);
         if(StrFind( s, stransid) > 0) found = 1;
      }
      fclose(f);
   }
   if (NOT found)
      {
         f = fopen(FileName, "a");
            if(f)
            {
               fputs(sstr+"\n",f);
               fclose(f);
            }
      }
}

Первым шагом выполняется проверка нет ли уже в tri такой записи и если есть, то выходим из функции без записи в файл.
Ну заковыряй в эту же функцию отправку сообщения в телегу. Если пишем, то отправляем...
2.
Код:
if (inbar[BarCount - 1]) {
   блаблабла
}
else if(outbar[...])...

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



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

СообщениеДобавлено: Ср Июн 08, 2022 12:54 am Ответить с цитатой Вернуться к началу

000 писал(а):
1. Функция savetrifile
Код:

procedure savetrifile(stransid,sstr)
{
   f = fopen(FileName, "r");
   found = 0;
   if(f)
   {
      while(!feof(f))
      {
         s = fgets(f);
         if(StrFind( s, stransid) > 0) found = 1;
      }
      fclose(f);
   }
   if (NOT found)
      {
         f = fopen(FileName, "a");
            if(f)
            {
               fputs(sstr+"\n",f);
               fclose(f);
            }
      }
}

Первым шагом выполняется проверка нет ли уже в tri такой записи и если есть, то выходим из функции без записи в файл.
Ну заковыряй в эту же функцию отправку сообщения в телегу. Если пишем, то отправляем...
2.
Код:
if (inbar[BarCount - 1]) {
   блаблабла
}
else if(outbar[...])...



Круто....Спасибо

Добавил в этот код :

procedure savetrifile(stransid,sstr)
{
f = fopen(FileName, "r");
found = 0;
if(f)
{
while(!feof(f))
{
s = fgets(f);
if(StrFind( s, stransid) > 0) found = 1;
}
fclose(f);
}
if (NOT found)
{
f = fopen(FileName, "a");
if(f)
{
fputs(sstr+"\n",f);
fclose(f);

if (Buy AND (inbar[BarCount - 1]))

{
price = Close[BarCount-1];
BuyMessage =""+Name()+" Внутренний бар H2 - " +NumToStr(price, format = form, separator=False);
tg.Telegram(BuyMessage);
}
}
}
}

Работает.....но потом начинается магия

Я попытался добавить внешний бар, но робот не отправляет сообщение, хотя пишет в файл исправно.
Потом взял и тупо заменил код в Inbar
был
inbar=L>=Ref(L,-1) AND H<=Ref(H,-1); (внутренний бар)
стал
inbar=L<=Ref(L,-1) AND H>=Ref(H,-1); (внешний бар)

и робот перестает слать сообщения в телегу, хотя в файл пишет сигнал нормально и на графике рисует точки под нужным баром.
Такое бывает у Ами или я не вижу суслика , а он рядом?


И второй вопрос, я тут озадачился установкой тейк-профита для робота с главное страницы, но обычные методы не подходят, ситуация такая :
Робот входит на текущем баре на пробой, стоп-лосс выставляется за прошлый хай (с этим проблем нет), но тейк-профит это конкретное число, которое высчитывается начиная с закрытия текущего бара, т.е. в момент когда текущий закрылся с условием что он закрытие ниже лоя предыдущего бара, то только сейчас высчитывается тейкпрофит = ((Ref(H,-1) - Ref(L,-2)) + Ref(H,-1)).

Если коротко то так все может работать ?

pullback_bull=Ref(L,-1) < Ref(L,-2); // берем 2 соседних бара сравниваем
brkout_bull=C>Ref(H,-1) + TickSize; // на текущем баре ждем пробой
Buy = brkout_bull AND pullback_bull; // покупаем при пробое внутри текущего бара
Sell = 0;

Расчет тейкпрофита после закрытия текущего бара, т.е. pullback_bull сместился на
Ref(L,-2) < Ref(L,-3) а бар входа стал Ref(С,-1).

Выход по тейк-профиту.

Что-то обычными методами не получается решить, надо запомнить цифру но через 1 бар от входа м передать ее в StaticVarSet видимо и потом в ApplyStop или можно в Sell запихнуть.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Июн 08, 2022 7:53 pm Ответить с цитатой Вернуться к началу

Вот тут.
Код:
if (Buy AND (inbar[BarCount - 1]))

Надо BarCount - 2. Прошу прощения за мою ошибку.

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


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

СообщениеДобавлено: Ср Июн 08, 2022 8:48 pm Ответить с цитатой Вернуться к началу

На самом деле надо запомнить бар входа и плясать от него.
Тут возможны варианты.
Можно было бы воспользоваться функцией ValueWhen(). Но она может дать не верный результат если идут несколько баров подряд на вход. Она будет считать от последнего сигнала.
Если решать "в лоб", то запоминаем (записываем) номер бара входа, ждем закрытия следующего (т.е. +2 от бара входа) и от него вычисляем уровень профита. Как-то так...

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen