ish_models 0.0.33.122 → 0.0.33.128

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6b4d660c8ce0a475ac217dff07cb2a71c5d9f6c69793a831e4ba20945fd0f948
4
- data.tar.gz: acb5c4910ca16aaaacd7c346188892b2469e0570111077f63906972d06bcf324
3
+ metadata.gz: a5abe58e2f0a85264e21a4e9f29628e9779df734de5853030678582216f8ef46
4
+ data.tar.gz: bb3ff694e571ae054038bfb72383c320f4e81feb46036d33f26ef369809758ed
5
5
  SHA512:
6
- metadata.gz: cc7a8c601704bd3648d18782d443ee306f42e1964110bb3636674bc6daa04c12147317511547e4d56dc42c9607ddcf3f70f8ae96b4aff56b07d8deb2bd11a36f
7
- data.tar.gz: 1b3337866b8130be30e58b03c8451a507c7807fd04f8a1f47a1576865ba5ad44c23f6cbb34ba9abd5673b7ef4aead067b49be6c9bfaf31585f7a9aaf373e19f3
6
+ metadata.gz: c392fd667cbfa30fd5066cb6431b92bc3c775da4a0f15fb0c2948c81f612b6695888f3d76346e9464f8ce32a01ef3017593604c6a14f12339e3f1a46f1dfdf55
7
+ data.tar.gz: 3d6d42a6b3624eb87bb165b14bd5e7c20d9ce7ce474ea2ba8f8b63bfa324aa5490b2ea210e0164d0a815a5ad978870ed03396416cf646dbfa436d72b186824bb
data/lib/gallery.rb CHANGED
@@ -8,6 +8,7 @@ class Gallery
8
8
 
9
9
  field :is_public, type: Boolean, default: false
10
10
  field :is_trash, type: Boolean, default: false
11
+ field :is_done, type: Boolean, default: false
11
12
 
12
13
  field :premium_tier, type: Integer, default: 0 # how many stars need to spend, to get access? 0 = free
13
14
  def is_premium
@@ -0,0 +1,83 @@
1
+
2
+ #
3
+ # * make calls every once in a while
4
+ # * If the option price dips below a threshold, close the position (create the order to buy back the option)
5
+ #
6
+
7
+ # cron job or service? Well, I've historically done service. Cron is easier tho. The wiring should be for both.
8
+
9
+ # https://developer.tdameritrade.com/option-chains/apis/get/marketdata/chains
10
+ # FVRR_082021P200
11
+
12
+ require 'httparty'
13
+
14
+ module Ish::Ameritrade
15
+
16
+ CONFIG = {
17
+ underlying_downprice_tolerance: 0.14,
18
+ }
19
+
20
+ # def self.main_fvrr_1
21
+ # query_hash = {
22
+ # apikey: ::TD_AME[:apiKey],
23
+ # symbol: 'FVRR',
24
+ # contractType: 'PUT',
25
+ # strike: 200,
26
+ # fromDate: '2021-08-20',
27
+ # toDate: '2021-08-20',
28
+ # }
29
+ # response = ::Ish::Ameritrade::Api.get_option_chain(query_hash)
30
+ # puts! response, 'ze repsonse'
31
+ # end
32
+
33
+ ## AKA stop loss
34
+ def self.main_fvrr_2
35
+ # response = ::Ish::Ameritrade::Api.get_quote({ symbol: 'FVRR_082021P200' })
36
+
37
+ # @TODO: pass the info on the position in here.
38
+ strike_price = 200
39
+
40
+ # What is my risk tolerance here? 14% down movement of the underlying
41
+ response = ::Ish::Ameritrade::Api.get_quote({ symbol: 'FVRR' })
42
+ last_price = response[:lastPrice]
43
+ tolerable_price = ( strike_price * (1-CONFIG[:underlying_downprice_tolerance]) )
44
+
45
+ if last_price < tolerable_price
46
+ puts! 'LIMIT TRIGGERED, LETS EXIT' # @TODO: send an email
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ class Ish::Ameritrade::Api
53
+ include ::HTTParty
54
+ base_uri 'https://api.tdameritrade.com'
55
+
56
+ def self.get_quote opts
57
+ # validate input
58
+ %i| symbol |.each do |s|
59
+ if !opts[s]
60
+ raise Ish::InputError.new("invalid input, missing #{s}")
61
+ end
62
+ end
63
+
64
+ path = "/v1/marketdata/#{opts[:symbol]}/quotes"
65
+ out = self.get path, { query: { apikey: ::TD_AME[:apiKey] } }
66
+ out = out.parsed_response[out.parsed_response.keys[0]].symbolize_keys
67
+ out
68
+ end
69
+
70
+ def self.get_option_chain opts
71
+ # validate input
72
+ %i| apikey symbol contractType strike fromDate toDate |.each do |s|
73
+ if !opts[s]
74
+ raise Ish::InputError.new("invalid input, missing #{s}")
75
+ end
76
+ end
77
+
78
+ path = '/v1/marketdata/chains'
79
+ out = self.get path, { query: opts }
80
+ out
81
+ end
82
+
83
+ end
@@ -0,0 +1,3 @@
1
+
2
+ class Ish::InputError < RuntimeError
3
+ end
data/lib/ish_models.rb CHANGED
@@ -33,9 +33,11 @@ require 'gameui/map.rb'
33
33
  require 'gameui/marker.rb'
34
34
  require 'gameui/premium_purchase.rb'
35
35
 
36
+ require 'ish/ameritrade'
36
37
  require 'ish/covered_call'
37
38
  require 'ish/crawler.rb'
38
39
  require 'ish/gallery_name.rb'
