Работа над ошибками
![]()
Неправильное использование метода __init__
Так же, как в C ++, в Python есть метод __ init__. Он автоматически вызывается, когда Python выделяет память для нового объекта класса. Целью данного метода является то, чтобы установить значения экземпляров класса. Возвращать явно значение из __ init__ – не очень хорошая практика. Это означает, что вы пытаетесь отклониться от цели этого метода и …
![]()
Импорт, ведущий к круговой зависимости
В Python инструкция import также является исполняемым оператором. Каждый вызов инструкции import приводит к выполнению соответствующего модуля. Кроме того, любая функция или класс из модуля модуле не может быть выполнена до тех пор, пока соответствующий код (в функции или классе) не будет запущен.
![]()
Неправильная проверка типов
Иногда для проверки типа данных в Python коде используется встроенная функция type(). Вместо этого для проверки типов более корректно использовать isinstance(), особенно в том случае, когда проверяется тип экземпляра класса.
![]()
Возвращение несогласованных типов значений из функций.
При создании функции всегда нужно проверять, возвращает ли функция значения того типа, который ожидается. Если нет, нужно ввести дополнительное условие и сгенерировать исключения, а иначе тип возвращаемого значения придется проверять явно каждый раз перед его использованием. Нужно избегать написания такого кода, потому что это приводит приводит к путанице и увеличивает сложность. Рассмотрим примеры.
![]()
Недоиспользование блока исключений
В процессе обучения или адаптации к новому языку, мы предлагаем обратить внимание не только на основные, базовые моменты, но и на некоторые более «продвинутые» Нельзя упускать из виду исключения. Грамотное использование исключений позволяет сделать код рабочим даже в исключительных условиях.
![]()
Смешение пробелов и табуляций в Python
Согласно принципам PEP 8 в коде Python нужно использовать четыре пробела на каждый уровень отступа и не смешивать их с табуляциями. Это всего лишь одно из правил, которое не диктуется синтаксисом Python. Но тем не менее, ему нужно следовать, чтобы код был управляемым и не содержал ошибок.
![]()
Иррациональное использование антипаттернов в коде. Java-стиль
В общем случае, анти-паттерн представляет собой подход к разработке решения часто встречающихся задач, который в общем решает эти задачи, но с возможными побочными эффектами. Getter и setter в Java часто применяют для определения get/set функций для доступа к членам класса. Например, этот шаблон применяется в приложениях, использующих Java Hibernate Framework. В Python наоборот, такое использование …
![]()
Исключения и ошибки в Питоне
При программировании на любом языке, включая Python, работа с исключениями и ошибками часто становится необходимостью, когда вы имеете дело с большим количеством переменных. Иногда, вы просто не знаете, что окажется в вашем коде. Таким образом, вы планируете наперед и используете исключения и обработку ошибок в случае необходимости. Как правило, цель состоит в том, чтобы выполнить …
![]()
Идентичность как неверное понимание равенства
Еще одна распространенная ошибка – перепутать оператор равенства == и оператор идентичности is при сравнении целых чисел. Поскольку Python использует кэширование для целых чисел, об этой ошибке можно и не узнать.
![]()
Игнорирование правил областей видимости – LEGB правила
Если вы не знаете правил области видимости Python, то есть большая вероятность того, вы сделаете ошибку. Это потому, что Pytho использует немного другой подход к областям видимости, чем другие языки программирования. Например, он позволяет доступ к переменным, объявленная внутри цикла или в блоках if заявления извне. Это может немного дезориентировать программистов с опытом C …
![]()
Работа над Python-ошибками
Есть некоторые фундаментальные ошибки кодирования, которые некоторые из нас делают по привычке. Эти статьи посвящены тому, как их избегать и улучшить качество кода.
Содержание
- Введение
- I like Python
- Управляемый разделитель
- Сумма трёх чисел
- Следующее и предыдущее
- Разделяй и властвуй
- Расстояние в метрах
- Сама неотвратимость
- Пересчет временного интервала
- Трехзначное число
- Четырёхзначное число
- Пароль
- Четное или нечетное?
- Роскомнадзор
- Арифметическая прогрессия
- Наименьшее из четырёх чисел
- Только +
- Принадлежность 1
- Принадлежность 2
- Принадлежность 3
- Високосный год
- Ход ладьи
- Ход короля
- Вид треугольника
- Самописный калькулятор
- Цветовой микшер
- Пересечение отрезков
Введение
При изучении любого языка программирования очень важно много практиковаться. В этом уроке Вы найдёте различные задачи, которые помогут Вам развить алгоритмическое мышление.
I like Python
Напишите программу, которая выводит на экран текст «I***like***Python» (без кавычек).
print ("I", "like", "Python", sep="***")
# Вывод:
I***like***Python
Управляемый разделитель
Напишите программу, которая считывает строку-разделитель и три строки, а затем выводит указанные строки через разделитель.
a=input()
b=input()
c=input()
d=input()
print (b, c, d, sep=a)
# Вывод:
***
1
2
3
1***2***3
Сумма трёх чисел
Напишите программу, которая считывает три целых числа и выводит на экран их сумму. Каждое число записано в отдельной строке.
a = int(input())
a += int(input())
a += int(input())
print(a)
# Вывод:
1
2
3
6
Следующее и предыдущее
Напишите программу, которая считывает целое число, после чего на экран выводится следующее и предыдущее целое число с пояснительным текстом.
a = int(input())
print('Следующее за числом', a, 'число:', a+1)
print('Для числа', a, 'предыдущее число:', a-1)
# Вывод:
10
Следующее за числом 10 число: 11
Для числа 10 предыдущее число: 9
Разделяй и властвуй
Напишите программу, которая считывает целое положительное число xx и выводит на экран последовательность чисел x, 2x, 3x, 4x, 5x, разделённых тремя черточками.
a = int(input())
print(a, a*2, a*3, a*4, a*5, sep='-'*3)
# Вывод:
10
10---20---30---40---50
Расстояние в метрах
Напишите программу, которая находит полное число метров по заданному числу сантиметров.
a = int(input())
print(a//100)
# Вывод:
1050
10
Сама неотвратимость
Безумный титан Танос собрал все 6 камней бесконечности и намеревается уничтожить половину населения Вселенной по щелчку пальцев. При этом если население Вселенной является нечетным числом, то титан проявит милосердие и округлит количество выживших в большую сторону. Помогите Мстителям подсчитать количество выживших.
a = int(input())
print(a // 2 + a % 2)
# Вывод:
1015
508
Пересчет временного интервала
Напишите программу для пересчёта величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах.
a = int(input())
print(a, 'мин - это', a // 60, 'час', a % 60, 'минут.')
# Вывод:
90
90 мин - это 1 час 30 минут.
Трехзначное число
Напишите программу, в которой рассчитывается сумма и произведение цифр положительного трёхзначного числа.
a = int(input())
a1 = a // 100
a2 = a % 100 // 10
a3 = a % 10
print('Сумма цифр =', a1 + a2 + a3)
print('Произведение цифр =', a1 * a2 * a3)
# Вывод:
132
Сумма цифр = 6
Произведение цифр = 6
Альтернативное решение:
a = str(input())
print('Сумма цифр =', int(a[0]) + int(a[1]) + int(a[2]))
print('Произведение цифр =', int(a[0]) * int(a[1]) * int(a[2]))
# Вывод:
132
Сумма цифр = 6
Произведение цифр = 6
Четырёхзначное число
Напишите программу для нахождения цифр четырёхзначного числа.
a = int(input())
print("Цифра в позиции тысяч равна", a // 1000)
print("Цифра в позиции сотен равна", a % 1000 // 100)
print("Цифра в позиции десятков равна", a % 100 // 10)
print("Цифра в позиции единиц равна", a % 10)
# Вывод:
1234
Цифра в позиции тысяч равна 1
Цифра в позиции сотен равна 2
Цифра в позиции десятков равна 3
Цифра в позиции единиц равна 4
Пароль
При регистрации на сайтах требуется вводить пароль дважды. Это сделано для безопасности, поскольку такой подход уменьшает возможность неверного ввода пароля.
Напишите программу, которая сравнивает пароль и его подтверждение. Если они совпадают, то программа выводит: «Пароль принят», иначе: «Пароль не принят».
a = (input())
b = (input())
print('Пароль принят') if a == b else print('Пароль не принят')
# Вывод:
123456
123456
Пароль принят
Четное или нечетное?
Напишите программу, которая определяет, является число четным или нечетным.
a = int(input())
print('Нечетное') if a % 2 else print('Четное')
# Вывод:
50
Четное
Роскомнадзор
Напишите программу, которая определяет, разрешен пользователю доступ к интернет-ресурсу или нет.
Формат входных данных
На вход программе подаётся целое число — возраст пользователя.
Формат выходных данных
Программа должна вывести текст «Доступ разрешен» если возраст не менее 18, и «Доступ запрещен» в противном случае.
a = int(input())
print('Доступ разрешен') if a >= 18 else print('Доступ запрещен')
# Вывод:
19
Доступ разрешен
Арифметическая прогрессия
Напишите программу, которая определяет, являются ли три заданных числа (в указанном порядке) последовательными членами арифметической прогрессии.
a1 = int(input())
a2 = int(input())
a3 = int(input())
if a3 - a2 == a2 - a1:
print('YES')
else:
print('NO')
# Вывод:
1
2
3
YES
Наименьшее из четырёх чисел
Напишите программу, которая определяет наименьшее из четырёх чисел.
a, b, c, d = int(input()), int(input()), int(input()), int(input())
if a > b:
a = b
if c > d:
c = d
if a > c:
a = c
print(a)
# Вывод:
1
2
3
4
1
Альтернативное решение:
a1 = int(input())
a2 = int(input())
a3 = int(input())
a4 = int(input())
print(min(a1, a2, a3, a4))
# Вывод:
1
2
3
4
1
Только +
Напишите программу, которая считывает три числа и подсчитывает сумму только положительных чисел.
a = list()
a.append(int(input()))
a.append(int(input()))
a.append(int(input()))
s = 0
for i in a:
if i >= 0:
s += i
print(s)
# Вывод:
1
2
-3
3
Альтернативное решение:
a, b, c = int(input()), int(input()), int(input())
print((a if a > 0 else 0) + (b if b > 0 else 0) + (c if c > 0 else 0))
# Вывод:
-2
-3
5
5
Принадлежность 1
Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число промежутку от -1 до 17.
a1 = int(input())
if a1 > -1 and a1 < 17:
print('Принадлежит')
else:
print('Не принадлежит')
# Вывод:
10
Принадлежит
Принадлежность 2
Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число указанным промежуткам: от минус бесконечности до -3 и от 7 до бесконечности.
a1 = int(input())
print('Принадлежит') if (a1 <= -3 or a1 >= 7) else print('Не принадлежит')
# Вывод:
10
Принадлежит
Принадлежность 3
Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число указанным промежуткам: от -30 до -2 и от 7 до 25.
x = int(input()) print('Принадлежит') if (x > -30 and x <= -2) or (x > 7 and x <= 25) else print('Не принадлежит') # Вывод: 10 Принадлежит
Високосный год
Напишите программу, которая определяет, является ли год с данным номером високосным. Если год является високосным, то выведите «YES», иначе выведите «NO». Год является високосным, если его номер кратен 4, но не кратен 100, или если он кратен 400.
a1 = int(input())
print('YES') if ((a1 % 4 == 0) and not (a1 % 100 == 0)) or (a1 % 400 == 0) else print('NO')
# Вывод:
2021
NO
Ход ладьи
Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли ладья попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести «YES», если из первой клетки ходом ладьи можно попасть во вторую, или «NO» в противном случае.
a1 = int(input())
a2 = int(input())
a3 = int(input())
a4 = int(input())
print('YES') if (a1 == a3) or (a2 == a4) else print('NO')
# Вывод:
1
1
2
1
YES
Ход короля
Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести «YES», если из первой клетки ходом короля можно попасть во вторую, или «NO» в противном случае.
a, b, c, d = (int(input()) for i in 'abcd')
if abs(a - c) <= 1 and abs(b - d) <= 1:
print('YES')
else:
print('NO')
# Вывод:
1
1
2
2
YES
Вид треугольника
Напишите программу, которая принимает три положительных числа и определяет вид треугольника, длины сторон которого равны введенным числам.
a1 = int(input())
a2 = int(input())
a3 = int(input())
if a1 == a2 == a3:
print('Равносторонний')
elif a2 == a3 or a1 == a3 or a1 == a2:
print('Равнобедренный')
else:
print('Разносторонний')
# Вывод:
1
3
2
Разносторонний
Самописный калькулятор
Напишите программу, которая считывает с клавиатуры два целых числа и строку. Если эта строка является обозначением одной из четырёх математических операций (+, -, *, /), то выведите результат применения этой операции к введённым ранее числам, в противном случае выведите «Неверная операция». Если пользователь захочет поделить на ноль, выведите текст «На ноль делить нельзя!».
a1 = int(input())
a2 = int(input())
a3 = input()
if a3 == '/' and a2 == 0:
print('На ноль делить нельзя!')
elif a3 == '/':
print(a1 / a2)
elif a3 == '+':
print(a1 + a2)
elif a3 == '-':
print(a1 - a2)
elif a3 == '*':
print(a1 * a2)
else:
print('Неверная операция')
# Вывод:
3
6
+
9
Цветовой микшер
Красный, синий и желтый называются основными цветами, потому что их нельзя получить путем смешения других цветов. При смешивании двух основных цветов получается вторичный цвет:
- если смешать красный и синий, то получится фиолетовый;
- если смешать красный и желтый, то получится оранжевый;
- если смешать синий и желтый, то получится зеленый.
Напишите программу, которая считывает названия двух основных цветов для смешивания. Если пользователь вводит что-нибудь помимо названий «красный», «синий» или «желтый», то программа должна вывести сообщение об ошибке. В противном случае программа должна вывести название вторичного цвета, который получится в результате.
a1 = input() a2 = input() if a1 == 'красный': if a2 == 'красный': print('красный') elif a2 == 'желтый': print('оранжевый') elif a2 == 'синий': print('фиолетовый') elif a1 == 'желтый': if a2 == 'красный': print('оранжевый') elif a2 == 'желтый': print('желтый') elif a2 == 'синий': print('зеленый') elif a1 == 'синий': if a2 == 'красный': print('фиолетовый') elif a2 == 'желтый': print('зеленый') elif a2 == 'синий': print('синий') if a1 not in ('синий', 'красный', 'желтый') or a2 not in ('синий', 'красный', 'желтый'): print('ошибка цвета') # Вывод: красный синий фиолетовый
Альтернативный вариант:
a, b = input(), input() if (a == 'красный' and b == 'синий') or (a == 'синий' and b == 'красный'): print('фиолетовый') elif (a == 'красный' and b == 'желтый') or (a == 'желтый' and b == 'красный'): print('оранжевый') elif (a == 'синий' and b == 'желтый') or (a == 'желтый' and b == 'синий'): print('зеленый') else: print('ошибка цвета') # Вывод: зеленый оранжевый ошибка цвета
Пересечение отрезков
На числовой прямой даны два отрезка: [a1; b1] и [a2; b2]. Напишите программу, которая находит их пересечение.
Пересечением двух отрезков может быть:
- отрезок;
- точка;
- пустое множество.
a1 = int(input())
b1 = int(input())
a2 = int(input())
b2 = int(input())
if a1 == b2:
print(a1)
elif a2 == b1:
print(b1)
elif a1 <= a2 and b1 >= b2:
print(a2, b2)
elif a2 <= a1 and b2 >= b1:
print(a1, b1)
elif a2 < b1 and b2 >= a1:
if b2 > b1:
print(a2, b1)
else:
print(a1, b2)
elif a1 < b2 and b1 >= a2:
if b1 > b2:
print(a1, b2)
else:
print(a2, b1)
else:
print('пустое множество')
# Вывод:
1
2
1
3
1 2
Альтернативный вариант:
a1, b1, a2, b2 = int(input()), int(input()), int(input()), int(input())
if min(b1, b2) < max(a1, a2):
print('пустое множество')
elif min(b1, b2) == max(a1, a2):
print(min(b1, b2))
else:
print(max(a1, a2), min(b1, b2))
# Вывод:
3
7
156
200
пустое множество
И, напоследок, как делать не надо ))
a1, b1, a2, b2 = int(input()), int(input()), int(input()), int(input())
if a1 < a2 and b1 < b2 and b1 > a2:
print(a2, b1)
elif a1 < a2 and b1 < b2 and a2 != b1 and b1 > a2:
print(a2, b1)
elif a1 < a2 and b1 == a2 and b1 < b2:
print(b1)
elif a2 < a1 and b2 == a1 and b2 < b1: print(b2) elif a1 > a2 and a1 < b2 and b1 > a1 and b1 < b2:
print(a1, b1)
elif a1 == a2 and b1 < b2:
print(a1, b1)
elif a2 == a1 and b2 < b1:
print(a2, b2)
elif a1 < a2 and b1 == b2:
print(a2, b2)
elif a1 == a2 and b2 < b1:
print(a1, b2)
elif a1 < a2 and b1 > b2 and a1 < b2:
print(a2, b2)
elif a1 < a2 and b1 > b2 and a1 > b2:
print(a1, b1)
elif a2 < a1 and b1 < b2 and b1 > a1:
print(a1, b1)
elif a2 < a1 and b1 < b2 and b1 < a2:
print(a2, b2)
elif a1 < a2 and b1 < b2 and b1 < a2 and a1 < b2 and b2 < b1: print(a2, b2) elif a1 == a2 and b1 == b2: print(a1, b1) elif a1 > a2 and b1 > a2 and b2 < b1 and a1 < b2: print(a1, b2) elif a1 > a2 and b1 == b2:
print(a1, b1)
elif a1 > a2 and b1 > b2 and a1 < b2: print(a1, a2, ) elif a1 > a2 and a1 < b2 and a2 < b1:
print(a1, a2)
elif a1 < a2 and a1 < b2 and b1 < a2 and b1 < b2 and b1 > a2:
print(b1, a2)
else:
print('пустое множество')
# Вывод:
1
3
4
8
пустое множество
Loading…
- Главная
- О нас
- Новости
- РАЗВИВАЕМСЯ С МЕТАШКОЛОЙ
Меташкола (http://www.metaschool.ru ) приглашает на бесплатные интернет-конкурсы, интернет-олимпиады, шахматные онлайн-турниры, вебинары для учителей и родителей.
БЕСПЛАТНЫЕ ИНТЕРНЕТ-КОНКУРСЫ (13)
3 ноября. Русский язык: «Словосочетание»
4 ноября. Английский язык: «Halloween 2020»
5 ноября. История: «Город-герой Смоленск»
6 ноября. Химия: «Химия поверхностно-активных веществ»
7 ноября. Музыка: «Инструменты симфонического оркестра. Флейта»
8 ноября. Китайский язык: «Утренняя зарядка на китайском»
9 ноября. Русский язык: «Части речи»
10 ноября. Шахматы: «Эндшпиль со слоном»
11 ноября. Немецкий язык: «Laternenumzug»
12 ноября. Физика: «Законы Ньютона»
13 ноября. Программирование: «Крошка Питон: Работа над ошибками»
14 ноября. Окружающий мир: «Страны Азии»
15 ноября. Математика: «Судоку»
БЕСПЛАТНЫЕ ИНТЕРНЕТ-ОЛИМПИАДЫ (3)
16-18 ноября. Китайский язык: «Осенняя интернет-олимпиада по китайскому языку для 0-2 уровней»
19-22 ноября. Немецкий язык: «Осенняя интернет-олимпиада по немецкому языку для 0-3 уровней»
23-28 ноября. Английский язык: «Осенняя интернет-олимпиада по английскому языку для 0-5 уровней»
БЕСПЛАТНЫЕ ШАХМАТНЫЕ ОНЛАЙН-ТУРНИРЫ (3)
15 ноября. «XLIII Тренировочный шахматный онлайн-турнир»
22 ноября. «XLIII Квалификационный шахматный онлайн-турнир»
29 ноября. «IX Квалификационный шахматный онлайн-турнир «Бронзовая лига»»
БЕСПЛАТНЫЕ ВЕБИНАРЫ ДЛЯ УЧИТЕЛЕЙ И РОДИТЕЛЕЙ (8)
13 ноября. Психология: «Формирование мотивации к обучению: пошаговое руководство для учителей и родителей»
18 ноября. Русский язык: «Развиваем речь. Учимся создавать текст»
23 ноября. Математика: «Подготовка к ОГЭ по математике для 8 и 9 классов. Неравенства. Квадратные корни»
24 ноября. Математика: «Делимость в 3-6 классах» (для учителей, сертификат)
25 ноября. Русский язык: «Как помочь ребенку научиться читать быстро и правильно»
26 ноября. Математика: «Тригонометрическое уравнение во второй части профильного ЕГЭ по математике»
26 ноября. Математика: «Уравнения с модулем в 6-9 классах» (для учителей, сертификат)
27 ноября. Психология: «Как предотвратить психологические проблемы у школьников? Практические рекомендации для педагогов и родителей»
Дата публикации — 03.11.2020
На чем чем только не писал стратегии — На VBA Excel, VB.NET (тогда еще так назывался), C#, C++. Не обошлось и без участия скриптовых языков Java Script, Lua. Не обошлось и без специализированных языков, R, например — вот где тягомотина по исполнению и большая помойка пакетов. Мож там и есть бриллианты, но кто будет искать бриллианты в помойке.) MQL4 -5 — эти, г… но полное — это не делай, туда не ходи — нах такие языки. Еще и другие были, всех и не перечислишь.
Лет, этак 5-7 тому перешел на Python (С++ тоже не забываю)). Python понравился резко и сразу. Стратегий на нем пока не писал, но моделировал много. Сейчас планирую сделать первую, для Binance. Ага, криптой торговать собираюсь. Я, так полагаю, что МОЕХ умер (или почти), и делать там абсолютно нечего. Умирал он долго и мучительно, аж с 14-го года. Жаль, вообще то, неплохой был рынок.
Итак, чем хорош Python. Это, в первую очередь, нулевой порог входа — вчера вы еще ничего не знали о нем, а сегодня уже нейросети и прочие machine learning применяете для своих задач. Да, с переменным успехом, но, ведь, применяете.) Не, ну, для тех, кто не в ладах с обычной логикой, любой язык программирования противопоказан, но не о них речь.
Всяких пакетов с самой разнообразной математикой море, все структурировано, все описано — бери, пользуйся. Такого количества и разнообразия библиотек на любой вкус и цвет ни для одного языка нет. Многие пакеты — это скомпилированные С++ программы, и о их быстродействии можно не беспокоится. Python здесь используется как язык сценариев, и его вклад в быстродействие минимален. Само совершенство. ©
Где-то читал, что в NASA Python основной язык программирования, а то, что критично для быстродействия, вначале моделируется и отрабатывается на Python, а потом отдельные куски кода переписываются на С++.
Многие причитают — ах, на питон нет тестера стратегий. Окститесь, ребята. Тестер стратегий не более чем цикл вида:
while(i < Iend):
# ваша стратегия
i = i +1
Все. Больше в тестере стратегии ничего нет. Получить любые данные из стратегии и потом посчитать нужные вам параметры, я полагаю, вообще не проблема. Я, скажем, получаю по каждой сделке больше 10—ти параметров. потом обрабатывайте как душе угодно, стройте графики (графики построить в Python тоже не проблема)) + вывод на экран массы параметров теста — тоже не меньше десятка. Короче, делайте что хотите.
Вот примеры графических результатов.







Это все перед и по результатам тестирования. У меня этих графиков море, с каждого теста. Здесь случайно выбранные.
Тест на ~200 тыс свечей пролетает за несколько секунд, включая все — компиляцию, получение данных из базы данных, построение индикаторов и, вестимо, работу самой стратегии + печать параметров и вывод графиков на экран. Быстродействия им мало.)) Смешно.
Теперь о быстродействии Python.
Первый вопрос — а на хрена вам быстродействие?
Если у вас HFT, вопрос отпадает — у вас арендованный или свой сервер на самой бирже, прямое подключение к бирже без инета по локальной сети, программа на С++ или Ассемблере, обработка видеокартой или даже своем процессоре, и прочие радости. Нет? Тогда быстродействия Python за глаза хватит.
Допустим, у вас интрадей и сделки по несколько минут. Так подать заявку из Python — это микросекунды, идти до биржи и обрабатываться биржей будет дольше. Сделка от нескольких минут? — и чего вам тогда миллисекунды? — опять до биржи будет идти дольше. Вклад в ваши прибыль/убыток мизерный.
Хорошо, вы играете на 5-15 минутах или на часах-сутках — здесь вообще миллисекунды не играют никакой рояли.
Если вы считаете иначе — ну, ну, ваше право, разумеется. Но если вы все-таки считаете иначе, то скорее всего, дело не в задержках, а в самой стратегии. Отсутствие задержек вас никак не спасет.
В общем, Python — это лучший выбор как для моделирования, так и для реализации торговых систем. За очень редкими исключениямя.
Че-то я еще хотел написать в защиту Python от нападок лохов, но пока писал, забыл. Если что, дополню.
PS Да, Python достаточно быстр, но если вы хотите по ходу пьесы выводить на экран много данных и еще и графики, то операции ввода/вывода в любом языке занимают много времени — самые длительные по времени процедуры. Их следует по возможности избегать в любой ТС на любом языке.
- Главная
- Блог
- Курсы
- Курс. Программирование на Python.
- Курс. Автоматизация тестирования.
- Курс. Работа с Git.
- Задачник
- О проекте
Задачник 2021
PYTHON / WORKBOOK
Задачник 2021
Сборник задач с решениями по программированию на языке Python.

