ãããã°ã©ããŒãå®è£ ããå¿ èŠã®ãã10ã®ãããžã§ã¯ããã®ãããªèšäºã«åºãããããšããããããŸãããã¬ãŒãã£ã³ã°ãããã¯ããããã®èšäºã«èšèŒãããŠããããšããããããŸãããã¬ãŒãã£ã³ã°ãããã®éçºã¯äŸ¡å€ã®ããæè³ã ãšæããŸããããã§ãããã«ã€ããŠã®ãã¥ãŒããªã¢ã«ãæžãã®ã«å°ãæéããããããšã«ããŸããã
ããããããã§ããã€ãã®ã³ãŒãã1è¡ãã€è§£æããã®ã§ã¯ãªããç¬èªã®ããããäœæããã人ãªã誰ã§ãç¥ã£ãŠããã¹ãæŠå¿µãåæããæ¹ããããšå€æããŸãããç§ã®è³æã®ãã€ã³ãã¯ããããèªãã åŸãããªãã¯èªåã§ã³ãŒããæžãã ãããšããããšã§ãã
ãããã£ãŠããã¬ãŒãã£ã³ã°ããããéçºããããã«ç¥ã£ãŠãããšäŸ¿å©ãªããšãšããã®ããã«å¿ èŠãªããšïŒååŒæã§ã®äœæ¥ããåçŽãªãã¬ãŒãã£ã³ã°æŠç¥ã®å®è£ ãŸã§ïŒã«ã€ããŠèª¬æããŸããããã§ã¯ãåçŽãªãã¬ãŒãã£ã³ã°ãããã®ã¢ãŒããã¯ãã£ãšå éšæ§é ã«é¢é£ããåé¡ãšããããã®æ ¹åºã«ããã¢ã€ãã¢ã«ã€ããŠèª¬æããŸãã ç䌌ã³ãŒãã§æžãããäŸã瀺ããŸãããããã£ãŠããã®ã¬ã€ããèªãã§ãéžæããããã°ã©ãã³ã°èšèªã§ç¬èªã®ããããããã«äœæã§ããŸãã ãã®çµæãäœ¿ãæ £ããããŒã«ãå¿«é©ã«äœ¿çšã§ããŸããèœã¡çããŠããã°ã©ãã³ã°ãè¡ãããšãã§ããäœæ¥ç°å¢ã®èšå®ãæ°ããèšèªã«æ £ããã®ã«æéãè²»ããå¿ èŠããããŸããã ããªãã¯æŠåšãéžã³ãŸãããããŠç§ã¯ããªãã«ãã®æŠåšã®äœ¿ãæ¹ãæããŸãã
ã¹ããã1.æŠåšã®éžæ
ãã®ãã¥ãŒããªã¢ã«ã®æåã®ã¹ãããã§ã¯ã䜿çšããããã°ã©ãã³ã°èšèªãéžæããŸãããã®è³ªåã¯èªåã§æ±ºããå¿ èŠããããŸãã
å°æ¥çã«ãããã«æ©æ¢°åŠç¿ã¡ã«ããºã ãè£ åããäºå®ãããå Žåã¯ãPythonãªã©ã®äžéšã®èšèªãæšå¥šãããå ŽåããããŸããããããç§ã®äž»ãªã¢ã€ãã¢ã¯ãäœæ¥ã«æã䟿å©ãªèšèªãéžæã§ãããšããããšã§ãã
ã¹ããã2.æŠå Žãæ¢ã

