ðãåå¿è åãã®æ å ±ããªãïŒãããå§ãŸã£ãä»®æ³é貚BOTäœæå€§äœæŠ
PythonãTradingViewãGoogle Cloud Platformãçµã¿åãããä»®æ³é貚èªå売買BOTã®äœææ¹æ³ã解説ããŸãã
æ·±å€3æãã³ãŒããŒãšãèåã ããåéã®ç§
ð¯ ãã®èšäºã§å®éã«ã§ããããã«ãªãããš
- ð ãPythonã£ãŠäœïŒã â äœ¿ãæ¹ãã³ããã§èŠãã
- ð ãTradingViewã®äœ¿ãæ¹ã â ã¢ã©ãŒãèšå®ãŸã§ãã¹ã¿ãŒ
- âïž ãGCF (Google Cloud Functions) ã®ã¯ã©ãŠãã â ç¡æã§ãµãŒããŒã䜿ããããã«
- ð± ãååŒæã®APIã â ä»äººã®ãéã§è©Šããªããã¢å£åº§ã§å®å¿ãã¹ã
â ïž æåã«èšã£ãšããŸãïŒ ãã®èšäºã®éãã«ãã£ãŠããæåã¯çµ¶å¯Ÿã«ããŸããããŸããããšã©ãŒãåºãŸãããããããããããã£ãŠæ°æã¡ã«ãªããŸããã§ããããæ®éã§ããäžç·ã«é 匵ããŸãããã

ããã°ã©ãã³ã°ã§äœãèªååãããïŒ
ãã£ã¡ããããã
ð ãããã宿ãããã©ããªããšãã§ããã®ïŒã
ããªãã®æªæ¥ã®ç掻ð
æèµ·ããæïŒ ãããå¯ãŠãéã«BOTãäœæ¥ããŠãããã®ãã+3,000åã®å©çã ãã ð
äŒç€Ÿã«ããæïŒ ãTradingViewããã¢ã©ãŒããæ¥ããBOTãèªåã§å£²è²·ããŠããããããä»äºã«éäžã§ãããã ð
忥ã®ååŸïŒ ãæ è¡äžã§ãBOTãåããŠããããèªç±ã ãªããã ðŽ
å®éã®æ©èœäžèЧâš
- ðš TradingViewã¢ã©ãŒã â ãä»ããã£ã³ã¹ïŒãã§èªå売買éå§
- ðª Bybitã§å®è¡ â ãããã³ã€ã³ãèªåã§å£²è²·
- ð¡ïž ãã¢å£åº§ â ãæ¬ç©ã®ãéãããªããã§å®å¿ãã¹ã
- ð 24æé皌å â ããªããå¯ãŠãŠããä»äºããŠãŠãåããŠã
ãã ãïŒ æåã¯ãã¢å£åº§ã§ãå°ããªéé¡ããå§ããŠãã ãããããããªã倧éã¯ãªã¹ã¯ãé«ãã§ãã
ð€ ããªãã§ãã®çµã¿åãããªã®ïŒãçç±ã説æ
åå¿è ã®ç§ã5æ¥éæ©ã¿ã«æ©ãã§éžãã çµã¿åããã§ãã
ð Pythonãéžãã çç±ïŒ
- ãè±èªã¿ããã§èªã¿ãããã
- ãåå¿è çšã®æ å ±ãå€ãã
- ããšã©ãŒãåºãŠãGoogleã§ãã解決çãèŠã€ããã
ð TradingViewãéžãã çç±ïŒ
- ããã£ãŒãããã£ãŠããŠèŠãããã
- ãã¢ã©ãŒãæ©èœãç¡æã§äœ¿ããã
- ãã¹ããã§ã確èªã§ããã
âïž GCFãéžãã çç±ïŒ
- ãããGoogleã¢ã«ãŠã³ãæã£ãŠããã
- ãç¡ææããããããéããããªãã
- ãä»ã®ãµãŒãã¹ããèšå®ãç°¡åã
ð± Bybitãéžãã çç±ïŒ
- ããã¢å£åº§ãããããå®å¿ã
- ãæ¥æ¬èªå¯Ÿå¿ããŠãã
- ãææ°æãå®ãã
ã€ãŸããåå¿è ãã€ãŸããã«ããçµã¿åããããéžã³ãŸããã
䜿ãæè¡
5ã€ã®æè¡ãçµã¿åãããŠãµã¯ããšäœã
Pythonå ¬åŒããŒãž
https://www.google.com/intl/ja_jp/drive/
Pythonã®ãšãã£ã¿ã¯ã°ãŒã°ã«ãã©ã€ãã®äžã®ã¢ããªã䜿ã
https://jp.tradingview.com/gopro/?share_your_love=lukeharu
TradingView
https://testnet.bybit.com/ja-JP/
BYBITãã¢å£åº§
https://console.cloud.google.com/?hl=ja
ã¯ã©ãŠããµãŒããŒ
Pythonã§å šéšäœãããTradingViewãšçµã¿åãããã»ããç°¡å
Pythonã§å šéšããããšæã£ããã©ã¡ãã£ãšé£ããã§ãã
Pythonã§å
šéšããã®ã¯ãã€ãð
TradingViewã䜿ãã°
ã» ããã¯ãã¹ããå¯èœ
ã» ã¯ã©ãŠããµãŒããŒãªã®ã§24æéããã
ã» ããã©ã«ãã®ãã¯ãã«ã«ææšã»ã¹ãã©ããžãŒã䜿ãã
ã» æænoteã®ã¹ãã©ããžãŒã䜿ãã
Pythonã§ã¯æ°èŠæ³šæãšæ±ºæžã ãã€ãããŸã
ãã£ã³ããŒã³æ å ±
ãã®ããã°ã®ãªã³ã¯ããç³ã蟌ããšåé玹ä»ãã£ã³ããŒã³ã§30ãã«è²°ãã
"Bybitæ¬çªçšå£åº§"ç»é²ãã£ã³ããŒã³äž
èªå売買ã®ä»çµã¿

