|
|
|
UOpilot и ставки в онлайн браузере |
|
|
Levo223 |
24.10.2017, 10:33
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Заинтересовался темой автоматизации процесса торгов в онлайн платформах брокеров БО и форекс, знаю что пишут приводы и плагины специально для браузера. Но если брать UOpilot то каким способом можно будет реализовать автоматическое повышение ставок при проигрыше? При выигрышной ставке вылазиет желтенькое окошечко, при проигрышной серенькое. Получается что вот массив отвечающий за поиск цвета
set $a 0 while $a < 1 set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2) // ждёт какого-то цвета end_while и определяет точку
Но вопрос такой - серых точек в платформе много, как определить цвет именно области 2х2 см а не точки?
Далее если он серый то в определенном окне прописывается сумма, которая увеличена на коэффициент "N" от предыдущей каждый раз, когда появляется это серое окно. И сбрасываться к стартовой, когда появляется желтое!
Как будет в целом выглядеть данный скрипт?
Для примера: Допустим в окне с координатами Х, У вылазит белое окошечко, и скрипт должен автоматически перейти в окошечко с координатами Q, W и задать там число 1*2,5 т.е. "2,5", Далее если появилось вновь белое окошечко то 2,5*2.5 т.е. "6,25". Но тут вылазит желтенькое окошечко, и нам необходимо вернуться к = "1". И так по кругу, как это сделать?
|
|
|
|
cirus |
24.10.2017, 12:03
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26708
Пользователь №: 16.971
Возраст: 29
|
Цитата серых точек в платформе много, как определить цвет именно области 2х2 см а не точки? Искать как картинку с помощью FindimageЦитата задать там число 1*2,5 т.е. "2,5", Далее если появилось вновь белое окошечко то 2,5*2.5 т.е. "6,25". Но тут вылазит желтенькое окошечко, и нам необходимо вернуться к = "1". Начнём с того что пилот работает только с целыми числами, для не целых нужно использовать плагин. Код set #summa 1 while 1 = 1 // какие-то действия, если надо set #a findcolor() // ищем появилось ли нужное окно, вписать нужные параметры if #a > 0 // если окно нашлось set #summa #summa * 2 // увеличиваем сумму на 2 else // иначе, т. е. окно не нашлось set #summa 1 // сумма = 1 end_if wait 1 // какие-то действия, если надо end_while Или же писать скрипт на языке lua, работает пока только в бета версии пилота. Из плюсов: без проблем работает с не целыми числами, из минусов: нет полноценной справки, ещё не все функции работают.
|
|
|
|
Levo223 |
24.10.2017, 13:40
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Цитата(cirus @ 24.10.2017, 12:03) Искать как картинку с помощью FindimageНачнём с того что пилот работает только с целыми числами, для не целых нужно использовать плагин. Код set #summa 1 while 1 = 1 // какие-то действия, если надо set #a findcolor() // ищем появилось ли нужное окно, вписать нужные параметры if #a > 0 // если окно нашлось set #summa #summa * 2 // увеличиваем сумму на 2 else // иначе, т. е. окно не нашлось set #summa 1 // сумма = 1 end_if wait 1 // какие-то действия, если надо end_while Или же писать скрипт на языке lua, работает пока только в бета версии пилота. Из плюсов: без проблем работает с не целыми числами, из минусов: нет полноценной справки, ещё не все функции работают. Ну ладно это ерунда, можно и с целыми, я условно обозначил как дробные для точности. Главное чтобы прописывал коэффициент и возвращал значения. Так а как прописывать то будет я не совсем понял?
|
|
|
|
Levo223 |
24.10.2017, 14:06
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Цитата(cirus @ 24.10.2017, 13:58) код
Код set #summa 1 while 1 = 1 // какие-то действия, если надо set #a findcolor() // ищем появилось ли нужное окно, вписать нужные параметры if #a > 0 // если окно нашлось set #summa #summa * 2 // увеличиваем сумму на 2 else // иначе, т. е. окно не нашлось set #summa 1 // сумма = 1 end_if wait 1 // какие-то действия, если надо
kleft 100 200 // клик в строку куда прописывать значение, указать нужные координаты wait 500 send #summa // напечатать сумму // тут что делать дальше end_while Ок. Спасибо Так а как без указания коэффициента в скрипте т.е. заранее подготовленные числа, допустим было 1000 а надо прописать 2345, затем вместо 2345 прописать 5678 и т.д. как можно? По какой-то причине клик происходит не в точку координат а со смещением.
|
|
|
|
Levo223 |
24.10.2017, 16:01
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Цитата(cirus @ 24.10.2017, 15:18) Привязка Ctrl + A к нужному окну не сделана. Пример: Код init_arr %num 2345 5678 10000 15999 // массив с числами while 1 = 1 set #count #count + 1 // переменная-счётчик if #count > size(%num) // если переменная-счётчик больше, чем размер массива num end_script // остановить скрипт end_if set #summa %num [#count] // присваиваиваем переменной значние из массива log #count #summa end_while Ой да ты настоящий гений, у меня получилось что надо backspace несколько раз тыкать. Вот прописал я findcolor но по всей видимости смещение и в определении цвета присутствует. Какие параметры тут за что отвечают? %arr 2 - это что такое? У меня получилась наполовину рабочая... но вот такая вот хрень Код set #100 while 1 = 1 // это что означает? // какие-то действия, если надо set #2 findcolor(73, 74, 78, 260 1 1 #131416 %arr 2(что такое %arr 2 вот это я не понял, и куда его сувать?) // ищем появилось ли нужное окно, вписать нужные параметры if #2 > 0 // если окно нашлось, ну допустим 2 пикселя, вроде у меня такого цвета там больше нет kleft 1256 205 // клик в строку куда прописывать значение wait 3000 send backspace // нажать баксп 5 раз send backspace send backspace send backspace send backspace send #200 // напечатать сумму Double_left 1256 150 // двойной клик в сторону else // иначе, т. е. окно не нашлось set #100 // сумма = 100 /тут надо написать ничего не делаем, если оно не нашлось end_if wait 3000 трёмся *опой об диван) // какие-то действия, если надо
end_while end_script
insert и delete как-нибудь можно тут использовать параметры?
|
|
|
|
Levo223 |
24.10.2017, 18:17
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Вобщем не работает Код set #блаблабла while 1 = 1 // какие-то действия, если надо set #2 findcolor(111, 397 350, 567 1 1 5130825) // ищем появилось ли нужное окно, вписать нужные параметры if #2 > 0 // если окно нашлось kleft 1256 205 // клик в строку куда прописывать значение, указать нужные координаты wait 3000 send backspace // нажать баксп 5 раз send backspace send backspace send backspace send backspace send #200 // напечатать сумму Double_left 1256 150 // тут что делать дальше, двойной клик в сторону else // иначе, т. е. окно не нашлось set #100 // сумма = 100 тут надо написать ничего не делаем, если оно не нашлось... end_if wait 1000 // какие-то действия, если надо end_while end_script
Что бы я не делал, какие координаты не задавал, он не ищет данный цвет и не нажимает кнопки.
|
|
|
|
cirus |
25.10.2017, 2:49
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26708
Пользователь №: 16.971
Возраст: 29
|
Цитата (что такое %arr 2 вот это я не понял, и куда его сувать?) Неплохо бы для начала прочитать описание команды. Посмотреть синтаксис и примеры. http://uopilot.tati.pro/index.php?title=FindcolorКратце, %arr - это массив, в который будут записаны результаты поиска. Цитата он не ищет данный цвет и не нажимает кнопки. Из-за того что в findcolor указаны не все параметры, в данном случае отсутствует массив, команда возвращает ошибку, соответственно всё что дальше выполниться не может. Цитата set #2 Лучше имя переменной начинать с буквы, несмотря на то что пилот и так жрёт. Как это обычно бывает, не находит, не кликает, не работает и т. д. Не надо писать весь скрипт сразу, для начала проверяем находит ли цвет: Код // не забываем сделать привязку Ctrl + A set #a findcolor(111, 397 350, 567 1 1 5130825 %arr) // ищем log #a // результат поиска, количество найденных пикселей if #a > 0 log Цвет найден else log Цвет не найден end_if end_script Если поиск цвета работает дописываем следующие действия. Цитата send #200 // напечатать сумму Код // Если хотите напечатать 200, то: send 200 // Если содержимое переменной, то: set #summa 500 send #summa // напечатает 500
|
|
|
|
Levo223 |
25.10.2017, 4:33
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Цитата(cirus @ 25.10.2017, 2:49) Лучше имя переменной начинать с буквы, несмотря на то что пилот и так жрёт. Код // не забываем сделать привязку Ctrl + A set #a findcolor(111, 397 350, 567 1 1 5130825 %arr) // ищем log #a // результат поиска, количество найденных пикселей if #a > 0 log Цвет найден else log Цвет не найден end_if end_script [/code] Так теперь он пишет и ищет. Как теперь связать вот это: Код init_arr %num 2345 5678 10000 15999 // массив с числами while 1 = 1 set #count #count + 1 // переменная-счётчик if #count > size(%num) // если переменная-счётчик больше, чем размер массива num end_script // остановить скрипт end_if set #summa %num [#count] // присваиваиваем переменной значние из массива log #count #summa end_while и вот это Код set #summa 100 while 1 = 1 //привязк Ctrl + A set #a findcolor(111, 397 350, 567 1 1 5130825 %arr) // ищем if #a > 0 kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 send backspace // нажать баксп 5 раз send backspace send backspace send backspace send backspace send 200 // напечатать сумму Double_left 1247 68 // тут что делать дальше, двойной клик в сторону else end_if end_while end_script И еще, как программно задать повторение нажатия клавиши несколько раз, у меня несколько раз писать приходится как backspace// т.е. мне нужна какая-то переменная, которая позволяет прыгнуть в другой скрипт и выполнить его там. Т.е. если окно серенькое идёт вот эта часть set #count #count + 1 // переменная-счётчик if #count > size(%num) // если переменная-счётчик больше, чем размер массива num end_script // остановить скрипт end_if set #summa %num [#count] // присваиваиваем переменной значние из массива log #count #summa если желтенькое то kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 send backspace // нажать 5 раз send backspace send backspace send backspace send backspace send 100 // напечатать сумму Также нужна однократность действия, т.е. когда я пишу Код kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 send backspace // нажать баксп 5 раз send backspace send backspace send backspace send backspace send 200 // напечатать сумму
он успевает сделать это 2 раза, stop_script не помогает, увеличить время ожидания чтоли В целом должно получиться что-то вроде Код set #summa 100 init_arr %num 2345 5678 10000 15999 // массив с числами, куда его именно поставить? while 1 = 1 //привязк Ctrl + A set #a findcolor(111, 397 350, 567 1 1 5130825 %arr) // ищем серый 5130825 if #a > 0 kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 send backspace // нажать баксп 5 раз send backspace send backspace send backspace send backspace set #count #count + 1 // переменная-счётчик if #count > size(%num) // если переменная-счётчик больше, чем размер массива num end_script // остановить скрипт end_if // эта часть я так понимаю должна быть за поиском цвета set #summa %num [#count] // присваиваиваем переменной значние из массива Double_left 1247 68 // тут что делать дальше, двойной клик в сторону log #count #summa // Выдаёт ошибку с числами из массива. wait 4000
else // если не находит серый end_if // и начинает поиск жёлтого set #a findcolor(111, 397 350, 567 1 1 4709887 %arr) // желтый 4709887 if #a > 0 // находит желтый kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 send backspace // нажать баксп 5 раз send backspace send backspace send backspace send backspace send 100 // напечатать сумму Double_left 1247 68 // тут что делать дальше, двойной клик в сторону wait 4000 end_if // не находит жёлтый - возвращается к началу скрипта end_while end_script
|
|
|
|
Levo223 |
25.10.2017, 11:40
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Цитата(cirus @ 25.10.2017, 11:30) Окно само появляется или какие-то действия нужны для этого? То белое окно, то серое, это одно и тоже или нет? Нормально напишите все действия по порядку.
Беленькое - это серенькое, я так выразился. Само оно появляется, при условии что кто-то там заключил сделку. Есть некоторые сложности, например возврат затраченной ставки обозначается желтым окном также как и выигрышная, поэтому в последующем планируется каким-то образом дифференцировать этот возврат от выигрыша. Возможно по findimage или сумме. Что касается самой сделки, Ну это другая часть скрипта, которая по всей видимости будет находится в другом пилоте, я так думаю разделить. Идеально связать работу программы и сигналы из появляющегося окошка MT с индикаторами, но этот раздел мне еще нужно изучить. Вот пример окна которое должно быть сканируемо первый пилотом, и исходя из этого нажато то или это.
|
|
|
|
cirus |
25.10.2017, 12:06
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26708
Пользователь №: 16.971
Возраст: 29
|
как-то так
Код set #summa 100 // начальная ставка init_arr %num 2345 5678 10000 15999 set #count 0
while 1 = 1 set #grey 0 set #yellow 0 while #grey = 0 and #yellow = 0 // ждём пока не появится серое или жёлтое окно set #grey findcolor(111, 397 350, 567 1 1 5130825 %arr) set #yellow findcolor(111, 397 350, 567 1 1 4709887 %arr) wait 100 end_while
if #grey > 0 // если найдено серое окно kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 for #i 1 5 // нажимаем Backspace 5 раз send {Backspace} wait 100 end_for set #count #count + 1 // переменная-счётчик if #count > size(%num) // если переменная-счётчик больше, чем размер массива num end_script // остановить скрипт, тут что делать если достигнута максимальная ставка // сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива log Текущая ставка #summa send #summa // напечать сумму
Double_left 1247 68 // двойной клик в сторону log #count #summa wait 4000 else // иначе, т. е. найдено жёлтое окно kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 for #i 1 5 // нажимаем Backspace 5 раз send {Backspace} wait 100 end_for set #summa 100 set #count 0 // сбрасываем счётчик на 0, т. е. ставки начнутся заново send #summa // напечатать сумму end_if end_while
|
|
|
|
Levo223 |
25.10.2017, 12:22
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
хз
Цитата(cirus @ 25.10.2017, 12:06) Код set #summa 100 // начальная ставка init_arr %num 2345 5678 10000 15999 set #count 0
while 1 = 1 set #grey 0 set #yellow 0 while #grey = 0 and #yellow = 0 // ждём пока не появится серое или жёлтое окно set #grey findcolor(111, 397 350, 567 1 1 5130825 %arr) set #yellow findcolor(111, 397 350, 567 1 1 4709887 %arr) wait 100 end_while
if #grey > 0 // если найдено серое окно kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 for #i 1 5 // нажимаем Backspace 5 раз send {Backspace} wait 100 end_for set #count #count + 1 // переменная-счётчик if #count > size(%num) // если переменная-счётчик больше, чем размер массива num end_script // остановить скрипт, тут что делать если достигнута максимальная ставка // сейчас остановка скрипта, чтобы не было ошибки при выходе за пределы массива end_if
set #summa %num [#count] // присваиваиваем переменной значение из массива log Текущая ставка #summa send #summa // напечать сумму
Double_left 1247 68 // двойной клик в сторону log #count #summa wait 4000 else // иначе, т. е. найдено жёлтое окно kleft 1256 126 // клик в строку куда прописывать значение, указать нужные координаты wait 1000 for #i 1 5 // нажимаем Backspace 5 раз send {Backspace} wait 100 end_for set #summa 100 Double_left 1247 68 set #count 0 // сбрасываем счётчик на 0, т. е. ставки начнутся заново send #summa // напечатать сумму end_if end_while Да, проблемка, оно при желтом окне не возвращается к начальной ставке, а пишет 0, но должно возвращаться к начальной ставке. Даблклик в сторону для закрытия окна подправил, после нахождения желтого окна. Но не могу понять где изменить 0 на 100, чтобы возврат к старту был... Т.е. переменную ноль нужно обозначить как 100! А как очистить Log? Она когда какой-то максимальной ставки достигает почему-то не хочет дальше писать? И почему-то когда 0 - пишется 2 раза
|
|
|
|
Levo223 |
25.10.2017, 12:42
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Цитата(cirus @ 25.10.2017, 12:40) После кликов надо добавлять wait, для закрытия окна требуется время. Т. е. окно ещё не закрылось, а send уже начал печатать символы, в итоге от 100, остаётся 0 или 00.
" end_script // остановить скрипт, тут что делать если достигнута максимальная ставка" Если достигнута максимальная ставка - должна возвращаться к старту. Так с 0 разобрались) ставит 100
|
|
|
|
Levo223 |
25.10.2017, 15:03
|
Novice
Сообщений: 61
Регистрация: 8.10.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.638
Возраст: 23
|
Цитата(cirus @ 25.10.2017, 13:27) Тогда вместо end_script ставьте break, по сути скрипт начнётся сначала.
Так в чём сложность? Список клавиш в начало скрипта, остальное в ту часть кода, где нужно нажать клавишу.
Отправил картинку в приват, чтобы было понятнее, но во избежании фикса её лучше не выкладывать Вот собственно вопрос: Как прописать копирование в заданных координатах? И будет ли пилот сравнивать дробные числа с . по середине? Каким образом в нередактируемых данных скопировать и сравнить?
|
|
|
|
|
|
8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0
|
|