éèŠãªãããã¯ã®1ã€ã¯ããã¬ãŒãã£ã³ã°ãããã®äœæã«é¢ãããã¥ãŒããªã¢ã«ã§ã¯èŠèœãšãããã¡ã§ããããã¯ååŒæã®éžæã«é¢ãããã®ã§ããäºå®ãããããäœæãããç®çãå®è¡ã§ããããã«ããã«ã¯ãäœããååŒã§ããååŒæã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãããšã¯ã¹ãã§ã³ãžãéžæãããã®äœ¿ç𿹿³ãç¥ãããšã¯ãããã°ã©ãã³ã°ã¹ãã«ãšåããããéèŠã§ãã
ãããã£ãŠãæåã®ã¹ãããã¯ãäœãååŒãããïŒæ ªåŒãé貚ãæå·é貚ïŒãæ£ç¢ºã«æ±ºå®ããã©ãã§ååŒããããæ£ç¢ºã«æ±ºå®ããããšã§ãã
ååŒæã§ååŒãããè³ç£ã«ã€ããŠè©±ãå Žåã¯ãæå·éè²šã«æ³šæãæãããšããå§ãããŸãããã®æšå¥šã®çç±ã¯ãç§ããããã¯ãã§ãŒã³ãã¯ãããžãŒãšæå·é貚ã®ãµããŒã¿ãŒã§ãããšããããšã§ã¯ãªãïŒç§ã¯ãã®åé¡ã«ã€ããŠå®å šã«ãªãŒãã³ã§ãïŒãæå·é貚åžå Žã24æé幎äžç¡äŒã§éããŠãããšããããšã ãã§ãã
ããå€ãã®ãäŒçµ±çãªãè³ç£ã¯ãç¹å®ã®æéééã§ã®ã¿ããããŠå€ãã®å Žåå¹³æ¥ã«ã®ã¿ååŒããããšãã§ããŸããããšãã°ãæ ªåŒåžå Žã¯éåžžãåå9æããååŸ4æãŸã§éããŠããã鱿«ã¯äŒæ¥ããŠããŸãã FOREXåžå Žã¯ã24æé皌åã§ããŸãããéåžžã¯é±æ«ã¯äŒæ¥ããŠããŸãã
ãã®ç¹ã§ãæå·é貚ã¯ç§ãã¡ã«æãé©ããŠããŸãããã®åžå Žãéžæãããšãããããäžæããããšãªãåäœã§ããããã«ãªãããã§ããããã«ãæå·é貚ã¯é«ã¬ãã«ã®å€åæ§ã§ç¥ãããŠããŸããããã¯ã第äžã«ãããããååŒããããšã§å€ãã®ãéã倱ãå¯èœæ§ãããããšããããŠç¬¬äºã«ãããããååŒæŠç¥ãç ç©¶ããã³ãã¹ãããããã®åªããããŒã«ã§ããããšãæå³ããŸãã
亀æè³ç£ã«ã€ããŠã¯ãã§ã«èª¬æããŸãããæ¬¡ã«ãããããäœæããååŒæãéžæããéã«èæ ®ãã¹ãèŠä»¶ã«ã€ããŠèª¬æããŸããã€ãŸããç§ã¯2ã€ã®åºæ¬çãªèŠä»¶ã«ã€ããŠè©±ããŠããã
- éžæããååŒæã§åæ³çã«ååŒãããããæäŸããååŒææ®µã䜿çšã§ããå¿ èŠããããŸããæå·é貚ã«ã€ããŠè©±ãå Žåãäžéšã®åœã§ã¯ãããã®ååŒãçŠæ¢ãããŠããŸããæ¥œåšã亀æãéžã¶ãšãã¯ããããèæ ®ããŠãã ããã
- API, . , .
ç¹å®ã®ååŒæããããã®2ã€ã®åºæ¬çãªèŠä»¶ãæºãããŠããããšã倿ããããããããã詳现ã«åæã§ããŸããããšãã°ãã³ããã·ã§ã³ã®ãµã€ãºãèŠç©ãã£ããããã®ä¿¡é Œæ§ãšäººæ°ãè©äŸ¡ããããAPIã®ããã¥ã¡ã³ãã®å質ã調ã¹ããããŸãã
ããã§ããä»ã®ãã¹ãŠãšåããããéèŠã§ãããååŒæã®ååŒéãè©äŸ¡ããããšããå§ãããŸããå°éã®ååŒæã¯ãäŸ¡æ Œå€åã«é ãããšãåŸåããããŸããããã«ããããã«å¯ŸããŠæå€æ³šæãå®è¡ããããšã¯ããå°é£ã§ãïŒããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸãïŒã
æçµçã«æå·é貚ãéžæããããšã«ããå Žåã¯ãããã«äžäœã®ååŒæã®è¯ããªã¹ãããããŸããããã§ã¯ãååŒæã®éžæã«åœ¹ç«ã€ããŸããŸãªæ å ±ãèŠã€ããããšãã§ããŸãã
ã¹ããã3.ãã£ã³ããæ§ç¯ãã

亀æãæŠå Žã§ããå Žåãæ¬¡ã«ãè»éãæŠå Žã«éãå Žæã«ã€ããŠè©±ããŸããã¡ãªã¿ã«ããã®ãããªé¡æšãšçµã³ã€ãæãæ¥ãã®ãããããŸããã
ããã§ãµãŒããŒã«ã€ããŠè©±ããŸãããããã³ãŒãã¯ãããããExchangeAPIã«èŠæ±ãéä¿¡ã§ããããã«ãããµãŒããŒã§å®è¡ããå¿ èŠããããŸãã
ãã¡ããããããããã¹ããããšãã¯ãã³ã³ãã¥ãŒã¿ãŒããµãŒããŒãšããŠæ©èœãããããšãã§ããŸããããããããããåžžã«æ©èœããå¿ èŠãããå Žåãéåžžã®ã³ã³ãã¥ãŒã¿ãŒã¯ééããªãæè¯ã®éžæã§ã¯ãããŸããã
ããã«2ã€ã®ææ¡ããããŸãïŒ
- ãµãŒããŒã®åœ¹å²ã¯ãRaspberry Piãæããããšãã§ããŸãïŒãã®ã¢ãããŒãã¯ããè峿·±ããã®ã§ãïŒã
- ãµãŒããŒã¯ããçš®ã®ã¯ã©ãŠããµãŒãã¹ã«ããããšãã§ããŸãïŒãããŠãã®ã¢ãããŒãã®æ¹ãåªããŠããŸãïŒã
ç¬èªã®RaspberryPiãµãŒããŒã«åºã¥ããŠããããç·šæããããšã¯ãè峿·±ãçŸä»£çãªã¢ã€ãã¢ã ãšæããŸãããããã£ãŠããã®ã¢ã€ãã¢ãæ°ã«å ¥ã£ãå Žåã¯ããããå®çŸã§ããŸãã
ããããã»ãšãã©ã®ããããã«ããŒã¯ãããããã®ãããªã¯ã©ãŠãã»ãããã€ããŒãéžã¶ã ããAWSãAzureã®ãGCSããŸãã¯ããžã¿ã«ãªãŒã·ã£ã³ã
äž»èŠãªã¯ã©ãŠããããã€ããŒã®ã»ãšãã©ã«ã¯åªããç¡æãã©ã³ãããããããã®ãããã€ããŒã§ããããç¡æã§ãã¹ãã§ããå¯èœæ§ããããŸãã
ããã§ããµãŒããŒã«ã€ããŠã®ç§ã®äŒè©±ã¯çµããã§ããèªåã«æé©ãªãã®ãéžæããå¿ èŠããããŸããç§ãã¡ãåãçµãã§ãããããªå°ããªãããžã§ã¯ãã®å Žåãéžæããããã®ãæçµçµæã«å€§ããªåœ±é¿ãäžããããšã¯ãããŸããã
ã¹ããã4.ããããäœæãã