æé
Pythonã®åºç€ãçè§£ãã
Googleã³ã©ãã¬ãŒãã§è©ŠããŠã¿ã
èªå売買ã®ããžãã¯ãçšæãã
TradingViewã§ã¹ãã©ããžãŒã䜿ã
èªå売買ã®ã·ã¹ãã ãäœã
ã³ããã§äœ¿ããã³ãŒã
ãµãŒããŒãžèšçœ®ãã
GCF (Cloud Functions) ã«ã³ãããã
ã³ããã§åãã³ãŒã
Cloud Functionsãžã³ãŒããã³ããã§èšçœ®ãã
GCPã®ã¡ãã¥ãŒããCloud Functions

颿°ã®äœæ

æ§æ

ãªãŒãžã§ã³ãšã¯ïŒ
ãªãŒãžã§ã³ã¯ãµãŒããŒã眮ããŠããå°åã®ããšã§ããè¿ãæ¹ãæå©ãBybitã¯ã·ã³ã¬ããŒã«æ ç¹ã
æªèªèšŒã®åŒã³åºããèš±å¯
æªèªèšŒã®åŒã³åºããèš±å¯ãããšå€éšããã®ã¢ã¯ã»ã¹ãèš±å¯ã§ããŸãã
ã©ã³ã¿ã€ã

ã©ã³ã¿ã€ã ãPythonãžå€æŽ
Nodeãã
Pythonãž
main.py

requirements.txt
ãããã€ãæŒã
TradingViewã®è©³çް
è©³çŽ°ãæŒã
ã¢ã©ãŒã远å

ã¡ãã»ãŒãž
WebHook
URLã¯GCF (Cloud Functions) ã®ãã

ãµã³ãã«ã³ãŒãã®ãã¹ãæ¹æ³
ãã¹ãäžã®ã¿ããéããŸãããããŠä»¥äžã®ã³ãã³ããå ¥åããŠ
{"side":"buy"}

颿°ãã¹ãããŸã

ããŸããã£ãäŸ

Trading View ã¡ãã»ãŒãž
{"side":"{{strategy.order.action}}"}pybitç
2023幎4æ23æ¥æŽæ°
- pybit version5察å¿ããŸããã
- BOTã®æ±ºæžæ³šæããæ°èŠæ³šæãž0.1ç§åŸ æ©ããããã«å€æŽããŸããã
Cloud Functions
bot/ â main.py â requirements.txt
import timefrom pybit.unified_trading import HTTP #ãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒ # æ¬çªçš
#ãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒ # session = HTTP(
# testnet=False,
# api_key="API_KEY",
# api_secret="API_SECRET"
# )
#ãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒ # ãã¢å£åº§çš
#ãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒãŒ session = HTTP( testnet=True, api_key="YOUR_DEMO_API_KEY", # ãã¢çšAPIããŒãå
¥å api_secret="YOUR_DEMO_API_SECRET" # ãã¢çšAPIã·ãŒã¯ã¬ãããå
¥å )
def hello_world(request): request_json = request.get_json() side = request_json["side"]
# è²·ãã®å ŽååŠç
if side == "buy": position_close("Buy")#æ±ºæž time.sleep(0.1)#0.1ç§åŸ
æ© position_entry("Buy")#æ°èŠæ³šæ # 売ãã®å ŽååŠç
if side == "sell": position_close("Sell")#æ±ºæž time.sleep(0.1)#0.1ç§åŸ
æ© position_entry("Sell")#æ°èŠæ³šæ return "ok"
def position_entry(side): try: print(session.place_order( category="linear", symbol="BTCUSDT", side=side, orderType="Market", qty=0.001, positionIdx = 0 )) except Exception as e: print(e) def position_close(side): try: print(session.place_order( category="linear", symbol="BTCUSDT", side=side, orderType="Market", qty=0.001, positionIdx = 0, reduceOnly = True )) except Exception as e: print(e)requirements.txt
pybitâ ïž APIããŒã®ååŸãšã»ãã¥ãªãã£æ³šæ
éèŠãªã»ãã¥ãªãã£æ³šæäºé :
- APIããŒã¯çµ¶å¯Ÿã«å ¬éããªãã§ãã ãã
- ã³ãŒãã«APIããŒãçŽæ¥æžããªãã§ãã ãã
- æ¬çªç°å¢ã§ã¯ç°å¢å€æ°ãã·ãŒã¯ã¬ãããããŒãžã£ãŒã䜿çšããŠãã ãã
- ãŸãã¯ãã¢å£åº§ã§ååã«ãã¹ãããŠãã ãã
APIããŒã®ååŸæé
æ°ããããŒã®äœæ

ã·ã¹ãã çæAPIããŒ

APIãã©ã³ã¶ã¯ã·ã§ã³

åå

ããŒã®èš±å¯ã¯èªã¿æžã

IPå¶éãªã

ãã§ãã¯ããã¯ã¹ãäžãã5åONã«ãã

éä¿¡

èªèšŒ

APIããŒãAPIã·ãŒã¯ã¬ããããŒãååŸã§ãã

