ตั้งเวลารัน Python Script ยังไงดี ?

Investic
investic
Published in
Aug 15, 2022

หากเราต้องการสร้างโปรเจคอย่างเช่น ต้องการรู้ว่าวันนี้เวลาน้ำมันราคาเท่าไหร่ หรือต้องการรู้ว่าวันนี้ราคา Set index ปิดตลาดที่ราคาเท่าไหร่ หากเราเป็นคนทั่วไปเราก็เปิดดูในแอพหรือข่าวสั่งช่องเพื่อดูสิ่งเหล่านี้ แต่สำหรับคนที่เขียน Python ได้อย่างเราไม่จำเป็นต้องเสียเวลาเปิดดู เพียงแค่เราเขียน Python และให้ส่งแจ้งเตือนให้เราทุกวันไปเลย

สิ่งที่สำคัญคือเราต้องการให้โค๊ดรันเป็นเวลา

และการรีเฟรชข้อมูลให้เป็นเวลา เช่นกำหนดไปเลยว่าให้รันทุกๆ 5 วินาที หรือรันทุกวันเวลา 6 โมง ซึ่งตัวช่วยที่จะทำให้เราทำแบบนั้นได้คือ Library ที่ชื่อ Schedule

ตัว Schedule จะช่วยให้เราสามารถตั้งเวลาได้หลากหลายรูปแบบคือ ตั้งแต่ตั้งรันทุกๆ 5 วินาทีหรือให้รันทุกวันเวลา 18.00 อะไรทำนองนั้นก็ทำได้ ทีนี้เรามาลองดูกันว่าเราจะเขียนโค๊ดยังไงดี

pip install schedule

Import lib ที่สำคัญ คือ schedule แต่อีก lib คือ time เพื่อให้รู้ว่าตอนนี้กี่โมง

โดยตัวอย่างที่เราจะยกให้ดูวันนี้คือ ลองสั่ง run ให้ print “Hello Investic” ทุกๆ 5 วินาที

import schedule

เขียน function job เพื่อสั่งว่าให้ทำอะไร (ในตัวอย่างนี้จะเป็นการสั่งให้ print hello investic หรือเขียนส่งคำสั่งซื้อขายก็ทำได้)

def job():
print('Hello Investic')

ต่อมาคือฟังก์ชันสั่งให้รันทุก 5 วินาที

schedule.every(5).seconds.do(job)

สุดท้ายคือสั่งให้รันด้วย while loop

While True:
schedule.run_pending()

เท่านี้เราก็ Schedule Code ให้รันตามที่เราสั่งได้แล้ว

ต่อมาคือการสั่งให้ run ตามเวลาเช่นให้รันทุกวันตอน 07.40 เราแค่เปลี่ยนจาก schedule.every().seconds … เป็น schedule.every().day.at(‘เวลาที่ต้องการ’).do(job)

schedule.every().day.at('07:40').do(job)

พอถึงเวลาก็จะรันตามที่เราตั้งค่าเอาไว้ ทีนี้ใครอยากนำไปประยุกต์ใช้กับการส่งคำสั่งซื้อขายผ่าน Exchange ต่างหรือสร้างเป็นบอทตั้งเวลาให้ส่งคำสั่งตามนี้ก็ทำได้เลย

สำหรับใครที่กำลังมองหาการสร้างระบบเทรดทางเรามีคอร์ส Python for Trading Track ที่จะช่วยให้คุณสามารถสร้างบอทแบบที่คุณต้องการได้เลย แถมเราเพิ่มเนื้อหาของการนำระบบเทรดไปอยู่บนคลาวด์ให้แล้วสามารถปิดจอและไปเที่ยวเล่นได้เลยสนใจรายละเอียดตามลิ้งนี้เลย : https://bottomliner.co/investic-python-algorithmic-trading-landing-2/

Investic

--

--