728x90

인증방식의 종류(Cookie & Session & Token)


서버가 클라이언트 인증을 확인하는 방식은 대표적으로 쿠키,세션,토큰 3가지 방식이 존재합니다.

 

 

Cookie인증

쿠키는 Key-Value 형식의 여러개의 문자열 형식이라 생각하면 됩니다.

우리가 크롬을 통해 네이버라는 웹사이트에 방문할경우, 네이버가 사용하고 있는 서버를 통해 클라이언트의 브라우저에

설치되는 작은 기록 정보 파일입니다.

각 사용자마다 브라우저에 정보를 저장하니 고유 정보 식별이 가능한것

 

(크롬 개발자모드 F12를 통해 확인할수있다)

 

Cookie 인증방식

 

1.클라이언트가  서버에 요청(requests)을 보낸다.

 

2.서버는 클라이언트 접속요청에 대한 응답(response)을 작성하는데, 클라이언트 측에 저장하고 싶은 정보의 응답헤더의 Set-Cookie에 담는다

 

3. 이후 클라이언트는 서버에 대한 요청(requests)를 보낼때마다 2번 과정에서 설정한 쿠키값들을 요청헤더(requests header)에 담아서 보내고 서버는 쿠키에 담긴 정보를 바탕으로 해당 요청의 클라이언트가 누군지 식별함 

 

 

이러한 Cookie 인증방식의 단점은

보안에 취약하며 , 쿠키에는 용량제한이 있어 많은정보를 담을수없다. , 쿠키의 사이즈가 커질수록 네트워크에 부하가 심해진다.

728x90
728x90

1. 개발배경


아이돌 팬카페에서 일정시간에 등업을 신청할경우 선착순으로 어떤 혜택을 받는거같다(정확하진않음)

그래서 어떤분이 매크로 제작외주를 맡기셨고 수강신청매크로와 비슷한 이론인거같아 제작하게 되었습니다.

 

2. Module


 
 
 
from PyQt5.QtGui import QIcon
import requests
import threading
from PyQt5.QtWidgets import *
from PyQt5 import uic
 
 
 
3. 이론

본 포스팅은 selenium을 이용하여 웹드라이버를 통해 웹을 실행하여 글을 쓰는게 아닌

다음서버로 패킷을 날려 내가 원하는시간에 누구보다 빠르게 글을 쓰는것이 목표입니다.

우선 다음카페에서 글을 쓸때 어떤 URL로 데이터가 송수신 되는지

헤더값은 어떤지

payload(json)값은 어떤지

쿠키값은 어떤식으로 통신하는지 규칙성을 이해해야 합니다. 

이러한 매크로같은경우 패킷분석이 99%이며 코드는 requests.post() 한줄이면 끝납니다.

 

본 포스팅은 오마이걸 팬카페에서 이용자가 원하는시간에 등업신청 패킷을 날리는 매크로 입니다.

등업신청을 할때 요청 URL은

 

쿠키 = {
    'HM_CU' : '5EOWjxEKReG'	,
    'HTS' : 'a8F1CyTfhKDrZ1HEcUNmdQ00'	, #변동값
    'LSID' : '4ozpxSyH8WSPySdNOon1RVWOoHIyJcz_V7bIQxR14PC5g05T4lmugY--B3xgBESvMi346UeveMHApLb6OGyY-4u5BKTvVHrLTQpRqvO5uys2XzS-Q',	#변동값
    'PROF' : '0603012032024076024152UiQPJk7X-6w0mlxoempuua_CKZSggqOGDvo1-CjkaIWcKuZP3z7wEl2W4..NYhR74w00LYYSA9A1_cGNLCyhCzrwOjTi9JCLCPIzyUJ3iNS289Pf8dq.GqUK-I8P-bSfpU2ZfabaifH47uU0fIauQlo8OTLLnHHY.bHDTw00Voisr2G29DEIx7wRa8yZRJAMSaOmydBtoy7RolpDnJ7Cye39yr6LtBtp9ZQ-fDSc34JWkRbso7m6DCIqZGU1g8rlf9KqRak-n_-41UM27eYp-TevH7dyy2XAwBEX56l7PFWutf.kMbC_SE.gc8GDVQ00'	,#이건가 
    'TS' : '1669752762',
}

#HTS , LSID는 변동값 1~2시간마다 값이 갱신되는것같다. 
#쿠키값은 많지만 필수로 요구하는 쿠키는 이정도인거 같다. 
#이렇게 5개의 쿠키값은 다음서버와 통신할때 필수로 요구하는 쿠키값인거같다

 

request_payload=[
                {'questionId': '16436', 'answer': input1},
                {'questionId' : '16437', 'answer': input2},
                {'questionId': '16438', 'answer': input3},
                {'questionId': '16439', 'answer': input4},
                {'questionId': '16440', 'answer': input5},
                {'questionId': '16441', 'answer': input6},
                {'questionId': '16442', 'answer': input7}
                ]
                
#request_payload는 다음카페 등업신청을 할때 대답해야 하는 값들이다. input1~7은 GUI프로그램을 통해
# 값을 입력받았습니다.

 

 

전체코드


from re import L
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
import ccxt
import firebase_admin
from PyQt5.QtGui import QIcon
import requests
import threading

from datetime import datetime

TT = 0
쿠키 = {
    'HM_CU' : '5EOWjxEKReG'	,
    'HTS' : 'a8F1CyTfhKDrZ1HEcUNmdQ00'	, #변동값
    'LSID' : '4ozpxSyH8WSPySdNOon1RVWOoHIyJcz_V7bIQxR14PC5g05T4lmugY--B3xgBESvMi346UeveMHApLb6OGyY-4u5BKTvVHrLTQpRqvO5uys2XzS-Q',	#변동값
    'PROF' : '0603012032024076024152UiQPJk7X-6w0mlxoempuua_CKZSggqOGDvo1-CjkaIWcKuZP3z7wEl2W4..NYhR74w00LYYSA9A1_cGNLCyhCzrwOjTi9JCLCPIzyUJ3iNS289Pf8dq.GqUK-I8P-bSfpU2ZfabaifH47uU0fIauQlo8OTLLnHHY.bHDTw00Voisr2G29DEIx7wRa8yZRJAMSaOmydBtoy7RolpDnJ7Cye39yr6LtBtp9ZQ-fDSc34JWkRbso7m6DCIqZGU1g8rlf9KqRak-n_-41UM27eYp-TevH7dyy2XAwBEX56l7PFWutf.kMbC_SE.gc8GDVQ00'	,#이건가 
    'TS' : '1669752762',
}