ãããŠä»ã楜ãã¿ãå§ãŸããŸãããã ãããããžã§ã¯ãã®ãã®éšåãéå§ããåã«ã次ã®ããšãè¡ããããã©ããã確èªããŠãã ããã
- ååŒæã«ç»é²ããååŒæã§ã®äœæ¥ã«å¿ èŠãªèš±å¯ãåãåããŸããã
- Exchange APIãæäœããæ©èœããããAPIããŒããããŸãã
- ãããã®ãã¹ãã£ã³ã°ãéžæããŸããã
ãããã®åé¡ã解決ãããã°ãå ã«é²ãããšãã§ããŸãã
âã·ã³ãã«ãªããã
ç§ã®ç®æšã¯ããããŸã§ãããã«ã€ããŠãŸã£ããäœãç¥ããªãã£ã人ããåçŽã«æ©èœããããããäœæããã¬ãã«ã«äžããã®ãæ¯æŽããããšã§ãããããã£ãŠãããŒãºã«å¿ããŠæ¡åŒµããã³æ¹åã§ããç°¡åãªãã¬ãŒãã£ã³ã°ããããäœæããæ¹æ³ã説æããŸãã
ãããã«ã¯ããã€ãã®å¶éããããŸãã
- ãããã¯ãè³Œå ¥ïŒè³Œå ¥ïŒãŸãã¯è²©å£²ïŒè²©å£²ïŒã®2ã€ã®ç¶æ ã®ããããã«ãšã©ãŸãããšãã§ããŸãã圌ã¯åžžã«ç°ãªãäŸ¡æ Œã§å£²è²·æ³šæãåºãããšã¯ãããŸãããæåŸã®æäœã販売ã ã£ãå Žåãããããå®è¡ããããšããæ¬¡ã®æäœã¯è³Œå ¥ã§ãã
- ãããã¯ãåºå®ã®ãããå€ã䜿çšããŠå£²è²·ã®æ±ºå®ãè¡ããŸããããã€ã³ããªãžã§ã³ããªãããã¯ãããŸããŸãªææšã«åºã¥ããŠãã®ãããªå€ãåå¥ã«èª¿æŽã§ããå¯èœæ§ããããŸããããããã®æŠç¥ãšå¶éã¯æåã§èšå®ãããŸãã
- 圌ã¯1ã€ã®é貚ãã¢ã®ã¿ãååŒããŸããäŸ-BTC / USDã
ãããã®å¶éã«ãããã¿ã¹ã¯ãç°¡åã«ãªããŸãããããã¯ã·ã³ãã«ã«ãªããŸããã€ãŸããæ§ç¯ãšä¿å®ãç°¡åã«ãªããŸããããã«ãããã³ãŒãããµãŒããŒã«éåžžã«è¿ éã«ãããã€ããããšãã§ããŸããåºæ¬çã«ãããã§ã¯KISSã®ååã«ã€ããŠè©±ããŸãã
âæææ±ºå®ã¡ã«ããºã
ããã¯ãããããã©ã®ããã«æ©èœããŠãããã®æŠèŠã瀺ãç°¡åãªå³ã§ãã