vk.com/smartiqa_python -> Наше сообщество по Python в Vkontakte
t.me/SmartiqaPython -> Наш канал по Python в Телеграме
Содержание
Как вам материал?
Также может быть интересно
Donation сайту smartiqa.ru
Все материалы проекта Smartiqa были и остаются бесплатными. Пожертвованные деньги пойдут на оплату хостинга, продление доменного имени, администрирование и развитие сайта.
Доступны 2 способа осуществления пожертвования:
1. Оплата через сайт сервиса «ЮMoney», что гарантирует корректность и безопасность процедуры оплаты.
2. Перевод напрямую на карту Тинькофф.
Обратите внимание, что в обоих случаях перевод осуществляется физическому лицу.
Donation сайту smartiqa.ru
Все материалы проекта Smartiqa были и остаются бесплатными. Пожертвованные деньги пойдут на оплату хостинга, продление доменного имени, администрирование и развитие сайта.
Доступны 2 способа осуществления пожертвования:
1. Оплата через сайт сервиса «ЮMoney», что гарантирует корректность и безопасность процедуры оплаты.
2. Перевод напрямую на карту Тинькофф.
Обратите внимание, что в обоих случаях перевод осуществляется физическому лицу.

Перевод на карту Тинькофф
Получатель: Татьяна Васильевна К.
Номер карты Тинькофф: 5536 9137 5246 3444
Номер телефона: +79529984747
Так же можно воспользоваться QR-кодом выше.
Спасибо!
Мы можем оповещать вас о важных статьях и новостях.

Дайджест Smartiqa
Мы можем оповещать вас о важных статьях и новостях. Как правило, это происходит в конце месяца — мы отбираем лучший контент и высылаем его вам на электронную почту.
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности.