В настоящее время я строю торговую программу. Мне нужно, чтобы результат возвращался, когда сигнал попадает в следующие 0 или 1.
Столбец сигнала имеет только три значения: «0», «1» или «». 1 обозначает сигнал на покупку, а 0 обозначает сигнал на продажу. "" просто означает ожидание, пока сигнал не будет достигнут.
Иногда может быть несколько 0 или 1, возвращенных в строке, но мне нужно только найти первую строку, так как это будет время для входа или вне.
Итак, мой стол выглядит так.
id coinType signal date
==========================================
1 A 0 2020-04-18 05:45:05
2 A 2020-04-18 05:46:05
3 A 1 2020-04-18 05:47:05
4 A 2020-04-18 05:48:05
5 A 2020-04-18 05:49:05
6 A 0 2020-04-18 05:50:05
7 A 1 2020-04-18 05:51:05
8 A 1 2020-04-18 05:52:05
9 A 2020-04-18 05:53:05
10 A 0 2020-04-18 05:54:05
Я пробовал следующий код, но, похоже, он не возвращает правильный результат.
SELECT * FROM table c WHERE `coinType`='A' and `signal` NOT IN ( SELECT `signal` FROM table WHERE id = (SELECT MAX(id) FROM table WHERE `signal`!='' and id < c.id and `coinType` = c.`coinType`) ) ORDER BY id
Возвращенный результат должен выглядеть следующим образом
id coinType signal date
==============================================
1 A 0 2020-04-18 05:45:05
3 A 1 2020-04-18 05:47:05
6 A 0 2020-04-18 05:50:05
7 A 1 2020-04-18 05:51:05
10 A 0 2020-04-18 05:54:05