ããã§ããããã¢ãŒããã¯ãã£ã®èšç»ãéå§ã§ããŸãã
ãŸããçŸæç¹ã§ã®ãããã®æ£ç¢ºãªç¶æ ã«é¢ããæ å ±ãæ ŒçŽãã倿°ãå¿ èŠã§ããè³Œå ¥ãŸãã¯è²©å£²ã®ããããã§ããããŒã«å€æ°ãŸãã¯åæã¯ããã®ãããªæ å ±ãæ ŒçŽããããã®è¯ãéžæã§ãã
次ã«ã売買æäœã®ãããå€ãèšå®ããå¿ èŠããããŸãããããã®å€ã¯ããŒã»ã³ããŒãžã§è¡šãããååã®ååŒä»¥éã®è³ç£ã®äŸ¡æ Œã®å¢æžã衚ããŸãã
ããšãã°ã100ãã«ã§äœããè³Œå ¥ããçŸåšã®äŸ¡æ Œã102ãã«ã®å Žåã2ïŒ ã®äŸ¡æ Œäžæã«å¯ŸåŠããŸããSELLæäœã®ãããå€ãäŸ¡æ Œã®1ïŒ ã®äžæã«èšå®ãããŠããå Žåããããã¯ãã®2ïŒ ãèŠãŠããã§ã«èšå®ãããããå€ãè¶ ããå©çãäžããŠãããããè³ç£ã売åŽããŸãã
ç§ãã¡ã®å Žåããã®ãããªå€ã¯å®æ°ã«ãªããŸãããããã®ç¶æ ããšã«4ã€ã®ãã®ãããªå€-2ãå¿ èŠã§ãã
âè³Œå ¥æäœã®ãããå€ïŒããããè²©å£²ç¶æ ã®å ŽåïŒ
DIP_THRESHOLDïŒäŸ¡æ Œãæå®ãããå€ããã倧ããå€ã ãäžãã£ãå Žåããããã¯è³Œå ¥æäœãå®è¡ããŸãDIP_THRESHOLDããã®èåŸã«ããçè«çæ ¹æ ã¯ãäœäŸ¡æ Œã§è³Œå ¥ãé«äŸ¡æ Œã§è²©å£²ããæŠç¥ãå®è£ ããããšã§ããã€ãŸãããããã¯ãäŸ¡æ Œã®äžæãšè³ç£ã®åçæ§ã®é«ã売åŽã®å¯èœæ§ãæåŸ ããŠãè³ç£ãå²åŒäŸ¡æ Œã§è³Œå ¥ããããšããŸããUPWARD_TREND_THRESHOLDïŒãã®å®æ°ã§æå®ãããå€ãããé«ãå€ã§äŸ¡æ Œãäžæããå Žåããããã¯è³ç£ãè³Œå ¥ããŸãããã®åãã¯ããå®ãè²·ããé«ã売ãããšããå²åŠãšççŸããŸãããã®ç®çã¯ãäŸ¡æ Œãããã«äžæããåã«äžæãã¬ã³ããç¹å®ããè³Œå ¥ã®æ©äŒãéããªãããšã§ãã
ãããã®å®æ°ã®æå³ãçè§£ããã®ã«åœ¹ç«ã€å³ã次ã«ç€ºããŸãã

å³ã«èµ€ãSELLããŒã«ãŒã§ããŒã¯ãããæç¹ã§SELLæäœãå®è¡ããå Žåããã®åŸããããã¯BUYæäœãå®è¡ãããã©ãããæ±ºå®ãããšãã«ããããå€
DIP_THRESHOLDãšã«ãã£ãŠã¬ã€ããããŸãUPWARD_TREND_THRESHOLDã
äŸ¡æ Œãäžã®ç·ã®ç·ããäžãŸãã¯äžã®ç·ã®ç·ããäžã«ããå Žåãè³Œå ¥æäœãå®è¡ããŸããå³ã®ãããªç¶æ³ã§ãäŸ¡æ Œãäžéãè¶ ããŸããããããã£ãŠãå€ã«åºã¥ããŠ
UPWARD_TREND_THRESHOLDãBUYæäœãå®è¡ããŸããã
âSELLæäœã®ãããå€ïŒããããBUYç¶æ ã®å ŽåïŒ
PROFIT_THRESHOLDïŒä»¥åã¯äœäŸ¡æ Œã§è³Œå ¥ãããŠãããããäŸ¡æ Œããã®å€ã«åºã¥ããŠèšç®ãããäŸ¡æ Œãããé«ããªã£ãå Žåããããã¯è³ç£ã販売ããŸãããããç§ãã¡ãå©çãäžããæ¹æ³ã§ããè³Œå ¥æã®äŸ¡æ Œãããé«ãäŸ¡æ Œã§è³ç£ã販売ããŠããŸããSTOP_LOSS_THRESHOLDïŒçæ³çã«ã¯ãããããè³ç£ã売åŽããã®ã¯ã売åŽãç§ãã¡ã«ãšã£ãŠæçãªå Žåã®ã¿ã§ãããããããããããåžå Žã®åŒ·ãäžèœããããŸããããã®ãããªç¶æ³ã§ã¯ã倧ããªæå€±ãçºçããåã«ååŒãçµäºããåŸã§äœäŸ¡æ Œã§è³ç£ãè³Œå ¥ããããšã«ããŸãããã®ãããå€ã¯ãéæ¹ã«æ®ããŠããžã·ã§ã³ãéããããã«äœ¿çšãããŸãããã®æäœã®ç®çã¯ããã倧ããªæå€±ãé²ãããšã§ãã
ãããã€ã©ã¹ãã§ãã

