Class: JIJI::RmtOperator

Inherits:
Operator show all
Defined in:
lib/jiji/operator.rb

Overview

リアル取引用オペレーター

Instance Attribute Summary collapse

Attributes inherited from Operator

#conf, #draw, #fixed_profit_or_loss, #lose, #positions, #profit_or_loss, #win

Instance Method Summary collapse

Methods inherited from Operator

#flush, #next_rates, #stop, #win_rate

Constructor Details

#initialize(client, logger, trade_result_dao, trade_enable = true, money = nil) ⇒ RmtOperator

コンストラクタ

client

クライアント

logger

ロガー

money

保証金



292
293
294
295
296
297
# File 'lib/jiji/operator.rb', line 292

def initialize( client, logger, trade_result_dao, trade_enable=true, money=nil )
  super(trade_result_dao,money)
  @client = client
  @logger = logger
  @trade_enable = trade_enable
end

Instance Attribute Details

#trade_enableObject

Returns the value of attribute trade_enable.



359
360
361
# File 'lib/jiji/operator.rb', line 359

def trade_enable
  @trade_enable
end

Instance Method Details

#buy(count, pair = :EURJPY, trader = "") ⇒ Object

購入する

count

購入する数量

return

Position



302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
# File 'lib/jiji/operator.rb', line 302

def buy(count, pair=:EURJPY, trader="")
  open_interest_no = nil
  order_no = nil
  if @trade_enable
    JIJI::Util.log_if_error_and_throw( @logger ) {
     rate = @rate[pair]
    # 成り行きで買い

    result = @client.request{ |fx|
      fx.order( JIJI::Util.convert_currency_pair_code_r(pair),
        ClickClient::FX::BUY, count, options={:slippage_base_rate=>rate.bid} )
     }
     open_interest_no = result.open_interest_no
     order_no = result.order_no
   }
 end
  p = super(count, pair, trader)
  p.open_interest_no = open_interest_no
  p.order_no = order_no
  p
end

#commit(position) ⇒ Object

取引を確定する



348
349
350
351
352
353
354
355
356
357
# File 'lib/jiji/operator.rb', line 348

def commit(position)
  if @trade_enable
   JIJI::Util.log_if_error_and_throw( @logger ) {
     @client.request {|fx|
       fx.settle( position.open_interest_no, position.count )
     }
   }
 end
  super(position)
end

#sell(count, pair = :EURJPY, trader = "") ⇒ Object

売却する

count

売却する数量

return

Position



326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
# File 'lib/jiji/operator.rb', line 326

def sell(count, pair=:EURJPY, trader="")
  open_interest_no = nil
  order_no = nil
  if @trade_enable
   JIJI::Util.log_if_error_and_throw( @logger ) {
     rate = @rate[pair]
     # 成り行きで売り

    result = @client.request {|fx|
      fx.order( JIJI::Util.convert_currency_pair_code_r(pair),
        ClickClient::FX::SELL, count, options={:slippage_base_rate=>rate.ask} )
     }
     open_interest_no = result.open_interest_no
     order_no = result.order_no
   }
 end
  p = super(count, pair, trader)
  p.open_interest_no = open_interest_no
  p.order_no = order_no
  p
end