Рубрики
Uncategorized

Помощь

Вы находитесь здесь: https://investo.ru/?p=47

Мы всегда рады вам помочь.

Рубрики
Uncategorized

Python трейдера или почему йена – лох?

Мне нравится язык программирования Python за простоту и элегантность с которой он позволяет решать возникающие задачи. Вот, к примеру, понадобился мне список всех кросс-курсов по 7 основным валютам, раньше, я бы составлял его вручную, несколько десятков инструментов, рискуя перепутать порядок расположения валют (как правильно ‘CHF_GBP’ или ‘GBP_CHF’ ?) пропустить какой-то кросс или банально допустить опечатку.

Теперь я знаю Python!

Предупреждение!
Форекс - игра с отрицательным математическим ожиданием!

Оцените лаконичность: имеем два цикла в четырех строчках кода. Вначале задаем список основных валют, из которого извлекаем названия методом .pop() и пустой список в который добавляем кросс-курсы методом .append()

currency = ['EUR', 'GBP', 'AUD', 'NZD', 'CAD', 'CHF', 'JPY']
cross = []

while currency:                       # цикл пока список не пустой
  c1 = currency.pop(0)                # вырезаем первый(0) элемент 'EUR'
  for c2 in currency:                 # и объединяем с оставшимися
    cross.append( c1 + '_' + c2 )     # получаем 'EUR_GBP' и т.д.

print( cross )

Результат:

['EUR_GBP',
 'EUR_AUD',
 'EUR_NZD',
 'EUR_CAD',
 'EUR_CHF',
 'EUR_JPY',
 'GBP_AUD',
 'GBP_NZD',
 'GBP_CAD',
 'GBP_CHF',
 'GBP_JPY',
 'AUD_NZD',
 'AUD_CAD',
 'AUD_CHF',
 'AUD_JPY',
 'NZD_CAD',
 'NZD_CHF',
 'NZD_JPY',
 'CAD_CHF',
 'CAD_JPY',
 'CHF_JPY']

Тот случай, когда составлять такой список вручную, заняло бы больше времени, чем написание небольшого скрипта.

Возвращаясь к вопросу ‘CHF_GBP’ или ‘GBP_CHF’, достаточно посмотреть на порядок расположения валют в нашем списке currency в самой первой строчке кода. Первая валюта в кросс-курсе та, что левее в списке. Правильно, конечно же ‘GBP_CHF’.

Йена расположена в конце списка, у нее нет ни одного кросс-курса в котором она стояла бы на первом месте. Евро, напротив, мажор: по отношению к остальным валютам он всегда стоит на первом месте и у него больше всего кросс-курсов.

Полный список всех инструментов (7 основных валют + 21 кросс-курс) выглядит так:

instruments = ('EUR_USD', 'GBP_USD', 'AUD_USD', 'NZD_USD', 'USD_CAD', 'USD_CHF', 'USD_JPY',
               'EUR_GBP', 'EUR_AUD', 'EUR_NZD', 'EUR_CAD', 'EUR_CHF', 'EUR_JPY', 'GBP_AUD',
               'GBP_NZD', 'GBP_CAD', 'GBP_CHF', 'GBP_JPY', 'AUD_NZD', 'AUD_CAD', 'AUD_CHF',
               'AUD_JPY', 'NZD_CAD', 'NZD_CHF', 'NZD_JPY', 'CAD_CHF', 'CAD_JPY', 'CHF_JPY')

Точнее будет сказать, что это уже не список, а кортеж, обратите внимание на круглые скобки. Кортеж неизменяемый тип данных, у него отсутствуют знакомые нам методы pop и append, зато он быстр в циклах и переборах.

Типов данных не так много, из встроенных стоит упомянуть еще словарь, он обозначается фигурными скобками { } и позволяет обращать к данным по ключу (например, по названию инструмента, кортежи идеально заходят в качестве ключей).

Если разобраться с основными типами данных, их методами, различиями, плюсами и минусами — считай знаешь половину python ))

Простейший цикл по всем инструментам, сохраняющий данные в словарь выглядит так:

datas = {}
for i in instruments:
  datas[i] = 'какие-то данные по ' + i

# в datas['EUR_USD'] будут храниться 'какие-то данные по EUR_USD'.

Бесплатная часть закончена, введите номер кредитной карты и pin-код, что бы читать дальше…

Ссылка https://investo.ru/?p=36