ããã¯ãè³Œå ¥ããŒã«ãŒãããå Žæã§è³Œå ¥ãè¡ããããšãã®ç¶æ³ã瀺ããŠããŸãããã®åŸãäŸ¡æ Œã¯èŠå®ã®é床é¡ã«éãã
PROFIT_THRESHOLDå©çãäžããŠå£²åŽããŸããããããããããéãçšŒãæ¹æ³ã§ãã
ããããã©ã®ããã«æ©èœãããã«ã€ããŠã®äžè¬çãªçè§£ãã§ããã®ã§ã次ã¯ç䌌ã³ãŒããèŠãŠã¿ãŸãããã
âAPIãæäœããããã®äŸ¿å©ãªé¢æ°
ããããæåã«å¿ èŠãšããã®ã¯ãExchangeAPIã䜿çšããŠããŒã¿ã亀æããæ©èœã§ãããããã®æ©èœã¯ãããã€ãã®ãã«ããŒé¢æ°ã䜿çšããŠå®è£ ããŸãã
FUNCTION getBalances():
DO: GET- API
RETURN:
FUNCTION getMarketPrices():
DO: GET- API
RETURN:
FUNCTION placeSellOrder():
DO:
1. (
, ,
50% )
2. POST- API
SELL
RETURN:
FUNCTION placeBuyOrder():
DO:
1. (
, ,
50% )
2. POST- API
BUY
RETURN:
// ,
//
FUNCTION getOperationDetails():
DO: GET- API
RETURN:
äžèšã®ã³ãŒãã¯ãå€ãã®èª¬æãªãã«èªæã§ããã¯ãã§ãããã ãããã®æ©èœãå®è£ ããã«ã¯ãäœãã®è³Œå ¥ãŸãã¯è²©å£²ãéå§ããPOSTèŠæ±ãå®è¡ãããšãã«ãAPIã«æž¡ãå¿ èŠã®ããããŒã¿ãæ£ç¢ºã«ç¥ã£ãŠããå¿ èŠããããŸãã
å€ãã®å Žåãããšãã°ãXAU / USDãã¢ïŒéãšç±³ãã«ïŒãååŒãããšãããªã¯ãšã¹ããå®è¡ãããšãã«ãè³Œå ¥ããå¿ èŠã®ããéã®éãŸãã¯è²©å£²ããå¿ èŠã®ãããã«ã®ãããããæå®ã§ããŸãããã®ãããªèŠæ±ãå®è¡ãããšãã¯ãå®è¡ãããã¢ã¯ã·ã§ã³ã®æå³ãæç¢ºã«çè§£ããããšãéåžžã«éèŠã§ãã
âã¡ã€ã³ãããã«ãŒã
ãã«ããŒé¢æ°ã®æºåãã§ããã®ã§ããããã®ã¢ã¯ã·ã§ã³ã®èª¬æãå§ããŸãããããŸããäžå®ã®ééã§å®è¡ãããç¡éã®ã«ãŒããäœæããå¿ èŠããããŸãããããã«30ç§ããšã«æäœãå®è¡ãããããšããŸããããã¯ããã®ãããªã«ãŒããã©ã®ããã«èŠãããã§ãã
FUNCTION startBot():
INFINITE LOOP:
attemptToMakeTrade()
sleep(30 seconds)
次ã«ãäžèšã§èª¬æãã倿°ãšå®æ°ãæ§æããæ±ºå®ãäžããããã«ãããããããžãã¯ãèšè¿°ããŸãããã®çµæãè£å©é¢æ°ãšã¡ã€ã³ã«ãŒãã«å ããŠãã¡ã€ã³ãããã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
bool isNextOperationBuy = True
const UPWARD_TREND_THRESHOLD = 1.50
const DIP_THRESHOLD = -2.25
const PROFIT_THRESHOLD = 1.25
const STOP_LOSS_THRESHOLD = -2.00
float lastOpPrice = 100.00
FUNCTION attemptToMakeTrade():
float currentPrice = getMarketPrice()
float percentageDiff = (currentPrice - lastOpPrice)/lastOpPrice*100
IF isNextOperationBuy:
tryToBuy(percentageDiff)
ELSE:
tryToSell(percentageDiff)
FUNCTION tryToBuy(float percentageDiff):
IF percentageDiff >= UPWARD_TREND_THRESHOLD OR percentageDiff <= DIP_THRESHOLD:
lastOpPrice = placeBuyOrder()
isNextOperationBuy = False
FUNCTION tryToSell(float percentageDiff):
IF percentageDiff >= PROFIT_THRESHOLD OR percentageDiff <= STOP_LOSS_THRESHOLD:
lastOpPrice = placeSellOrder()
isNextOperationBuy = True
ãã®ã³ãŒãã®ãããå€ã¯ã©ã³ãã ã«éžæãããŠããããšã«æ³šæããŠãã ãããååŒæŠç¥ã«åŸã£ãŠããããã®å€ãèªåã§éžæããå¿ èŠããããŸãã
äžèšã®ã³ãŒãããã«ããŒé¢æ°ããã³é¢æ°ã®ãããªãã®ã§è¡šãããšãã§ããã¡ã€ã³ãããã«ãŒããšçµã¿åããããš
mainãããã¯ããããã«å
žåçãªåºæ¬æ©èœãåããéåžžã«åçŽãªåäœããããã§ããããšãæå³ããŸãã
ãµã€ã¯ã«ã®åå埩ã§ããããã¯çŸåšã®ç¶æ ïŒè³Œå ¥ãŸãã¯è²©å£²ïŒããã§ãã¯ããçŸåšã®ç¶æ³ãåæãããšãã«ã³ãŒãã«ããŒãã³ãŒããããŠãããããå€ã䜿çšããŠãååŒæäœãå®è¡ããããšããŸããæ¬¡ã«ãæäœãå®äºãããšããããã¯çŸåšã®ç¶æ ã«é¢ããæ å ±ãšæåŸã®æäœãå®è¡ããããšãã®äŸ¡æ Œã«é¢ããããŒã¿ãæŽæ°ããŸãã
ã¹ããã5.ããããæ¹åãã

