Thursday, June 4, 2020

iqoption robot code sample 1 sma5 trade

โคด ตั้วอย่าง
https://colab.research.google.com/drive/1DXkTXZ-eiQ1Jio_tzyuTsHjdy0R5IQLT#scrollTo=2yu0huE3czMh&line=216&uniqifier=1


import os
from iqoptionapi.stable_api import IQ_Option
import logging
import time
import secrets
from datetime import datetime as dt
import numpy as np
import matplotlib.pyplot as plt
# from mpl_finance import candlestick_ohlc
import pandas as pd
import matplotlib.dates as mpl_dates
import talib

import plotly.graph_objs as go
from plotly.offline import plot

from pyti.smoothed_moving_average import smoothed_moving_average as sma
from pyti.exponential_moving_average import exponential_moving_average as ema
global short_time
global b
global result
global x
short_time=0
cnt=0
result=0
x=0
# logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
print("login...")
I_want_money=IQ_Option("xxxx@hotmail.com","12345678aabbccddeeff")
check, reason=I_want_money.connect()#connect to iqoption
print(check)#, reason)
#I_want_money.connect()#connect to iqoption
print(I_want_money.reset_practice_balance())
#goal="USDCHF-OTC"
class TradingModel:
  def __init__(selfsymbol,size,maxdict,Money,x,expirations_mode):
    self.symbol = symbol[x]
    self.size = size
    self.maxdict = maxdict
    self.Money=Money
    self.expirations_mode= expirations_mode
    self.df = self.getData()

  # Returns true if stream1 crossed under stream2 in most recent candle, stream2 can be integer/float or data arra



  def getData(self):

        # print("start stream...")
    I_want_money.start_candles_stream(self.symbol,self.size,self.maxdict)
        #DO something
    # print("Please wait now collecting candlestick data...",self.symbol)

    candles=I_want_money.get_realtime_candles(self.symbol,self.size)
    inputs = {
                        'time': np.array([]).astype(int),
                        'open': np.array([]).astype(float),
                        'high': np.array([]).astype(float),
                        'low': np.array([]).astype(float),
                        'close': np.array([]).astype(float),
                        'volume': np.array([]).astype(float)
                }
    for timestamp in candles:
        #    ((datetime.utcfromtimestamp(int(data_ohlc['from'])).strftime('%Y-%m-%d %H:%M:%S'))
                # inputs["time"]=np.append(inputs["time"],candles[((datetime.utcfromtimestamp(int(candles['from'])).strftime('%Y-%m-%d %H:%M:%S'))] )
        inputs["time"]=np.append(inputs["time"],candles[timestamp]['from'] )
        inputs["open"]=np.append(inputs["open"],candles[timestamp]["open"] )
        inputs["high"]=np.append(inputs["high"],candles[timestamp]["max"] )
        inputs["low"]=np.append(inputs["low"],candles[timestamp]["min"] )
        inputs["close"]=np.append(inputs["close"],candles[timestamp]["close"] )
        inputs["volume"]=np.append(inputs["volume"],candles[timestamp]["volume"] )
    df = pd.DataFrame(inputs)#,columns=['time', 'open', 'high', 'low', 'close', 'volume'])#,index=0, parse_dates=True)

    df=df.sort_index()
  
    df['H-L'] = df['high'] - df['low']
    df['O-C'] = df['open']-df['close'
    df['SMA5'] = df['close'].shift(1).rolling(window = 5).mean()
    df['newATR'] = talib.ATR(df['high'], df['low'], df['close'], timeperiod=14)

    # os.system('cls')  # on windows
    # print(df.loc[35:])
    return df

  def strategy(self):

    df = self.df


    print(df['high'].iloc[self.maxdict-3],round(df['SMA5'].iloc[self.maxdict-3],6),df['low'].iloc[self.maxdict-3])
    print(df['high'].iloc[self.maxdict-3]-round(df['SMA5'].iloc[self.maxdict-3],6),df['low'].iloc[self.maxdict-3]-round(df['SMA5'].iloc[self.maxdict-3],6)," atr ",df['newATR'].max())
    print("high to SMA5\t",round(df['high'].iloc[self.maxdict-3]-df['SMA5'].iloc[self.maxdict-3]-(1.1*df['newATR'].max()),6))
    print("SMA5 to low \t",round(df['SMA5'].iloc[self.maxdict-3]-df['low'].iloc[self.maxdict-3]-(1.1*df['newATR'].max()),6))
    distantce_high_to_sma=round(df['high'].iloc[self.maxdict-3]-df['SMA5'].iloc[self.maxdict-3]-(1.1*df['newATR'].max()),6)
    distantce_sma_to_low=round(df['SMA5'].iloc[self.maxdict-3]-df['low'].iloc[self.maxdict-3]-(1.1*df['newATR'].max()),6)
    sma_in_candle=df['high'].iloc[self.maxdict-3] > df['SMA5'].iloc[self.maxdict-3] > df['low'].iloc[self.maxdict-3]
    bearish_candle=df['O-C'].iloc[self.maxdict-2]>0  and distantce_sma_to_low>0
    bullish_candle=df['O-C'].iloc[self.maxdict-2]<0 and distantce_high_to_sma>0
    lower_wick_bull=(df['open']-df['low']).iloc[self.maxdict-3]
    upper_wick_bull=(df['high']-df['close']).iloc[self.maxdict-3]
    lower_wick_bear=(df['close']-df['low']).iloc[self.maxdict-3]
    upper_wick_bear=(df['high']-df['open']).iloc[self.maxdict-3]
    print(lower_wick_bull,upper_wick_bull)
    print(lower_wick_bear,upper_wick_bear)
    

    for i in range(1len(df['close'])):
      if distantce_high_to_sma>df['newATR'].max():
        print("candle far above SMA5",distantce_high_to_sma)
        self.sell()
        break

      if distantce_sma_to_low>df['newATR'].max():
        print("candle far below SMA5",distantce_sma_to_low)
        self.buy()
        break


  

  def buy(self):
    Money=self.Money
    ACTIVES=self.symbol
    ACTION="call"#or "put"


    check,id=I_want_money.buy(Money,ACTIVES,ACTION,self.expirations_mode)

    if check:
       print(ACTIVES," !buy!",self.Money)
    else:
       print(ACTIVES," buy fail")
       pass#time.sleep(5)

    result=(I_want_money.check_win_v3(id))
    print(result)
##    return result



  def sell(self):
    Money=self.Money
    ACTIVES=self.symbol
    ACTION="put"#or "put"


    check,id=I_want_money.buy(Money,ACTIVES,ACTION,self.expirations_mode)

    if check:
       print(ACTIVES," !sell!",self.Money)
    else:
       print(ACTIVES," sell fail")
       pass#time.sleep(5)

    result=(I_want_money.check_win_v3(id))
    print(result)
##    return result

  # def unloadcandle(self):
  #   print("stop candle")
  #   I_want_money.stop_candles_stream(self.symbol,self.size)


def Main():

    b=0
    s=0
    martinggale=1
    balance=I_want_money.get_balance()
    print("balance = ",balance)



##    symbol = ["AUDJPY","EURUSD","EURJPY","GBPUSD","AUDUSD","USDJPY"]
    symbol = ["EURUSD","NZDUSD","AUDCAD","EURNZD","AUDJPY","GBPAUD","GBPCAD"]
    cnt=len(symbol)
    # print(cnt," SYMBOL IN LIST")

    size=30#"all"#size=[1,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,28800,43200,86400,604800,2592000,"all"]

    maxdict=40
    trigger_level=0
    Money=1000
    randoms=[1,2.5,3]
    martinggale=secrets.choice(randoms)
    Money=Money*martinggale
    print("Invest money = ",Money)


    expirations_mode=2



    remaning_time=I_want_money.get_remaning(expirations_mode)

    model = TradingModel(symbol,
                         size,
                         maxdict,
                         Money,
                         x,
                         expirations_mode)

    model.strategy()




if __name__ == '__main__':
  while check:
    x=x
    Main()
    


iqoption robot ฉบับคนเขียนโปรแกรม ไม่เป็น

หากกล่าวถึงเรื่อง โรบอต ในการเทรด
โดยเฉพาะ กับ Iqoption ด้วยแล้ว
ทุกคนก็ ร้อง ยี้ๆๆๆๆ เข็ด
ก็ ตาม ประสบการณ์ นะครับ
อย่างไรก็ตาม
มันก็ ยังมีข้อดี อยู่บ้าง โปรดอ่านก่อน😝
1. มันเป็น การเรียบเรียง ความคิด หรือ ไอเดีย ในการ เทรด ของเราเอง
เพราะฉนั้น มันจะต้องออกมาจาก ทักษะของเราเอง เมื่อเราฝึก มาอย่างดีแล้ว เรามาเรียบเรียงขั้นตอน ตามลำดับ มันย่อม ไม่ต่างอะไรจากเรา
2.เมื่อ เรา เทรดเอง จะมีอาการเกร็ง เมื่อ ออกไม้ ขนาดใหญ่ บางครั้ง สถานการณ์ พลิกผัน เรา ตื่นเต้น ทำให้ หลุดแผน ในการเทรด ไปบ้าง
การเทรด สำคุัญที่ การวางแผน และดำเนินการ ตามแผนอย่าง รัดกุม
การให้ บอต มาช่วยลดความกดดันเป็นเรื่องที่ดี
3. หลายคน อาจจะคาดหวังว่า โรบอต ในอุดมคติ คือ ไร้ที่ติ ทำได้ ทุกอย่าง
เทรด ย่อม ไม่แพ้ ซึ่ง นั้นเป็นการเข้าใจผิดอย่างมาก
เรา ควบคุม โรบอตได้ แต่ ตลาด เรา ไม่สามารถควบคุม อะไรได้
ผลการเทรด ก็เช่นกันครับ จงเขียนแผน แล้ว ทำตามนั้นซะ
4.เราเทรด บนพื้นฐานความเข้าใจ แล้ว เอา วิธีการมาเรียง เป็นคำสั่ง เงื่อนไข เช่น ถ้าเราแพ้ 3 ครั้งติดกัน เลิกเทรด หยุดเทรด วันนั้น
โรบอต ก็ ต้องทำอย่างนั้นเช่นกันครับ
เอาหละ เราจะมาเริ่มกัน
สื่งที่ต้องเตรียม ก่อนจะเขียนโรบอต
ศึกษา หรือ ติดตั้ง สคริป โปรแกรม ตาม รายการข้างล่างนี้
==================================
must install
==================================
install python 3.83 x86 32bit version
python -m pip install --upgrade pip
pip install configparser
pip install matplotlib
pip install ZigZag
pip install plotly
pip install pyti
pip install finta
search for TA_Lib and download it then install as below
pip install TA_Lib-0.4.18-cp38-cp38-win32.whl
and finally iqoption API
dowload and unzip install as below
python setup.py install
more study from here
==================================
option
==================================
pip install mpl_finance
pip install mpl-finance
pip install mplfinance
zigzag indicator using

Friday, December 27, 2013

What is Ur robot? 


Ur-robot is Universal -robot ,this made by Denmark.and using many factory in Europe.


Ur-robot is robot arm 6 axis imagine to our arm 1 side left or right.That axis consis of

  1. Base similar to our body
  2. Shoulder = our shoulder
  3. elbow = our elbow
  4. wrist 1 = our hand angle turn up down 
  5. writs 2 = our hand turn left right
  6. wrist 3 = our hand angle twist palm
 Whatever 1 hand can reach and do robot also act the same and could be done.
Yes above is basic information what the Ur-robot have

What is the pros and cons of this robot arm

We will say about pros 1st

1.      Now as we know got two size Ur-10,Ur-5 for 10kg and 5kg payload
2.      can work collaborate with human with out any fencing (safety)
3.      light weight robot.
4.      compact size.
5.      ease to install just to carton box when delivery to door
6.      good support and warranty.
7.      easy to program the point.(what you bring it go that what you get that point,quite straight forward to understand)
8.      Maintenance free robot no lubricate is require.

2nd Now we say about Cons

1.      This robot can not run to fast just 1 meter for 2 second only.
2.      after run too fast that will be error occure ,some time we can not guest what will happen.
3.      repeatability is not there spect is error 0.1 mm but actual is 0.5 till 1 mm depend on how fast of speed and acceleration
4.      when we run very fast so need to do fencing
5.      i/o bundle just 10 in 10 out only if we need more or expand i/o we need to find modbus slave device.
6.      Modbus slave device ,is not many are compatible with this robot mostly in the market are act like master device this will made communication data crash lose communication as experience its along well with Beckhoff device.
7.       When want to program more advance is become not fun jobs, because only can do touch screen, it not convenience to type. and this is one cause slow programming
8.      it Europe price (selling in Euro)


 We seen a lot of cons some people already give up but anyway this robot still have the bright future.
As experience some cons item we can eliminate it ,that thing need to consider is
How we installation
how good configuration robot eg, tcp setting offset how much,how weight payload is it near or less than robot can stand. 
all of this cause accuracy of this robot 

What solution we want to integrate

1.      vision system integrate ,pay and free solution.
2.      Expansion I/O with slave PLC.


Ok let see for next episode soon.


Thank you.