Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: EA_ระบบแท่งเทียน/ไม่เทรดวันจันทร์และวันศุกร์  (Read 17222 times)

win_dream

  • Jr. Member
  • **
  • Posts: 64
พึ่งลองหัดเขียนค่ะ แต่มันไม่ออกตามเงื่อนไขรบกวนแอดมิน และเพื่อน ๆ ช่วยดูให้หน่อยนะคะว่ามันผิดตรงไหน

มีอะไรแนะนำได้เลยนะค่ะ จะได้เก็บไว้เป็นความรู้ค่ะ

extern double lot =1;
extern double sl =100;
extern double tp =20;
extern double trailing =0;
extern int MaxOrder =1;  
int start() {
    if(OrdersTotal()<MaxOrder) {
  double pc      = iClose(NULL,0,1);
  double po      = iOpen (NULL,0,1);  
 double hi0 = iHigh(NULL,0,0);
 double hi1 = iHigh(NULL,0,1);
 double hi2 = iHigh(NULL,0,2);
 double hi3 = iHigh(NULL,0,3);
 double lo3 = iLow(NULL,0,3);
 double lo1 = iLow(NULL,0,1);
 double lo0 = iLow(NULL,0,0);
 double lo2 = iLow(NULL,0,2);
 double a = Ask ;
 double b = Bid ;


   {  if( hi2 < hi3 &&  lo2>lo3 && po<pc && b>hi1)
     Alert(""); OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green);
 }
         if( hi2 < hi3 &&  lo2>lo3 && po>pc && b< lo1)
     {
     Alert(""); OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red);
 }
 }
return(0) ;
 }


แนบเงื่อนไขมาให้ตรวจสอบด้วยค่ะ
« Last Edit: พฤศจิกายน 14, 2011, 01:24:10 am by win_dream »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
อ่านเงื่อนไขแล้ว งง ครับ ลองเรียบเรียงคำพูดอีกทีครับว่า ว่า ราคาอะไร มากกว่าหรือน้อยกว่า ราคาอะไร ของแท่งราคาไหนครับ

win_dream

  • Jr. Member
  • **
  • Posts: 64
มันอาจงงเพราะมันกลับกันกับหลักการเขียนอีเอค่ะต้องดูรูปประกอบค่ะ

งั้นลองเขียนตามหลักอีเอนะคะ

ิ0 คือแ่ท่งปัจจุบัน, 1 แ่ท่งก่อนหน้า ,2 แท่งก่อนหน้า(1), และ 3 แท่งก่อนหน้า(2), h คือ hight , L คือ low นะคะ

ถ้า h และ L ของ 2 < hและ L ของ 3 (ตามภาพจะเป็นแท่งที่ 2 <กว่าแท่ง 1)
    และ ถ้าแท่ง 1 ราคาเปิดน้อยกว่าปิด คือเป็นแท่งเขียวนะคะ ให้เราเปิด Buy ที่จุด hight ของแท่ง 1 (ในภาพแท่ง 1 ก็คือแท่ง 3)


*****แต่ถ้า แท่ง 1 ราคาเปิดมากกว่าปิด คือแท่งเป็นสีแดงนะคะ ให้เรา sell ที่จุด low ของแท่ง 1 (ในรูปแท่ง 1 ก็คือ แท่งที่ 3 ค่ะ


ประมาณนี้ค่ะ  ;)
« Last Edit: พฤศจิกายน 10, 2011, 10:42:21 am by win_dream »

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
ผมก็อ่านแล้วงง แต่ดูรูปแล้วพอเข้าใจได้ดังนี้ครับ

1.รอให้เกิด Inside Bar
2.แท่งถัดจาก Inside Bar พุ่งไปทางไหน  เข้าออเดอร์ทางนั้น  เมื่อจบแท่ง


D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
ที่ไม่เทรดตามเงื่อนไข คือมันเทรด  แต่ไม่ตรงตามในรูปที่ต้องการใช่ไหมครับ

นั่นเพราะว่า ไม่ได้เช็คครบทั้ง 3 แท่ง คุณเช็คแค่แท่งหลังเกิด inside bar ซึ่งเดาจากความต้องการ น่าจะต้องการให้เทรดหลังเกิดเบรคเอาท์
ถ้างั้นต้องเช็คให้ครบทั้ง3แท่งครับ
 if( hi2 < hi3 &&  lo2>lo3 && po<pc && b>hi1 && pc > hi3 )
{ }