ãããã®åºæ¬çãªã¢ãŒããã¯ãã£ã¯æºåãã§ããŠããŸããããããããã€ãã®è¿œå æ©èœãè£ åããããšã§ãããããå°ãæ¹åããããšãã§ããŸãã
âéèª
ãã®ãããã®ããªã¢ã³ãã®1ã€ãäœæãå§ãããšãããããããã®ã¢ã¯ã·ã§ã³ã«é¢ããæ å ±ãåžžã«ãã°ã«èšé²ãããããã端æ«ãšå¥ã®ãã°ãã¡ã€ã«ã«åºåããããšãéåžžã«éèŠã§ããã
ããã°ã©ã ã®åã¹ãããã«ã¯ãããããæ¬¡ã®èšé²ãä»éããŠããå¿ èŠããããŸãã
[BALANCE] USD Balance = 22.15$
[BUY] Bought 0.002 BTC for 22.15 USD
[PRICE] Last Operation Price updated to 11,171.40 (BTC/USD)
[ERROR] Could not perform SELL operation - Insufficient balance
ãã°ãã¡ã€ã«ã«èšé²ãããå 容ã«ã¯ã¿ã€ã ã¹ã¿ã³ããä»ããããŸãããã®çµæã1æ¥ã«1åãµãŒããŒã«æ¥ç¶ããŠãããšãã°ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããå Žåããšã©ãŒããã€çºçããããããã³ããããåžžã«äœãããŠããããæ£ç¢ºã«ç¥ãããšãã§ããŸãã
ãããã«ãããã®æ©èœãè£ åãããšããããšã¯ããšããååã®é¢æ°ãäœæããããšãæå³ã
createLogãŸãããã®é¢æ°ã¯ãã¡ã€ã³ãããã«ãŒãã®ãã¹ãŠã®ã¹ãããã§åŒã³åºãå¿
èŠããããŸãããã®é¢æ°ã¯æ¬¡ã®ããã«ãªããŸãã
FUNCTION createLog(string msg):
DO:
1. msg
2. msg ,
âãã¬ã³ãã®ç¹å®
ç§ãã¡ã®ãããã®äž»ãªç®æšã¯ãè³ç£ãå®ãè³Œå ¥ããŠè²©å£²ããå©çãäžããããšã§ãããããã圌ã®ã³ãŒãã«ã¯ã2ã€ã®ãããå€ã衚ã2ã€ã®å®æ°ããããããã¯ãã®ç®æšãšéšåçã«ççŸããŠããŸãããã
UPWARD_TREND_THRESHOLDãšSTOP_LOSS_THRESHOLDã
ãããã®å€ã¯ãäŸ¡æ Œãäžãã£ããšãã«è³ç£ã売åŽããããšã«ãã£ãп倱ãå¶éããäŸ¡æ Œãäžãã£ããšãã«è³ç£ã®è³Œå ¥ãæŽçããããšãç®çãšããŠããŸããããã§ã®ãã€ã³ãã¯ã圌ãã®å©ããåããŠããã¬ã³ããäŸ¡æ ŒãçŸãããšãã«ãéåžžã®æŠç¥ã®éçãè¶ ããŠäºæž¬ããããšããŸãããç§ãã¡ã«å®³ãåãŒããããéãäžããå¯èœæ§ããããšããããšã§ãããããšå¥ã®äž¡æ¹ãç§ãã¡ã®åŽã§ããã€ãã®è¡åãæäŸããŸãã
äŸ¡æ Œåæãæ©èœããæ¹æ³ã¯ãä»ã§ã¯ç§ãã¡ãéåžžã«å¶éããŠããŸããäžå¯Ÿã®ææšãæ¯èŒããããšã«ãã£ãŠå®è¡ãããäŸ¡æ Œåæã¯ãåŸåãç¹å®ããããã®ã¡ã«ããºã ãšã¯ã»ã©é ããã®ã§ãã
ãããã幞ããªããšã«ãããŸãåé¡ãªãããã¬ã³ãæ€åºã·ã¹ãã ã®ä¿¡é Œæ§ãé«ããããšãã§ããŸãã
以åãããå€ãã®äŸ¡æ Œå€ã®èгå¯ãæŽçããå¿ èŠããããŸãã以åã¯ã1ã€ã®äŸ¡æ Œææšã«é¢ããæ å ±ïŒæåŸã®æäœæã®è³ç£ã®äŸ¡å€ã«é¢ããæ å ±ïŒã®ã¿ãä¿åããŠããŸããïŒ
lastOpPriceïŒãããšãã°ãããããµã€ã¯ã«ã®æåŸã®10åãŸãã¯20åã®ç¹°ãè¿ãã®äŸ¡æ Œã«é¢ããæ
å ±ãä¿åããããããçŸåšã®äŸ¡æ Œãšæ¯èŒããããšãã§ãlastOpPriceãŸãããã®ã¢ãããŒãã§ã¯ãé·æéã«ããã£ãŠçºçããå€åã§ã¯ãªããçæçãªäŸ¡æ Œå€åããã£ããã£ã§ãããããããã«ããåŸåãããé©åã«ç¹å®ã§ããå¯èœæ§ããããŸãã
âããŒã¿ããŒã¹ïŒ
åçŽãªãããã¯å®éã«ã¯ããŒã¿ããŒã¹ãå¿ èŠãšããŸãããçµå±ã®ãšããã圌ã¯éåžžã«å°éã®ããŒã¿ã§æäœããå¿ èŠãªãã¹ãŠã®æ å ±ãã¡ã¢ãªã«ä¿åããŠããŸãã
ããããããšãã°ãããããç°åžžã«åæ¢ããå Žåã¯ã©ããªããŸããïŒäººéã®ä»å ¥ãªãã«ãã©ããã£ãŠåœŒã¯ãã®æå³ãäœã§ãã£ã
lastOpPriceããç¥ãããšãã§ããŸããïŒ
åèµ·åæã«ãããã³ãŒãã«æåã§ä»å ¥ããå¿ èŠããªããããã«ãã®ãããªããã€ãã®ã€ã³ãžã±ãŒã¿ãŒãæ ŒçŽã§ããåçŽãªããŒã¿ããŒã¹ãå¿ èŠã«ãªãå ŽåããããŸã
lastOpPriceã
ãã®ã¢ãããŒãã§ã¯ããããã¯èµ·åæã«ãã³ãŒãã«ããŒãã³ãŒããããŠããå€ã䜿çšããªãå ŽåããããŸãã代ããã«ãä¿åãããããŒã¿ã«ã¢ã¯ã»ã¹ããäžæãããšããããåéããŸãã
ãã®ãããŒã¿ããŒã¹ãã®åçŽãã«ãã£ãŠã¯ãéåžžã®.txtãã¡ã€ã«ãŸãã¯.jsonãã¡ã€ã«ããã®ãŸãŸäœ¿çšããããšãã§ããŸãããããã«ãããéåžžã«ä¿åããããšã«ã€ããŠè©±ããŠããããã§ããéãããããŒã¿ã»ããã
âã³ã³ãããŒã«ããã«