40
+ require 'ish/input_error.rb'
39
41
  require 'ish/iron_condor.rb'
40
42
  require 'ish/iron_condor_watcher.rb'
41
43
  require 'ish/payment.rb'
@@ -61,7 +63,7 @@ require 'country.rb'
61
63
  require 'event.rb'
62
64
  require 'feature.rb'
63
65
  require 'gallery.rb'
64
- require 'gallery2.rb'
66
+ # require 'gallery2.rb'
65
67
  require 'manager.rb'
66
68
  require 'newsitem.rb'
67
69
  require 'photo.rb'
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ish_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.33.122
4
+ version: 0.0.33.128
5
5
  platform: ruby
6
6
  authors:
7
7
  - piousbox
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2017-05-10 00:00:00.000000000 Z
@@ -114,17 +114,18 @@ files:
114
114
  - lib/event.rb
115
115
  - lib/feature.rb
116
116
  - lib/gallery.rb
117
- - lib/gallery2.rb
118
117
  - lib/gameui.rb
119
118
  - lib/gameui/map.rb
120
119
  - lib/gameui/marker.rb
121
120
  - lib/gameui/premium_purchase.rb
122
121
  - lib/ish/alphavantage_stockwatcher.rb
122
+ - lib/ish/ameritrade.rb
123
123
  - lib/ish/campaign.rb
124
124
  - lib/ish/covered_call.rb
125
125
  - lib/ish/covered_call_watcher.rb
126
126
  - lib/ish/crawler.rb
127
127
  - lib/ish/gallery_name.rb
128
+ - lib/ish/input_error.rb
128
129
  - lib/ish/invoice.rb
129
130
  - lib/ish/iron_condor.rb
130
131
  - lib/ish/iron_condor_watcher.rb
@@ -154,7 +155,7 @@ homepage: http://wasya.co
154
155
  licenses:
155
156
  - MIT
156
157
  metadata: {}
157
- post_install_message:
158
+ post_install_message:
158
159
  rdoc_options: []
159
160
  require_paths:
160
161
  - lib
@@ -169,8 +170,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
170
  - !ruby/object:Gem::Version
170
171
  version: '0'
171
172
  requirements: []
172
- rubygems_version: 3.0.6
173
- signing_key:
173
+ rubygems_version: 3.2.25
174
+ signing_key:
174
175
  specification_version: 4
175
176
  summary: models of ish
176
177
  test_files: []
data/lib/gallery2.rb DELETED
@@ -1,101 +0,0 @@
1
-
2
- class Gallery2
3
- include ::Mongoid::Document
4
- include ::Mongoid::Timestamps
5
- store_in :collection => 'galleries'
6
-
7
- field :is_feature, :type => Boolean, :default => false
8
- field :is_public, :type => Boolean, :default => false
9
- field :is_done, :type => Boolean, :default => false
10
- field :is_trash, :type => Boolean, :default => false
11
-
12
- default_scope ->{ where({ :is_public => true, :is_trash => false }).order_by({ :created_at => :desc }) }
13
- index({ :is_public => 1, :is_trash => -1, :order_by => 1 })
14
-
15
- field :x, :type => Float
16
- field :y, :type => Float
17
-
18
- def self.list conditions = { :is_trash => false }
19
- out = self.where( conditions ).order_by( :created_at => :desc )
20
- [['', nil]] + out.map { |item| [ "#{item.created_at.strftime('%Y%m%d')} #{item.name}", item.id ] }
21
- end
22
-
23
- belongs_to :site
24
- validates :site, :presence => true
25
-
26
- belongs_to :user_profile, :optional => true, :class_name => 'IshModels::UserProfile'
27
- field :username, :type => String
28
-
29
- field :name, :type => String
30
- validates :name, :uniqueness => true # , :allow_nil => false
31
-
32
- field :galleryname, :type => String
33
- index({ :galleryname => -1 }, { :unique => true })
34
- embeds_many :gallery_names, :class_name => 'Ish::GalleryName'
35
-
36
- field :subhead, :type => String
37
- field :descr, :type => String, :as => :description
38
- field :lang, :type => String, :default => 'en'
39
-
40
- has_many :photos
41
-
42
- belongs_to :tag, :optional => true
43
- belongs_to :city, :optional => true
44
- belongs_to :venue, :optional => true
45
-
46
- has_many :newsitems
47
-
48
- set_callback(:create, :before) do |doc|
49
- if doc.user_profile && doc.user_profile.username
50
- doc.username = doc.user_profile.username
51
- end
52
- doc.galleryname ||= doc.id.to_s
53
-
54
- #
55
- # newsitems
56
- #
57
- if doc.is_public
58
- # for the sites
59
- if doc.site
60
- sites = Site.where( :domain => doc.site.domain )
61
- sites.each do |site|
62
- n = Newsitem.new {}
63
- n.gallery = doc
64
- n.username = doc.username
65
- site.newsitems << n
66
- flag = site.save
67
- if !flag
68
- puts! site.errors
69
- end
70
- end
71
- end
72
- # for the city
73
- if doc.city
74
- n = Newsitem.new {}
75
- n.gallery = doc
76
- n.city = doc.city
77
- n.username = doc.username
78
- n.save
79
- end
80
- end
81
-
82
- #
83
- # cache
84
- #
85
- if doc.site
86
- doc.site.touch
87
- end
88
- if doc.city
89
- doc.city.touch
90
- end
91
-
92
- end
93
-
94
- # @deprecated, use Gallery::ACTIONS
95
- def self.actions
96
- [ 'show_mini', 'show_long', 'show' ]
97
- end
98
- ACTIONS = [ 'show_mini', 'show_long', 'show' ]
99
-
100
- end
101
-