url = ''



form_class = uic.loadUiType("untitled.ui")[0]
    


class WindowClass(QMainWindow, form_class) :
    
    global TT

    def __init__(self) :
        super().__init__()
        global 쿠키   
        global TT     
        self.setupUi(self)


        def test_button():
        
            input1 = str(self.textEdit.toPlainText())
            input2 = str(self.textEdit_2.toPlainText())
            input3 = str(self.textEdit_3.toPlainText())
            input4 = str(self.textEdit_4.toPlainText())
            input5 = str(self.textEdit_5.toPlainText())
            input6 = str(self.textEdit_6.toPlainText())
            input7 = str(self.textEdit_7.toPlainText())
            input8 = str(self.textEdit_8.toPlainText())
            
            사이트 = str(self.comboBox.currentText())
            시간 = str(self.textEdit_11.toPlainText())
            if(사이트 == '오마이걸'):
                request_payload=[
                {'questionId': '16436', 'answer': input1},
                {'questionId' : '16437', 'answer': input2},
                {'questionId': '16438', 'answer': input3},
                {'questionId': '16439', 'answer': input4},
                {'questionId': '16440', 'answer': input5},
                {'questionId': '16441', 'answer': input6},
                {'questionId': '16442', 'answer': input7}
                ]

                web_url = 'https://cafe.daum.net/_c21_/api/apply/article/1VTSi/sgo6' #오마이걸 
                dt = datetime.now()

                print('정상작동중')
                #insert(index, element) 
                
                
                time_str = str(dt.hour)+str(dt.minute)+str(dt.second)+str(dt.microsecond)
                
                
                if(len(str(dt.hour)) == 1):
                    time_str = '0'+str(dt.hour)+str(dt.minute)+str(dt.second)+str(dt.microsecond)
                    if(len(str(dt.minute)) == 1):
                        time_str ='0'+str(dt.hour)+'0'+str(dt.minute)+str(dt.second)+str(dt.microsecond)
                        
                    if(len(str(dt.second)) == 1):
                        time_str = '0'+str(dt.hour)+str(dt.minute)+'0'+str(dt.second)+str(dt.microsecond)
                        if(len(str(dt.minute)) == 1):
                            time_str = '0'+str(dt.hour)+'0'+str(dt.minute)+'0'+str(dt.second)+str(dt.microsecond)
                time_str = time_str[0:9]
                시간 = 시간[0:9]

                print('현재 시간  :  '  +time_str)

                print('신청할 시간 : ' + 시간)
                탈출 = 0 
                while(True):
                    dt = datetime.now()

                    time_str = str(dt.hour)+str(dt.minute)+str(dt.second)+str(dt.microsecond)
                
                
                    if(len(str(dt.hour)) == 1):
                        time_str = '0'+str(dt.hour)+str(dt.minute)+str(dt.second)+str(dt.microsecond)
                        if(len(str(dt.minute)) == 1):
                            time_str ='0'+str(dt.hour)+'0'+str(dt.minute)+str(dt.second)+str(dt.microsecond)
                            
                        if(len(str(dt.second)) == 1):
                            time_str = '0'+str(dt.hour)+str(dt.minute)+'0'+str(dt.second)+str(dt.microsecond)
                            if(len(str(dt.minute)) == 1):
                                time_str = '0'+str(dt.hour)+'0'+str(dt.minute)+'0'+str(dt.second)+str(dt.microsecond)
                    time_str = time_str[0:9]
                    
                    if(탈출 == 1):
                        break
                    if(탈출 == 0):
                        print('현재 시간  :  '  +time_str)

                        print('신청할 시간 : ' + 시간)
                        if(int(time_str) > int(시간)):
                            page = requests.post(url=web_url,  json=request_payload,  cookies=쿠키)
                            print(page)
                            print(page.text)
                            탈출 = 1 
                            break
                    
                
                

        self.pushButton_3.clicked.connect(test_button) #로그인 버튼 이벤트



            
if __name__ == "__main__" :
    #QApplication : 프로그램을 실행시켜주는 클래스
    app = QApplication(sys.argv)
    
    #WindowClass의 인스턴스 생성
    myWindow = WindowClass() 

    #프로그램 화면을 보여주는 코드
    myWindow.show()
    #프로그램을 이벤트루프로 진입시키는(프로그램을 작동시키는) 코드
    app.exec_()

 

 

 

4. 작동영상


 

 

bandicam 2022-11-30 15-24-16-828.mp4
9.04MB

728x90
728x90

 

현재 바이비트 거래소에서 USDT 입금 이벤트를 하고있습니다.

입금 금액에 따라 최대 30000$ 달러를 받을수 있습니다.

해당 링크로 가입하신 분만 이벤트 참여가 가능합니다.

바이비트 가입링크 : https://partner.bybit.com/b/developer

 

Welcome to Bybit | Register, Trade & Earn High Rewards | Bybit

Welcome to Bybit. Start your crypto journey by creating an account to trade and earn rewards. Securely sign up today with your phone number or email.

www.bybit.com

 

 

 

카피트레이딩으로 검색을 하고 오신분들이라면 익히아시겠지만,

 

 

카피트레이딩은 유저가 카피트레이더를 팔로잉해서 트레이더가 수익을 내면 팔로워(이하 카피투자자)도 수익을 내는 시스템 입니다.

 

대표적으로 카피트레이딩을 지원하는 거래소는 비트겟, 바이비트 카피트레이딩이 존재합니다.

 

하지만 이러한 카피트레이딩은 문제점이 많습니다.

 

1. 일정 비용만 지불하면 실력과 상관없이 누구나 카피트레이더로 등록할수있습니다.

2. 고레버리지, 손절을 하지않는 매매로 인해 고수익률 처럼 보여 유저들을 현혹할수있습니다.

3. 수익금의 10%의 수수료와 거래수수료를 내야한다는 큰 문제점이 있습니다

 

1,2,3번과 같은 문제점으로 인해 카피트레이딩으로는 수익을 보기 매우 어려운 구조입니다.

 

 