ãããã®ã¢ã¯ãã£ããã£ã®èŠèŠåãæŽçããã³ãŒããç·šéããã«ç®¡çãããå Žåã¯ãããããããçš®ã®ã³ã³ãããŒã«ããã«ã«æ¥ç¶ããããšããå§ãããŸãã
ããã«ã¯ããããããã®æ©èœã管çããããã®ç¬èªã®ãµãŒããŒAPIãæã£ãŠããå¿ èŠããããŸãã
ããšãã°ããã®ã¢ãããŒãã§ã¯ããããå€ãç°¡åã«å€æŽã§ããŸãã
å©çšå¯èœãªããã·ã¥ããŒããã³ãã¬ãŒãã¯å€æ°ãããŸããã€ãŸãããã®ãããªããšãè¡ãå Žåã¯ãæåããäœæããå¿ èŠã¯ãããŸãããããšãã°ãStartBootstrapãšCreativeTimãèŠãŠãã ããã
âå±¥æŽããŒã¿ã®ãã¹ãæŠç¥
å€ãã®ååŒæã§ã¯ãã¯ã©ã€ã¢ã³ããéå»ã®äŸ¡æ ŒããŒã¿ã«ã¢ã¯ã»ã¹ã§ããŸããããã«ããã®ãããªããŒã¿ãå¿ èŠãªå Žåã¯ãéåžžãç°¡åã«ååŸã§ããŸãã
ãããã®äœ¿çšã¯ãå®éã«é©çšããåã«ååŒæŠç¥ããã¹ãããã®ã«éåžžã«åœ¹ç«ã¡ãŸããããã«ãããå±¥æŽããŒã¿ãšåœã®ãéã䜿çšããŠã·ãã¥ã¬ãŒã·ã§ã³ãå®è¡ã§ããŸããããã«ããããããå€ã®ããã©ãŒãã³ã¹ãææ¡ããå¿ èŠã«å¿ããŠãããã®å€ã倿Žã§ããŸãã
âãããå€ãšã¯ã¬ãŒã ã«é¢ããè¿œå æ å ±
泚æããéã«çæãã¹ãç¹ãããã€ããããŸãã
ãŸããæ³šæã«ã¯å¶éãšåžå Žã®2çš®é¡ãããããšãç¥ã£ãŠããå¿ èŠããããŸããããã«ã€ããŠäœãç¥ããªãå Žåã¯ãå¿ ãç¹å¥ãªæç®ãèªãå¿ èŠããããŸãããããã®ã¢ã€ãã¢ãç°¡åã«èª¬æããŸãã
æè¡æ³šæã¯ãçŸåšã®åžå ŽäŸ¡æ Œã§å®è¡ãããæ³šæã§ããã»ãšãã©ã®å Žåãããã¯ãããã®å³æå®è£ ãæå³ããŸãã
äžæ¹ãæå€æ³šæã¯ãåžå ŽãäžåãäŸ¡æ ŒïŒè²·ã泚æã®å ŽåïŒãŸãã¯åžå ŽãäžåãäŸ¡æ ŒïŒå£²ã泚æã®å ŽåïŒãç€ºãæ³šæã§ãããã ããäŸ¡æ Œãæå®å€ã«éããªãå ŽåããããŸãã®ã§ããããã®æ³šæãå®è¡ãããä¿èšŒã¯ãããŸããã
æå€æ³šæã®åŒ·ã¿ã¯ãåžå Žã®åããäºæž¬ããŠããã¬ãŒããŒã®æèŠã§ã¯äŸ¡æ ŒãããåŸãå Žæã«æ³šæãåºãããšãã§ããããšã§ãã
ããã«ããã®ãããªæ³šæã«ã¯éåžžãåžå Žã®æ³šæãããäœãææ°æãé©çšãããŸããããã¯ãéåžžãããããããã€ã«ãŒãã£ãŒããæè¡æ³šæã«é©çšãããéåžžãã¡ãŒã«ãŒãã£ãŒããšåŒã°ãããã®ã泚æãå¶éããããã§ãã
ãããã®ææ°æããã®ããã«åœåãããŠããçç±ã¯ãæè¡æ³šæãåºã人ã¯èª°ã§ãçŸåšã®åžå ŽäŸ¡æ Œãåã«ãåã£ãŠãããããã§ãããŸããæå€æ³šæã¯åžå ŽäŸ¡æ Œã®ç¯å²å€ã§ãããåžå Žã«æµåæ§ã远å ãããã®çµæããåžå ŽãäœæãããŸãããã®çµæãäœæè ã¯ããäœãææ°æã§å ±ãããŸãã
ããã§æ€èšããŠãããããã¯ãæè¡æ³šæã®åŠçã«æé©ã§ããããšã«æ³šæããŠãã ããã
ãããŠãã³ããã·ã§ã³ã«ã€ããŠã®äŒè©±ãç· ããããã«ããããå€ãèšå®ããéã«
PROFIT_THRESHOLDã¯ã³ããã·ã§ã³ãèæ
®ã«å
¥ããå¿
èŠãããããšã«æ³šæããããšæããŸãã
å©çãäžããã«ã¯ããããã¯æåã«BUYæäœãå®è¡ããæ¬¡ã«SELLæäœãå®è¡ããå¿ èŠããããŸããããã¯ãææ°æã2åè«æ±ãããããšãæå³ããŸãã
ãã®çµæããããã¯ã販売ããåãåã£ãå©çãå°ãªããšãææ°æãã«ããŒããããã«æ§æããå¿ èŠããããŸããããã§ãªããã°ããããã¯éæ¹ã«æ®ããŠååŒãããŸãã
ããã«ã€ããŠèããŠã¿ãŸããããã¢ããªã±ãŒã·ã§ã³ã®éãæäœã®çš®é¡ã«äŸåããªãã³ããã·ã§ã³ã®äœ¿çšãåæãšããŠããŸãããããã£ãŠã100.00ãã«ã§è³ç£ãè³Œå ¥ããããã®ææ°æã¯0.50ãã«ã§ãããã®è³ç£ã100.75ãã«ã§è²©å£²ãããåãææ°æãè«æ±ãããå Žåãç²å©çã¯0.75ïŒ ã§ããããšãããããŸããããããå®éã«ã¯ãããã§ã¯0.25ïŒ ã®çŽæå€±ãæ±ã£ãŠããŸãã
ããã§ãããããåžžã«ç޿倱ã§ååŒãçµäºãããšããŸãããã®ãããªç¶æ³ã§ã¯ãããã«å€ãã®ãéã倱ãå¯èœæ§ããããŸãã
çµæ
ç§ã®äž»ãªç®æšã¯ããã¬ãŒãã£ã³ã°ããããéçºãããšãã«ç¥ã£ãŠããå¿ èŠã®ããæŠå¿µãæããã«ããããšã§ããããããŸã§ååŒæã§ååŒããããšããªã人ã§ãçè§£ã§ããããã«ããã¹ãŠã説æããããšããŸãããåæã«ãç§ã¯ãã¬ãŒã·ã§ã³ãç¹å®ã®ããã°ã©ãã³ã°èšèªã«çµã³ä»ããŸããã§ããã
ãã®è³æã®èªè ã¯ãéžæããããã°ã©ãã³ã°èšèªã䜿çšããŠHTTPèŠæ±ãè¡ãæ¹æ³ãç¥ã£ãŠãããšæããŸãããã®ãããããã°ã©ãã³ã°ã®è©³çްã«ã€ããŠã¯è§Šãããä»ã®ããšã«çŠç¹ãåœãŠãŸããã
ãã¬ãŒãã£ã³ã°ãããã®éçºã«ã€ããŠç§ãæãã§ããããšã¯ãã¹ãŠã話ããŸãããããŸãããã°ãããªãã¯ä»ããªãèªèº«ã®ããããäœãããšãã§ããŸãã
ãã¬ãŒãã£ã³ã°ãããã䜿çšããŠããŸããïŒ