if( hi2 < hi3 &&  lo2>lo3 && po>pc && b< lo1 && pc <lo3)
{}

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ขอเสริมคุณ D_Diamond อีกนิดหนึ่งครับ เนื่องจาก ตัว MQL4 มันจะติงต๊องเวลามีเงื่อนทางตระกะหลายๆๆตัวพร้อมกัน มันชอบ ตาถั่วมอง เงื่อนไขไม่ครบ เพื่อกันข้อผิดพลาดตรงนี้ข้อใฌใช้วงเล็บช่วยหรือแยก ออกเป็นการใช้ if หลาย ตัวดีกว่าที่เราเขียนเงื่อนไขให้มันตรวจสอบยาวเลยครับ
แบบใส่วงเล็บ
if(  (  hi2 < hi3 &&  lo2>lo3 ) &&   (po<pc && b>hi1  ) && pc > hi3 )

แบบนี้โปรแกรมจะเริ่มตรวจสอบจาก   (  hi2 < hi3 &&  lo2>lo3 )  ถ้าเป็นจริงก็ทำงานต่อ ถ้าเป็นเท็จก็หลุดออกไปเลยครับ
ถ้าเงื่อนไขแรกเป้นจริง ก็จะตรวจสอบกับ  (po<pc && b>hi1  ) ถ้าเป้นจริงก็ทำงานต่อ ถ้าเท็จก็จะหยุดทำงานเพราะเราใช้ และ  เป็นตัวเชื่อ
จากนั่นถึงไปตรวสอบกับเงื่อขไสดท้าย pc > hi3  ถ้าเป็นจริงก็ลงไปเปิด order ครับ

วิธีใช้ if
if(   hi2 < hi3 &&  lo2>lo3 )
       {    if(po<pc && b>hi1  )
              {    if( pc > hi3 )
                     {  คำสั่งเปิด order
 
                      }
               }
      {

win_dream

  • Jr. Member
  • **
  • Posts: 64
 :D ขอบคุณทั้ง 2 ท่านมากค่ะ น่ารักที่สุดดดดดดอะ ช่วยกันดูให้ ขอบคุณมาก ๆ ค่ะ  ;)
« Last Edit: พฤศจิกายน 10, 2011, 06:40:39 pm by win_dream »

win_dream

  • Jr. Member
  • **
  • Posts: 64
รบกวนเพิ่มเติมค่ะ ถ้าไม่ให้เทรดวันจันทร์กับวันศุกร์ ต้องใช้โค้ดอะไรอะคะ

รบกวนแบบโค้ดเต็ม ๆ นะคะ พอดีมือใหม่ไม่ค่อยเข้าใจจ้า

 รบกวนด้วยนะคะ

ขอบคุณมาก ๆ ค่ะ :)

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
int start()
{
if(DayOfWeek()==1 || DayOfWeek()==5)
       return(0);

   .......code ส่วนที่เหลือทั้งหมด



}

win_dream

  • Jr. Member
  • **
  • Posts: 64
 :)ขอบคุณมากค่ะ

win_dream

  • Jr. Member
  • **
  • Posts: 64
ขอเปลี่ยนหัวข้อ เพื่อให้สมาชิกที่ต้องการศึกษาหรือมีระบบเทรดแนวเดียวกัน

ได้หาง่ายขึ้น เหอ ๆ  :D

การเขียนอีเอไม่ใช่เรื่องง่าย แต่ก็ไม่ยากอย่างที่เราคิด นะคะ

ลองศึกษาดูจากในเวป ถ้าไม่ได้จริง ๆ Admin และเพื่อน ๆ ก็จะช่วยเราค่ะ

ถ้าเราลองหัดเขียนดู เราจะได้อีเอดี ๆ มาใช้อีกมากมายค่ะ

บางครั้งอีเอของคนอื่นอาจมีข้อเสีย เราก็สามารถเอา indi หรือระบบที่เราใช้อยู่มาปรับให้แม่นยำขึ้นได้

เป็นกำลังใจให้ทุกท่านค่ะ  สู้ ๆ นะคะ :D