바이낸스 리더보드 카피트레이딩이란?

 

 네 이러한 카피트레이딩은 제가 직접 개발한 카피트레이딩입니다.

 

바이낸스 리더보드란 바이낸스측에서 바이낸스 거래소를 이용하는 유저들의 포지션과 수익률을 공개해주는 사이트입니다. (https://www.binance.com/en/futures-activity/leaderboard)

 

Binance Futures Leaderboard | ROI & PNL Rankings | Binance Futures

Copyright © 2022 Binance Futures. All rights reserved. Cookie Preferences

www.binance.com

 


 

이러한 사이트를 이용하여 제가 개발한 프로그램은

 

바이낸스 리더보드에서 자신이 매매를 똑같이 따라하고싶은 트레이더를 고르고

 

프로그램을 통해 내가 선택한 트레이더와 주문을 똑같이 넣는 방식의 카피트레이딩입니다.

 

이러한 리더보드 카피트레이딩의 장점

 

1. 실제로 매매를 잘하는 트레이더를 카피트레이딩 할 수 있습니다.

2. 카피트레이딩 수수료가 존재하지 않습니다.

3. 바이낸스 거래소 유저를 따라하기 때문에 카피트레이딩 할 수 있는 트레이더가 많습니다.

4. 정보를 투명하게 공개 하기 때문에 합리적이고 공평한 카피트레이딩이며 실제로 수익이 나는 카피트레이딩입니다.

 

 

 

 

바이낸스 리더보드 이용 메뉴얼

 

https://www.youtube.com/watch?v=I17NNF1Un0s&t=53s 

 

 

 

< 비트톡 카피트레이딩 프로그램 다운로드 > 

https://drive.google.com/file/d/1slAc2CQfjHbojRQuaCp5yWsyEpEdkmW6/view?usp=sharing

 

비트톡1123.zip

 

drive.google.com

★ ★ 비트톡 프로그램은 비트톡 바이비트 제휴가입 링크를 통해 가입하신분만 이용 가능합니다. ★ ★

비트톡 프로그램 소통방 :(비번 1004) : https://open.kakao.com/o/gktk8yCe

비트톡 코인 소통방 (비번1004) https://open.kakao.com/o/gtrIKwSd 

 

이용방법은 sososoll 문의주세요

 

 

 

728x90
728x90

 

바이비트는 대부분 수수료 할인링크 같은경우 15% 밖에 할인을 못받는 제휴링크가 많습니다.

 

하지만 유튜브채널운영,블로그운영,API를이용한 자동매매를 만들어서 파트너십 신청하여 드디어 승인되어서 할인코드가 최대수수료 할인 혜택 20%를 받게되었습니다.

 

 

https://partner.bybit.com/b/developer

 

Bybit | Cryptocurrency Trading Platform

Bybit is one of the fastest growing cryptocurrency exchanges, with more than 2 million registered users. You can buy and sell crypto instantly, or trade popular coins across different contract types as you’d like.

www.bybit.com

위 링크로 들어가셔서 회원가입 하실경우 수수료 할인을 최대로 20% 할인받을수 있습니다.

 

수수료 5% 차이가 엄청나게 큽니다. 증거금 1만달러기준 한달기준  수수료할인이 2000달러 정도나 나오더라구요...

 

수수료 할인링크를 통해 가입하실경우 수수료 할인이 최대로 20% 적용되는지 꼭 확인하셔야 됩니다.

 

 

 

728x90
728x90

 

필수 모듈 설치

ㄴ> pip install pybit


 1. session_auth

from pybit import usdt_perpetual
session_auth = usdt_perpetual.HTTP(
    endpoint="https://api-testnet.bybit.com",
    api_key="your api key",
    api_secret="your api secret"
)​

 

2. 주문넣기 

#지정가 주문 
print(session_auth.place_active_order(
    symbol="BTCUSDT",
    side="Sell",
    order_type="Limit",
    qty=0.01,
    price=20083,
    time_in_force="GoodTillCancel",
    reduce_only=False, #True이면 포지션종료 False이면 포지션 오픈
    close_on_trigger=False
)) 


#시장가 주문 
print(session_auth.place_active_order(
    symbol="BTCUSDT",
    side="Buy",
    order_type="Market",
    qty=0.01,
    time_in_force="GoodTillCancel",
    reduce_only=False, #True이면 포지션종료 False이면 포지션 오픈
    close_on_trigger=False
))

 

 

요청 매개변수  ( 매개 변수 필수 유형 설명 )

side true string Side
symbol true string Symbol
order_type true string Active order type
qty true number Order quantity in cryptocurrency
price false number Order price. Required if you make limit price order
time_in_force true string Time in force
reduce_only true bool What is a reduce-only order? True means your position can only reduce in size if this order is triggered. When reduce_only is true, take profit/stop loss cannot be set
close_on_trigger true bool What is a close on trigger order? For a closing order. It can only reduce your position, not increase it. If the account has insufficient available balance when the closing order is triggered, then other active orders of similar contracts will be cancelled or reduced. It can be used to ensure your stop loss reduces your position regardless of current available margin.
order_link_id false string Unique user-set order ID. Maximum length of 36 characters
take_profit false number Take profit price, only take effect upon opening the position
stop_loss false number Stop loss price, only take effect upon opening the position
tp_trigger_by false string Take profit trigger price type, default: LastPrice
sl_trigger_by false string Stop loss trigger price type, default: LastPrice
position_idx false integer Position idx, used to identify positions in different position modes. Required if you are under One-Way Mode:
0-One-Way Mode
1-Buy side of both side mode
2-Sell side of both side mode

 


3.  모든주문취소 

 

print(session_auth.cancel_all_active_orders(
    symbol="BTCUSDT" #BTCUSDT 선물 모든 주문 취소 
))

 


4. 조건부 주문 

 

from pybit import usdt_perpetual
session_auth = usdt_perpetual.HTTP(
    endpoint="https://api-testnet.bybit.com",
    api_key="your api key",
    api_secret="your api secret"
)
print(session_auth.place_conditional_order(
    symbol="BTCUSDT",
    order_type="Limit",
    side="Buy",
    qty=1,
    price=8100,
    base_price=16100,
    stop_px=8150,
    time_in_force="GoodTillCancel",
    trigger_by="LastPrice",
    order_link_id="cus_order_id_1",
    reduce_only=False,
    close_on_trigger=False
))

 

 


5. 포지션 불러오기

요청

from pybit import usdt_perpetual
session_auth = usdt_perpetual.HTTP(
    endpoint="https://api-testnet.bybit.com",
    api_key="cCrMK2P55002rmQh1z",
    api_secret="eTXOcGvu6Ue9MA916oO5ymqbj2UzBfSLKcti"
)
print(session_auth.my_position(
    symbol="BTCUSDT"
))

결과

{
    "ret_code": 0,
    "ret_msg": "OK",
    "ext_code": "",
    "ext_info": "",
    "result": [
        {
            "user_id": 533285,
            "symbol": "XRPUSDT",
            "side": "Buy",
            "size": 0,
            "position_value": 0,
            "entry_price": 0,
            "liq_price": 0,
            "bust_price": 0,
            "leverage": 5,
            "auto_add_margin": 0,
            "is_isolated": true,
            "position_margin": 0,
            "occ_closing_fee": 0,
            "realised_pnl": 0,
            "cum_realised_pnl": -16.35115218,
            "free_qty": 0,
            "tp_sl_mode": "Full",
            "unrealised_pnl": 0,
            "deleverage_indicator": 0,
            "risk_id": 41,
            "stop_loss": 0,
            "take_profit": 0,
            "trailing_stop": 0,
            "position_idx": 1,
            "mode": "BothSide"
        },
        {
            "user_id": 533285,
            "symbol": "XRPUSDT",
            "side": "Sell",
            "size": 50,
            "position_value": 19.58,
            "entry_price": 0.3916,
            "liq_price": 0.4529,
            "bust_price": 0.4568,
            "leverage": 6,
            "auto_add_margin": 0,
            "is_isolated": true,
            "position_margin": 3.2633354,
            "occ_closing_fee": 0.013704,
            "realised_pnl": 0,
            "cum_realised_pnl": 0.90620182,
            "free_qty": 50,
            "tp_sl_mode": "Full",
            "unrealised_pnl": 3.395,
            "deleverage_indicator": 2,
            "risk_id": 41,
            "stop_loss": 0.5,
            "take_profit": 0.28,
            "trailing_stop": 0,
            "tp_trigger_by": 1,
            "sl_trigger_by": 1,
            "position_idx": 2,
            "mode": "BothSide"
        }
    ],
    "time_now": "1655868796.293226",
    "rate_limit_status": 119,
    "rate_limit_reset_ms": 1655868796290,
    "rate_limit": 120
}

 

728x90
728x90

https://partner.bybit.com/b/developer

(바이비트 파트너 수수료할인 + 최대 600달러 증정금 지급 가입링크)

 

Bybit | Cryptocurrency Trading Platform

Bybit is one of the fastest growing cryptocurrency exchanges, with more than 2 million registered users. You can buy and sell crypto instantly, or trade popular coins across different contract types as you’d like.

www.bybit.com

 

개발기간 6주(백테스팅 1달)

디자인감각이 없어서 많이 없어보인다

 

 

개발배경


어느날부터 비트코인 자동매매 관련 광고가 많이떠가지고 궁금증을 갖게되었다

도대체 자동매매에 어떤부분에 인공지능을 활용했다는거지..?

자동매매 알고리즘은 어떻게되는거지? 어떨때 매수하고 매도하는건지?

저렇게 매매하면 짜잘짜잘하게 수익보다가 나중에 한번에 다잃지 않나 ? 하는 위험한 자동매매 프로그램들이 너무많았다.

 

나는 1년전 바이낸스 리더보드를 이용한 카피트레이딩을 개발한 경험을 기반으로 자동매매를 만들기 시작했고

 

자동매매 알고리즘은 크게 4개 만들 생각이었다.

 

1. 볼린저밴드를 이용한 자동매매 알고리즘

2. 유튜버 나씨 5분봉 3틱룰

3. 그리드매매

4. 유튜브 스트리머(박호두,사또,짭구) 반대매매(카피매매가능)

 

4번은 솔직히 코인 매매방송하는 사람들인데 항상 돈을 크게잃길래

반대로 따라가면 돈을 벌거같은데? ㅋㅋ 라는 생각으로 만들어보았다.

 

수익률, 거래내역


 

약 한달간 돌린결과 6만 달러로 시작하여 4만달러라는 수익을 벌었다.

운이 좋았던게 9월7일?쯤에 스트리머 반대매매로 2만달러인가 크게 수익을 보았다.

 

그리고 볼린저밴드(롱) 15분봉 단타로 수익을 꽤보았고, 그리드매매의 경우 승률은 높은데 수익률은 적었다 

 

수익,거래내역을 사진으로만 공개하면 주작이라는 분들이 많아, 유튜브 채널에도 업로드 해놨습니다 

 

후기


내가 개발한 볼린저밴드매매는 , 비트코인의 추세를 예측하고 중단기적으로 올라갈거 같아서 롱볼린저 밴드를 자주 이용했다.  하락장에서도 나름 수익을 보았다 (원웨이 하락이 없었기때문...) 볼린저밴드 매매 같은경우 횡보장에도 수익을 볼수있어서 좋았고, 만약 내가 롱 볼린저밴드를 돌리는데 상승장이었다면 큰수익이 나온다는게 좋았다.

ㅇ볼린저밴드 자동매매는 횡보장=수익 , 상승장=수익, 하락장=손실or본절 인거같다

 

그리드 자동매매 같은경우 약 일주일 내내 돌려봤는데 손실이 난적이 없었다.

물론 6만달러로 자동매매를 돌리는데 하루수익이 100~300달러 밖에 안나온다

그리드매매같은 경우 수익률은 낮지만 횡보장,변동성이 심한장에 안정적으로 항상 수익이나고 원웨이 하락 or 원웨이 상승 장에 안좋다

 

유튜브 스트리머 매매 같은경우 단기적으로 크게 손실볼수도있지만 시드만 넉넉하다면 결국 수익을 보는거같다

오늘 크게잃지만 내일은 크게 벌거라는 믿음으로 해야된다... 재미삼아 만들었지만 이게 가장 시드 등락폭이 심하다 

 

배포


https://www.youtube.com/watch?v=bePW35wE3Ig 

 

제 유튜브 채널입니다..

인터넷광고에 돌아다니는 AI자동매매 no1 이런것보단 그냥 알고리즘 공개하고 상승장에 좋은 알고리즘, 하락장에 좋은알고리즘, 횡보장에 좋은알고리즘 중 선택하여 수익과 손실을 보면서 자동매매 돌리는게 맞다고 생각한다... 

제가 만든 프로그램은 무료로 프로그램 이용할수 있으며 영상시청 부탁드리며 (문의는 카카오톡 sososoll ) 

728x90
728x90

 

제가 직접 개발한 시스템트레이딩 프로그램입니다.

 

기존에 많은 프로그램을 만들어봤는데 역시 인간지표가 최고인듯 합니다... 거래는 바이비트를 통해 시스템트레이딩 돌렸습니다!(https://www.bybit.com/en-US/register?affiliate_id=19476&group_id=0&group_type=1 )

 

9월초부터 시작하여 9월6일 현재기준 약 2만달러수익(2600만원)이 나왔습니다!

 

시스템 원리는 여러 유튜버들중 한명을 선택한 후 그 유튜버와 똑같이 매매할것인지, 아니면 반대로 매매할것인지 선택하여 자동으로 매매가 돌아가는 시스템입니다.

 

 

 

 

저는 개인적으로 박호두라는 유튜버를 반대로 매매하였고, 초반에는 잃었지만 결국 큰 수익을 얻엇습니다!

 

(한 때 유행했던 호반꿀이라고 하죠 ㅋㅋ) , 현재 박호두 , 사또, 짭구 등 여러 유튜버와 연동하여 시스템트레이딩 구현에 성공하였고 추후 해외 크립토유튜버까지 연동할 생각입니다.!

 

현재 개인 유튜브채널에서 실시간으로 방송하며 아직 테스트중에 있습니다. 초반에는 분할익절이 안되거나 물타기가 안되는등 문제들이 조금 보였지만 이제 완벽하게 모든기능이 돌아가는거 같습니다.!

하지만 아직 사소한 버그들이 발생할지 몰라서 좀 더 테스트중입니다.

 

<2022년09월27일 글 직접 개발한 비트코인 자동매매 1달 돌린결과>

https://ititit1.tistory.com/141

 

직접 개발한 비트코인 자동매매(feat. Bybit ) 1달간 돌린 결과 공개 / 비트코인 자동매매 프로그램

https://partner.bybit.com/b/developer (바이비트 파트너 수수료할인 + 최대 600달러 증정금 지급 가입링크) Bybit | Cryptocurrency Trading Platform Bybit is one of the fastest growing cryptocurrency exch..

ititit1.tistory.com

 

https://www.youtube.com/shorts/OC-zmvVmb1s

 

 

 

https://www.bybit.com/en-US/register?affiliate_id=19476&group_id=0&group_type=1 

 

Bybit | Cryptocurrency Trading Platform

Bybit is one of the fastest growing cryptocurrency exchanges, with more than 2 million registered users. You can buy and sell crypto instantly, or trade popular coins across different contract types as you’d like.

www.bybit.com

바이비트에서 단독으로 진행중인 수수료할인 제휴 가입링크입니다 .

728x90
728x90

https://www.bybit.com/en-US/register?affiliate_id=19476&group_id=0&group_type=1 

 

Bybit | Cryptocurrency Trading Platform

Bybit is one of the fastest growing cryptocurrency exchanges, with more than 2 million registered users. You can buy and sell crypto instantly, or trade popular coins across different contract types as you’d like.

www.bybit.com

바이비트에서 단독으로 진행중인 수수료할인 제휴 가입링크입니다 .

 

본 글을 읽고 이해가 안되시거나 도움이 필요하신분은 편하게 sososoll 로 카카오톡 문의주세요

 

 

 

 

선물거래하는 방법

바이비트(Bybit)는 3종류의 선물거래 상품을 제공합니다.

  • USDT Perpetual(USDT 무기한 계약) : 만기 날짜가 없으며, 테더(USDT)를 담보로 거래
  • Inverse Perpetual(인버스 무기한 계약) : 만기 날짜가 없으며, 코인을 담보로 거래
  • Inverse Futures(인버스 선물 계약) : 만기 날짜가 존재(만기일 명시), 기한 내에 청산하며 코인을 담보로 거래

 

필요에 따라 자신에게 맞는 유형의 상품을 선택하시길 바랍니다. 본 글에서는 인버스 무기한 계약을 예시로 설명드리겠습니다.

 

 

 

 

1. 파생상품(Derivatives) ➡︎ 인버스 계약(Inverse Contracts) ➡︎ 무기한(Perpetual) 종목 선택

인버스 계약(Inverse Contracts) 탭에 들어가면 인버스 무기한 계약(Perpetual)과 인버스 계약(Futures)이 존재합니다. 원하시는 항목을 선택 후, 거래 항목을 선택합니다. 리플/달러(XRPUSD)을 예시로 들겠습니다.

 

 

2. 레버리지(Leverage) 배수 설정 ➡︎ 격리(Isolated)/교차(Cross) 선택

여기서 레버리지(Leverage)와 투자 방식(Cross/Isolated), 주문 방식(Limit/Market/Conditional)을 설정합니다. 

 

 

 

 

레버리지(Leverage)는 자신이 투자한 금액의 몇 배만큼의 코인을 빌릴 지를 의미합니다. 예를 들어 x10 레버리지를 설정하여 1000만원을 투자하였다고 가정했을 때, 이는 1억원을 투자한 것과 같습니다. 따라서 10%만 상승해도 1000만원을 벌며, 반대로 10% 하락 시 1000만원을 잃어 강제청산을 당하는 것 입니다.

 

마진 모드(Margin Mode) : 격리(Isolated)와 교차(Cross)

교차(Isolated) : 투자 금액 외에 잔액을 담보로 잡음으로 강제청산 당할 가능성이 줄어들지만, 강제청산 당한다면 전액이 몰수될 수 있습니다.

격리(Cross) : 투자 금액만을 담보로 잡고 있기 때문에 강제청산 시 투자 금액만 날아가지만 강제청산 당할 가능성이 높아집니다.

 

 

 

2. 주문 가격(Order Price) 및 수량(Contract Qty) 입력

지정가(Limit)/조건부주문(Conditional)으로 선택 시 주문 가격(Order Price)를 입력하고, 주문 수량(Contract Qty)를 입력합니다.

 

3. 포지션(Position) 공매수(Long) / 공매도(Short) 선택 ➡︎ 주문 완료]

마지막으로 공매수(Buy/Long) 또는 공매도(Sell/Short) 중에 선택하여 주문을 완료합니다.

롱(Long)과 숏(Short)

 

롱(Long) : 특정 종목의 가격 상승을 예상하여 거래소에서 돈을 빌려 상승할 것 같은 종목에 투자하고, 상승했을 때 원금을 갚는 방식으로 차익을 얻는 것,

 

숏(Short) : 특정 종목의 가격 하락을 예상하여 그 항목을 보유하고 있지 않은 상태에서 빌린 후, 거래소에 팔고, 종목 하락 시 저렴한 가격으로 구매해 대여자에게 다시 돌려주는 방식으로 차익을 얻는 것

 

*인버스 무기한 계약은 코인을 담보로 하기 때문에 숏(Short)을 선택할 시, 코인 가격이 하락하면 수익을 얻는 동시에 코인의 가격이 떨어지기 때문에 손실도 발생합니다.

 

 

4. 청산(Close Position)

포지션(Positions)에 진입하면 지정가(Limit)와 시장가(Market) 버튼이 보이는데, 이를 통해서 목표가와 손절가를 설정 가능합니다. 지정가(Limit)를 클릭하면 목표 가격을 설정해두고 그 가격이 되면 얼마나 팔지 비중을 설정할 수 있습니다. 시장가(Market)를 클릭하면 해당 시점에서 시장가로 얼마나 매도 할 지 비중을 설정할 수 있습니다.

 

 

 

<2022년09월27일 글 직접 개발한 비트코인 자동매매 1달 돌린결과>

https://ititit1.tistory.com/141

 

직접 개발한 비트코인 자동매매(feat. Bybit ) 1달간 돌린 결과 공개 / 비트코인 자동매매 프로그램

https://partner.bybit.com/b/developer (바이비트 파트너 수수료할인 + 최대 600달러 증정금 지급 가입링크) Bybit | Cryptocurrency Trading Platform Bybit is one of the fastest growing cryptocurrency exch..

ititit1.tistory.com

 

 

 

이상으로 바이비트(Bybit) 선물거래 하는 방법에 대하여 말씀드렸습니다.

감사합니다.

 

https://www.bybit.com/en-US/register?affiliate_id=19476&group_id=0&group_type=1 

 

Bybit | Cryptocurrency Trading Platform

Bybit is one of the fastest growing cryptocurrency exchanges, with more than 2 million registered users. You can buy and sell crypto instantly, or trade popular coins across different contract types as you’d like.

www.bybit.com

 

728x90
728x90

upbit_V1.zip
0.00MB

1. 파이썬 설치 https://wikidocs.net/8 

이글을 보시고 똑같이 설치해주시면 됩니다.

 

01-4 파이썬 설치하기

이제 실습을 위해 컴퓨터에 파이썬을 설치해 보자. 이 책에서는 윈도우에서 설치하는 방법만 다룬다. 다른 시스템을 사용할 경우 파이썬 홈페이지([http://www.pytho ...

wikidocs.net

2. 파이썬을 성공적으로 설치하셨다면 CMD(명령 프롬프트) 를 키셔서 다음 명령어들을 입력합니다

pip install pyupbit

pip install Upbitpy

pip install upbitpy

pip install requests

 

3. 업비트에 로그인하여 API KEY 발급 (KEY는 노출되면 안됩니다. ip주소에는 네이버에 내ip를 검색하셔서 나오는 ip주소를 넣어주시면 됩니다.)

4. 시작메뉴에서 IDLE를 검색하여 실행해준후 Open을 눌러 다운받은 Upbit_v1.py 파일을 열어줍니다

5. 그러면 코드창이 나오는데 F5를 누르며 실행됩니다.

 

Access key와 secret key에 업비트에서 발급받은 키를 입력하시고

코인명에는 KRW-XRP 이런식으로(대문자) 입력해주시면 되고

Timesleep는 매수매도 사이의 시간간격입니다 빠르게 단주매매 돌리고싶으시면 0을 입력하시면 됩니다.

 

비트코인 후원 : 32mYRZMRFC4WZDDCjEVspZdgRzFAKuJk83

이더리움 후원 : 0x9f42fd9d94cC13b37009F587c242caC3b7Fe50F5

트론후원 : TNAWHsUWYNYZe8SYLBfEW7QBT76eVQFrm3

 

FTX거래소 파트너쉽 수수료 혜택 가입링크(평생 수수료할인)

https://ftx.com/#a=4826322

 

FTX

 

ftx.com

 

728x90
728x90

게임개발을 해본적이 단한번도 없는데 어쩌다보니 암호화폐 관련 프로그램들을 많이 만들고

다양하게 얕고 만들고싶은것들을 개발하다가 지인을 통해 우연히 외주를 받게되었고...

모바일 바카라 비슷한 게임제작 의뢰를 받게되었다.....모바일 게임에 암호화폐 지갑까지 연동해야 될수있는데

많이 힘들고 험난할거같지만

시간은 넉넉하니 천천히 개발해볼 생각이다.완전 C#도 배워본적없이 유니티를 시작하는거라 완전 기초부터 시작할 계획이다. 개발기간은 1달내에 오픈베타를 배포하는게 목표이고, 12월까지 최종배포를 하기로 하였다.

 

 

참고

https://doc.photonengine.com/ko-kr/pun/current/getting-started/pun-intro

https://www.youtube.com/watch?v=mPCNTi3Booo&list=PL3KKSXoBRRW3YE4UMnRH762vOhSHLdnpK 

https://doc.photonengine.com/ko-kr/pun/current/demos-and-tutorials/pun-basics-tutorial/lobby

https://mingyu0403.tistory.com/309?category=977479 

 

Photon과
연동하기 

https://dashboard.photonengine.com/en-US/ 

위 링크 포톤서버홈페이지에 접속하여 회원가입후 CRERATE A NEW APP을 통해 APP을 하나 만들어준다.

)무료버전이라 CCU는 20이라고 함). 우선 App-ID를 복사해놓는다

 

 

그리고 유니티 Asset 스토어에서 PUN2 -FREE를 다운로드 and Import 해준다.

 

 

Appid or email에는 아까 Photon서버에서 만든 app id를 복사 붙여넣기 해준후

Setup Project해주고 조금만 기다려주면 유니티와 연동이 된다.

 

실습 포톤서버와 연결하기

 

우선 화면을 다음과같이 구성해보았다.

 

꼭 필요한건  Text이다. 버튼은 이번실습에서 필요하지않고  다음 실습에서 다른화면으로 넘어가기위해(방입장) 미리 만들어놓았다.

 

화면을 다음과 같이 구성하였다면

 

 

 

NetworkManager라는 C#도 하나 만들어준다.

실습코드는 다음과 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine.UI;
 
public class NetworkManager : MonoBehaviourPunCallbacks
{
    string gameVersion = "1";
    public Text statusText;
    public string nick, roomname;
    public string connect_status;
 
 
    private void Awake()
    {
        PhotonNetwork.AutomaticallySyncScene = true;
        //스터 클라이언트와 일반 클라이언트들이 레벨을 동기화할지 결정한다.
        //true로 설정하면 마스터 클라에서 LoadLevel()로 레벨을 변경하면 모든 클라이언트들이 자동으로 동일한 레벨을 로드.
 
 
    }
 
    // Start is called before the first frame update
    void Start()
    {
        Connect();
    }
 
    // Update is called once per frame
    void Update()
    {
        
        statusText.text = PhotonNetwork.NetworkClientState.ToString();
    }
 
    public void Connect()
    {
 
        if (PhotonNetwork.IsConnected)
        {
            print("PhotonNetwork.IsConnected");
        }
        else
        {
            PhotonNetwork.GameVersion = gameVersion;
            PhotonNetwork.ConnectUsingSettings(); //Photon Online Server에 접속하기 가장 중요
        }
}
cs
 

 

 

 

콜백함수 정리

본인만의 코드를 통해 직접 Consol창에 찍어보면서 어떻게 호출되는지 학습하는게 좋을듯하다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine.UI;
 
public class NetworkManager : MonoBehaviourPunCallbacks
{
    string gameVersion = "1";
    public Text statusText;
    public string nick, roomname;
    public string connect_status;
 
 
    private void Awake()
    {
        print("awake");
        PhotonNetwork.AutomaticallySyncScene = true;
        //스터 클라이언트와 일반 클라이언트들이 레벨을 동기화할지 결정한다.
        //true로 설정하면 마스터 클라에서 LoadLevel()로 레벨을 변경하면 모든 클라이언트들이 자동으로 동일한 레벨을 로드.
 
 
    }
 
    // Start is called before the first frame update
    void Start()
    {
        print("start");
        Connect();
    }
 
    // Update is called once per frame
    void Update()
    {
        
        statusText.text = PhotonNetwork.NetworkClientState.ToString();
    }
 
    public void Connect()
    {
 
        if (PhotonNetwork.IsConnected)
        {
            print("PhotonNetwork.IsConnected");
        }
        else
        {
            PhotonNetwork.GameVersion = gameVersion;
            PhotonNetwork.ConnectUsingSettings(); //Photon Online Server에 접속하기 가장 중요
        }
 
 
    }
    public void Disconnect()
    {
        PhotonNetwork.Disconnect();
    }
    public void JoinLobby()
    {
        PhotonNetwork.JoinLobby();
    }
    public void CreateRoom()
    {
        // 방 생성하고, 참가.
        // 방 이름, 최대 플레이어 수, 비공개 등을 지정 가능.
        roomname = "room1";
        PhotonNetwork.CreateRoom(roomname, new RoomOptions { MaxPlayers = 6 });
    }
    public void JoinRoom()
    {
        // 방 참가하기.
        // 방 이름으로 입장 가능.
        PhotonNetwork.JoinRoom("room1");
    }
    public void JoinOrCreateRoom()
    {
        // 방 참가하는데, 방이 없으면 생성하고 참가.
        PhotonNetwork.JoinOrCreateRoom("room1"new RoomOptions { MaxPlayers = 6}, null);
    }
 
    //콜백함수들 
 
    //포톤 온라인 서버에 접속하면 불리는 콜백함수
    //PhotonNetwork.ConnectUsingSettings()가 성공하면 호출됨
    public override void OnConnectedToMaster()
    {
        print("서버 접속 완료.");
 
        // 현재 플레이어 닉네임 설정.
        nick = Random.Range(1100).ToString();
        PhotonNetwork.LocalPlayer.NickName = nick;
        
    }
 
    //연결이 끊기면 불리는 콜백함수
    //PhotonNetwork.Disconnect()가 성공하면 불린다.
    public override void OnDisconnected(DisconnectCause cause)
    {
        print("연결 끊김 누가? ->" + nick);
    }
 
    //로비에 접속하면 불리는 콜백함수
    //PhotonNetwork.JoinLobby()가 성공하면 호출됨
    public override void OnJoinedLobby()
    {
        base.OnJoinedLobby();
        {
            print("로비접속완료 누가? ->" + nick);
        }
    }
    // 방 생성하면 불리는 콜백 함수.
    // PhotonNetwork.CreateRoom()가 성공하면 불린다.
    public override void OnCreatedRoom()
    {
        print("방 만들기 완료 누가? ->" + nick);
        print("방 이름은 ? ->" + roomname);
    }
 
    /// 방 참가하면 불리는 콜백 함수.
    /// PhotonNetwork.CreateRoom(), PhotonNetwork.JoinedRoom()가 성공하면 불린다.
    public override void OnJoinedRoom()
    {
        print("방 참가완료 누가? ->" + nick);
        print("방 이름은 ? ->" + roomname);
    }
 
    //방생성 실패시 불리는 콜백함수
    //PhotonNetwork.CreateRoom()를 호출할때 이름이 같은 방이있ㅎ으면 실패할수있다.
    public override void OnCreateRoomFailed(short returnCode, string message)
    {
        print("방만들기 실패 " + message);
    }
 
    //방참가 실패시 호출되는 콜백함수
    //PhotonNetwork.JoinRoom()할때 방인원수가 꽉차있으면 실패,아래함수가 호출될수있다.
    public override void OnJoinRoomFailed(short returnCode, string message)
    {
        print("방 참가 실패.");
    }
 
    /// 방 랜덤 참가 실패하면 불리는 콜백 함수.
    /// PhotonNetwork.JoinRandomRoom()를 호출할 때, 방 인원수가 모두 차있거나 존재하지 않으면 실패할 수 있다.
    /// 다른 사람이 더 빠르게 들어갔거나, 방을 닫았을 수 있다.
 
    public override void OnJoinRandomFailed(short returnCode, string message)
    {
        print("방 랜덤 참가 실패.");
    }
}
 
cs

 

 

 

결과

c#코드를 모두 작성하였고 NetworkManager에 ADD COMPONENT  해줬다면 실습에서 콘솔에 다음과같이 뜰것이다.

 

작동과정을보면

1. Awake() 함수 PhotonNetwork.AutomaticallySyncScene = true;

//스터 클라이언트와 일반 클라이언트들이 레벨을 동기화할지 결정한다.

 

2. void Start()  -> Connect()

 

3.     public void Connect() 에서 if문이 거짓이므로(포톤서버와 연결이 안되있으므로) 

PhotonNetwork.GameVersion = gameVersion;
PhotonNetwork.ConnectUsingSettings(); 가 호출되고

 

4. PhotonNetwork.ConnectUsingSettings()가 성공하면 콜백함수    public override void OnConnectedToMaster() 가 호출됨

 

print("서버 접속 완료.");
// 현재 플레이어 닉네임 설정.
nick = Random.Range(1, 100).ToString();
PhotonNetwork.LocalPlayer.NickName = nick;

 

느낀점

유니티에서 사용되는 스크립트  C#언어를 사용해본적이 한번도 없는데

C#언어를 사용하는게 엄청 익숙하다.그러나  유니티 게임엔진을 이용하는게 아직 많이 어렵고 

부자연스럽다.. 오늘이 유니티학습 2일차인데, 유니티게임개발같은 경우 한국어

구글 자료가 좀 적은거같다고 느꼈다. 유니티 엔진을 좀더 자연스럽게 이용하기 위해 새벽에 

2D 점프게임 + 바카라 게임을 만들어봤다.

엄청 조잡하고 애니메이션효과도 하나도없지만 나름 재미있게 학습한거같다.( 이부분은 블로그에 포스팅하지않을거같다.

즉흥적으로 만든거라....)

 

포톤서버에 비용에대해 궁금해서 알아봤는데..

무료 포톤서버라 CCU(동시접속?)이 20명밖에 안된다고 한다.

동시접속 2000CCU가 월60만원 정도 하는거같다.

 

 

 

아래는 개별적으로 2D 위로 점프하는게임을 개발하면서 적은 메모장(낮과밤에는 내 프로젝트 관련된 유니티 프로젝트를 개발하고 , 그날 피곤하지않다면 내가 만들고싶은 간단한 게임을 만들면서 유니티와 친해져볼 생각이다.)

 

<< 게임 정리 >>

0. 화면에 객체(캐릭터) 등장
1. (클릭시) 객체를 일정높이까지 점프
2. 양쪽에서 발판들이 몰려온다
3. 아래에서 용암이 올라온다
4. 객체가 발판위에 안착하면 SCORE가 +1이 되고 SCORE에 점수가 갱신된다.

<< 필기 >>

'Scene' -> 작업하는 공간
'Game' -> 게임을 플레이할때 보이게 되는 화면

'Hierarchy' -> 장면에 등장하는 객체들 


Insperctor -> Transform 위치(T
                 ㄴ>  Component(Sprite Rendere ) : 기능

(객체 점프이벤트) 
1. 마우스 클릭이벤트를 인식 (클릭이벤트 리스너)
2. 클릭하면 어떠한 반응이 일어남
3. 주인공을 점푸할수 있는 상태로 만든다.
4. 주인공이 서있을 수 있는 바닥을 만든다.\

객체가 점프를 하기위해 객체에게 '질량' 을 부여하고
객체에게 '중력'을 부여하고 특정 이벤트 발생시
'하늘방향으로 힘을 가한다' 

Rigidbody 2d 컴포넌트는 트랜스폼을 오버라이드하고 
(부모 클래스로부터 상속받은 메소드를 재정의)

body type 에는 세가지 옵션
Dynamic : 동적
Kinematic 은 2d 시뮬레이션 상태에서,매우 명확한 사용자 제어 하에서 움직이도록 디자인되어있다.
Dynamic은 중력과 힘의 영향을 받음, 서로에게 영향을 미칠수 있음
Kinematic은 영향을 받지않는다.
Static은 전혀 움직이지 않도록 디자인 되었다.

2D(Colider2D)는 육체간의 충돌이 가능하게 해줌

★ GetComponent<Rigidbody2D>().AddForce(new Vector2(0, 200.0f)) ★

구성요소(Componenent)의 육체(Rigidbody2D)를 가져와서 힘을가한다. 
어디로? > new Vector2(0,200,0f)방향으로 

<<문법>>

C#에서 다른클래스로 상속하려면 클래스 뒤에 : (콜론)을 추가하고 상속하려는 클래스명을 써주면됨

Square 객체클릭 -> Add Component -> New Script

스크립트(C#) 파일명을 Jump.cs

public class Jump : MonoBehaviour
{
    private void Update()
    {
        if(Input.GetMouseButtonDown(0) == true)
        {
            Debug.Log("마우스 클릭 발생");
        }
    }
}

Input.GetMouseButtonDown(0) == true
if parameter == 0    -> 좌클릭
if parameter == 1   -> 우클릭
if parameter ==2     -> 휠버튼 
누른순간 true로 변환되며 아무것도 안했을때
기본적으로 false로 구분됨

<점프 하기> 위해서 Square 객체에게 Component를 추가해주는데 컴퍼넌트는 'rigidbody 2d' 를 추가해준다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


text 바꾸기(ui: TextMeshProUGUI) 

public GameObject text1;
text1 연결
text1.GetComponent<TMPro.TextMeshProUGUI>().text ="123"

ㅡㅡㅡㅡㅡㅡㅡㅡ
포톤서버 APP-ID : 

이미지에서 Filter Mode를 Point로 하면 픽셀이 깨지지않고
Compression을 None로 하면 색이 번지지않음

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
서버/네트워크 프로그래밍
Mirror Mirage 네트워크라이브러리

728x90

+ Recent posts