Open Forex4you Account

Server รัน EA 1000 / ปี

สั่งชื้อคู่มือการโปรแรกม MQL4

Author Topic: มีข้อสงสัยคับ เพิ่งหัดเขียน (คำสั่ง return();)  (Read 10855 times)

kung_com

  • Newbie
  • *
  • Posts: 20
ผมกำลังหัดเขียน EA อยู่ครับ
พอเขียนได้บ้างแล้ว แต่มีที่ไม่เข้าใจอยู่

สงสัยคับ คำสั่ง return ทำงานยังไงครับ
ที่เห็นบ่อยๆคือreturn(0);
บางที่มี return(1);
return();
บางทีก็ไม่ได้ใส่
บางทีใส่หรือไม่ใส่ก็ได้ผลเหมือนกัน
return ใช้แบบ return(a); แบบนี้มั่งได้รึเปล่าคับ
บางทีใส่สองตัว เช่น

   int IsTradeTime() {
   if (OpenHour < CloseHour && TimeHour(TimeCurrent()) < OpenHour || TimeHour(TimeCurrent()) >= CloseHour) return (0);
   if (OpenHour > CloseHour && (TimeHour(TimeCurrent()) < OpenHour && TimeHour(TimeCurrent()) >= CloseHour)) return (0);
   if (CloseHour == 0) CloseHour = 24;
   if (Hour() == CloseHour - 1 && Minute() >= 55)
   return (0);
   return(1
);
   }

ขอบคุณคับ :D

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
return คือคำสั่งที่ส่งค่าอะไรก็ได้กลับออกไปจากฟังก์ชั่นครับ  โดยปรกติฟังก์ชั่นที่เป็น  void  จะไม่สามารถรีเทิร์นได้ จะใส่ return(0); หรือไม่มีเลยก็ได้ เช่น   
void start()
{
.....
return(0);
}

บางฟังก์ชั่นที่เราใช้คำนวณหาค่าอะไรบางอย่าง จึงจะมีการรีเทิร์นค่ากลับ เช่นที่ท่านยกตัวอย่างมา
int IsTradeTime()   ฟังก์ชั่นนี้สามารถส่งค่าแบบ Int หรือ เลขจำนวนเต็ม กลับออกไปได้
ซึ่งในตัวอย่าง  ถ้าเป็นเวลาเทรด  เขาจะส่งค่า 1 กลับออกไป  ถ้าไม่ใช่เวลาเทรด  จะส่งค่า 0 กลับออกไป  ซึ่งค่านี้จะเอาไปใช้ได้  เช่น


if ( IsTradeTime()==0 && Count >0 ) CloseAll();           ถ้าไม่ใช่เวลาเทรด และยังเทรดค้างอยู่ให้ปิดออเดอร์ทิ้ง


admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ค่าที่จะใช้ return ออกเราต้องดูที่ชนิดของฟังก์ชั่นครับว่า ฟังก์ชั่นเป้นฟังก์ชั่นขนืดไหน ตัวอย่าง ฟังก์ชั่น start() มันเป็น int ฟังก์ชั่น เลยต้อง คืนค่าที่เป็น integer ออกมาครับ หากว่าฟังก์ชั่นชนิดนั่นเป้น double ก็ต้องส่งค่า double ออกมาหรือว่าเป็น String ฟังก์ชั่นก็ต้องคือค่าที่เป็นข้อความออกมาครับ

kung_com

  • Newbie
  • *
  • Posts: 20
ขอบคุณขอรับ :D