ããã°ãèµ€åãªã®ã§Amazonã®æ¬²ãããã®ãªã¹ããå ¬éããŸããããããè³Œå ¥ãããšç®¡ç人ã«è·ç©ãå±ããŸãã
https://www.amazon.jp/hz/wishlist/ls/2INMNN4LB07BD?ref_=wl_share
èªåãããã€ã·ã¹ãã ã®å°å ¥
2025幎1ææŽæ°
èšäºã³ã³ãã³ãã®å¹ççãªç®¡çã®ãããã¹ããŒããããã€ã·ã¹ãã ãå°å ¥ããŸããã
ã¹ããŒããããã€ã®ç¹åŸŽ
- 倿޿€ç¥: MDXãã¡ã€ã«ã®å€æŽãèªåæ€ç¥
- éžæçãã«ã: 倿Žããããã¡ã€ã«ã®ã¿åŠç
- èªååæ: JSONãã¡ã€ã«ã®èªåæŽæ°
- ã¯ã³ã³ãã³ããããã€: ç·šéãããããã€ãŸã§äžæ¬å®è¡
æè¡å®è£
// 倿޿€ç¥ãšãã«ãèªååconst detectChangedFiles = () => { // Gitå·®åãã倿ŽãããMDXãã¡ã€ã«ãæ€åº const changedMdx = execSync('git diff --name-only') .toString() .split('\n') .filter(file => file.endsWith('.mdx')); return changedMdx;};
// ã¹ããŒããããã€å®è¡const smartDeploy = async () => { const changedFiles = detectChangedFiles(); if (changedFiles.length > 0) { console.log('ð MDX changes detected, rebuilding...'); await buildArticles(); await deployToCloudflare(); }};äœ¿çšæ¹æ³
# ã¹ããŒããããã€ã®å®è¡npm run deploy:smart
# åŸæ¥ã®ãããã€npm run deployã¡ãªãã
- éçºå¹çåäž: ç·šéâãããã€ã1ã³ãã³ãã§å®çµ
- ãªãœãŒã¹ç¯çŽ: 倿Žããããã¡ã€ã«ã®ã¿åŠç
- ãšã©ãŒåæž: èªååã«ãã人çãã¹ã®æé€
- é«éãããã€: äžèŠãªåŠçãã¹ããã
ä»®æ³é貚èªå売買ããããããžãã¯
TradingViewã§ã¯PineScriptã䜿ã£ãŠMAãŽãŒã«ãã³ã¯ãã¹ã®ãããªååŒæŠç¥ãäœæã§ããŸãã
PineScriptã®åºæ¬çãªäœ¿ãæ¹
Trading ViewããMT4ãžæ³šæãã ãæ¹æ³
ð ããªããžã®å¿æŽã¡ãã»ãŒãžïŒåã倢ã远ã仲éãžïŒ
ãç§ã«ãæ¬åœã«ã§ããã®ããª...ããšäžå®ãªããªããž
ãã®é·ãèšäºãæåŸãŸã§èªãã§ãããŠãæ¬åœã«ããããšãããããŸãã
ãã£ãšä»ããããªæ°æã¡ãããªãã§ããããïŒ
ãã³ãŒããšãå
šç¶ããããªããã©ã倧äžå€«ããª...ã
ã倱æããŠãéã倱ã£ããããªãïŒã
ãéäžã§æ«æãã¡ãããã...ã
ãã®äžå®ããã¡ããã¡ãããããŸãã
ç§ãæåã¯ãèªåã«ã¯ç¡çã ãã£ãŠäœåºŠãæããŸããã
ã§ã倧äžå€«ãããªãã«ãã§ããŸã
âš ãã®èšäºã§æã«å ¥ãããã®ïŒ
- ð§ ç¥èïŒèªå売買ã®ä»çµã¿ãçè§£ã§ãã
- ð éå ·ïŒå®éã«äœ¿ããã³ãŒããšããŒã«
- ðª åæ°ïŒããã£ãŠã¿ããããšããæ°æã¡
ð ããããããããšïŒ
- ãã¢å£åº§ããå§ããïŒçµ¶å¯Ÿã«ãããªãæ¬çªã¯ãã¡
- å°ããå§ããïŒæåã¯å°é¡ã§æ§åãèŠã
- èšé²ãã€ããïŒäœãããŸããã£ãŠäœããã¡ã ã£ãã
ããªãã®æåããå§¿ãèŠããŠããŸã
å幎åŸã®ããªãïŒ
- ããã®æã諊ããªãã§è¯ãã£ãã
- ãä»ã§ã¯æã«æ°äžåã®å¯åå ¥ãããã
- ãä»ã®äººã«ãæããŠããããã
ãããªé¢šã«ãªã£ãŠãå§¿ãç®ã«æµ®ãã³ãŸãã
倱æããŠã倧äžå€«ãç§ãæ°ããããªãã»ã©å€±æããŸããã
ã§ãã倱æãããã³ã«åŠãã§ãå°ããã€äžæã«ãªããŸããã
ããªããªã絶察ã«ã§ããŸããå¿æŽããŠãŸãïŒ ð
ããéäžã§ã€ãŸãããããé æ ®ãªãã³ã¡ã³ãããŠãã ãããäžç·ã«è§£æ±ºããŸãããïŒ
P.S. åããŠBOTãå©çãåºããŠãããæã®æåã¯ãä»ã§ãå¿ããããŸãããããªãã«ããã£ãšããã®ç¬éã蚪ããŸããæ¥œãã¿ã«ããŠããŸãã
ðããããããŒã«ã»ãµãŒãã¹
ãã£ã³ããŒã³ã§æ1,790åããMT4/MT5ããªã€ã³ã¹ããŒã«æžã¿ãèªååŸ©æ§æ©èœä»ãã14æ¥éç¡æã詊ãã
ã·ã³ã¯ã©ãŠããã¹ã¯ããã for FX4幎ã§è³é4.7åã®ããã¯ãã¹ãå®çžŸããœãŒã¹ã³ãŒãä»ãã§èªç±ã«ã«ã¹ã¿ãã€ãºå¯èœã
ãŽããŒæ¥EA UltimateçïŒ3,980åïŒâ»äžèšãªã³ã¯ã«ã¯ããã¢ãŒã·ã§ã³ïŒåºåïŒãå«ãŸããŠããŸã
éåçžå Žè¬ç¥ïœããœãP
ããã°ã§ã¯æžããªãæ¬é³ã®ãã¬ãŒãæŠç¥ãšEAéçºã®è£åŽãå ¬éã ããŒã¿ã«åºã¥ããæ€èšŒã§ãåçŸæ§ã®ããææ³ã ãããå±ãããŸãã