Что нового

Как узнать цвет, если одна из координат непостоянна?

Pennon

Новичок
Сообщения
45
Репутация
0
Хочу узнать цвет первой свечи, если возможно в неактивном окне.
Переделанный пример c форума пишет, что зелёный есть, даже если его нет.
Первая свеча отмечена на снимке
Код:
#include <Array.au3>
#include <IE.au3>

Local $aIe[0], $oIe = _IECreate("https://alpari.com/ru/binary_options/binary_trader/")
Sleep(60000)
$p1=PixelSearch( 0, 0,713, 686, 0x86A52D)
    If IsArray($p1) Then
        MsgBox(4096, "", "Есть зелёный")

    ElseIf Not IsArray($p1) Then
        MsgBox(4096, "", "Есть коричневый")

    EndIf
 

Вложения

  • aaax.jpg
    aaax.jpg
    85.9 КБ · Просмотры: 17

Malderin

Новичок
Сообщения
68
Репутация
1
Если координата Х известна, то можно запустить поиск по вертикали любого цвета, отличного от белого например. Скажем если известна координата по вертикальной оси (y) верхнего края области графика (горизонтальной оси), координата по горизонтали (х) известна и постоянна, то можно сделать так:
Код:
Local $iX = 700 ;Например, координата по горизонтали столбика отмеченного стрелкой такая
Local $iY = 500 ;Например, координата по вертикали координата оси (не самой оси а на пару  пикселей вниз от нее, примерно то место куда указывает стрелка)
Local $iColor = "FFFFFF" ;Белый цвет


For $i = $iY To  $iY+200 ;Поиск по вертикали от оси вниз на 200 пикселей
	$res = PixelGetColor($iX, $iY)
	If Hex($res, 6) <> $iColor Then
		MsgBox(4096, "ок", Hex($res, 6))
		ConsoleWrite(Hex($res, 6) & @CRLF)
		ConsoleWrite($iY & @CRLF)
		$i = $iY+200
	EndIf
	$iY = $iY + 1
Next


Не уверен что все это будет работать, поскольку даже когда я вожу мышкой по "белому" фону графика, то уже вижу несколько разных цветов, и в искомом столбике разных цветов тоже много (как в фильме "50 оттенков серого зеленого")
Забыл, команду PixelGetColor лучше привязать к конкретному окну.
 
Автор
P

Pennon

Новичок
Сообщения
45
Репутация
0
Malderin
Спасибо за попытку не получается почему то.
Почему нельзя сразу искать зелёный цвет?
 

Malderin

Новичок
Сообщения
68
Репутация
1
Pennon [?]
Почему нельзя сразу искать зелёный цвет?
Да почему нельзя то, можно. Только понятие "зеленый цвет" растяжимое. Глаз видит зеленый цвет, но инструмент по проверке цвета, например встроенный в AutoIt, видит много оттенков зеленого.
К стати, проясним, чтоб скрипт заработал, нужно указать координаты точки отсчета (у меня они были выбраны под меня, это $iX и $iY). В вашем случае, на открытом графике нужно было их перевыбрать и забить в скрипт, это было сделано или нет? Допустим да, тогда, если вы хотите просто искать цвет, укажите в переменной $iColor тот цвет, который нужно найти.
Код:
Local $iX = 700 ;Например, координата по горизонтали столбика отмеченного стрелкой такая
Local $iY = 500 ;Например, координата по вертикали координата оси (не самой оси а на пару  пикселей вниз от нее, примерно то место куда указывает стрелка)
Local $iColor = "FFFFFF" ;Здесь нужно указать зеленый цвет, сейчас указан белый цвет
Local $i_1 = $iY+200 ;Длинна поиска вниз на 200 пикселей

For $i = $iY To  $i_1 ;Поиск по вертикали от оси вниз на 200 пикселей
    $res = PixelGetColor($iX, $iY)
    If Hex($res, 6) = $iColor Then
        MsgBox(4096, "ок", Hex($res, 6))
        ConsoleWrite(Hex($res, 6) & @CRLF)
        ConsoleWrite($iY & @CRLF)
        $i = $i_1
	Else
		If $i = $i_1 Then MsgBox(4096, "Неудача", "Поиск завершен, искомы цвет не найден")
	EndIf

    $iY = $iY + 1
Next
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
PixelSearch


PixelSearch имеет возможность поиска цвета с оттенками (shade-variation) и поиска справа налево в указанном прямоугольнике (right < left).
1) Ищем крайнюю правую зеленую свечу.
2) Ищем крайнюю правую коричневую свечу.
3) Если $x_коричневой < $x_зеленой, значит последняя свеча зеленая.
 

Malderin

Новичок
Сообщения
68
Репутация
1
hedji [?]
PixelSearch имеет возможность поиска цвета с оттенками
Я все таки надеюсь что этот jpg на скриншоте наделал градиентов цвета, в реале же на веб странице цвет постоянный. А вообще да, предложенный вариант с PixelSearch хорош, хотя, как по мне, работает значительно медленнее.
 
Верх