Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ  (Read 15662 times)

Redbull

  • Full Member
  • ***
  • Posts: 138
ผมเพิ่มเริ่มหัดเขียน EA น่ะครับ แต่ติดปัญหาอยู่นิดนึงตรงที่เมื่อกำหนดค่า Shift ของ Moving Average เป็นลบแล้ว EA มันไม่ทำงานครับ
ยกตัวอย่างครับ
double MA1 = iMA(NULL,0,6,0,MODE_SMA,PRICE_CLOSE,0)
double MA2 = iMA(NULL,0,6,-2,MODE_SMA,PRICE_CLOSE,0)
เงื่อนไขง่ายๆ ครับ
MA1>MA2 = BUY
MA1<MA2 = SELL
รบกวน Admin หรือท่านใดที่ทราบสาเหตุว่าต้องแก้ไขยังไงหรือมีวิธีอื่นที่ลักษณะการทำงานที่คล้ายกับช่วยแนะนำด้วยครับ
.........ขอบคุณครับ..........

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ
« Reply #1 on: พฤศจิกายน 17, 2011, 03:00:50 pm »
ลองใช้คำสั่ง print เรียกค่า MA2 ออกมาดูก่อนครับว่ามันมีค่าถูกต้องหรือเปล่าครับ

preeyada

  • Jr. Member
  • **
  • Posts: 67
Re: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ
« Reply #2 on: พฤศจิกายน 17, 2011, 04:16:09 pm »
มันใส่ค่าลบได้ด้วยเหรอ  ???

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ
« Reply #3 on: พฤศจิกายน 17, 2011, 06:15:40 pm »
หมายถึงจะเอาค่าของ ma แท่งก่อนนี้ 2 แท่งรึเปล่าครับ
มันต้องเปลี่ยนค่าสุดท้ายจากเลข 0 เป็น 2 ครับ 

แต่ถ้าจะเลื่อนเส้นปัจจุบันไปทางซ้าย ก็น่าจะถูกแล้ว
แต่ถ้าเลื่อนถอยหลัง  เส้นปัจจุบันก็ไม่มีจะค่า  ก็เลยเทรดไม่ได้(มั้ง)

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ
« Reply #4 on: พฤศจิกายน 18, 2011, 02:39:32 pm »
ขอบคุณทุกความคิดเห็น จาก Admin และทุกท่านครับ
ผมลองใส่คำสั่ง print อย่างที่ Admin แนะนำ__ผลปรากฏว่ามีค่าออกมาถูกต้องครับ และที่แปลกใจก็คือมันเทรดให้ด้วยครับ (งง...แค่ใส่ print เอง) แต่หลังจาก back test และ open chat ดู พบว่า
เส้น MA (shift -2) มันเป็น MA (shift 0) ครับ มันก็เลยเทรดไม่ตรงตามเงื่อนไขที่กำหนดครับ รบกวน Admin ดูให้นิดนึงครับ ผมอยากได้ค่า shift ที่เป็นลบมาต่อยอดทำ EA ครับ

int start()
  {
int Total;
int Ticket;
   
double varA1 =  iMA(NULL,0,6,0,0,PRICE_CLOSE,0);
double varA2 =  iMA(NULL,0,8,-2,0,PRICE_CLOSE,0);

Print("MA Test",varA2);

Total=OrdersTotal();
if(Total<1)

if  (varA1<varA2)

Print("Test");

{
Ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"Test",1234,0,Red);
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
}         

if(OrdersTotal()==1 && (varA1>varA2))

return(0) ;
}

ตอบคุณ preeyada : ผมก็ไม่ทราบเหมือนกันครับว่าใส่ค่าลบได้หรือไม่ แต่ก็อยากลองดูครับ

ตอบคุณ D_Diamond : เข้าใจถูกแล้วครับ ผมต้องการให้เส้นปัจจุบันไปทางซ้ายครับและก็อย่างที่คุณ D_Diamond แนะนำว่าเส้นปัจจุบันจะไม่มีค่าและเทรดไม่ได้ ผมก็เลยเปลี่ยนค่า MA เป็นคนละค่า (จาก 6 เป็น 8) ครับ ผลก็เหมือนที่แจ้งไว้ด้านบนครับ ยังไงรบกวนดูให้ผมด้วยนะครับ

..........ขอบคุณมากมายครับทุกท่าน............

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ
« Reply #5 on: พฤศจิกายน 18, 2011, 04:57:30 pm »
ผมลองเอาโค้ดไปแบคเทสดู  MA ทั้ง 2 เส้นถูกแล้วครับ ยืนยันว่า ใส่ -2 ได้ เปลี่ยนเลข8กลับเป็น 6 เหมือนเดิมได้เลย

ที่ท่านบอกว่ามันไม่เทรด ไม่ใช่ ma ผิด แต่มันไม่มีเงื่อนไขให้เปิดออเดอร์ครับ 

ลองแก้เป็นแบบนี้ด็ครับ
int start()
  {

int Ticket;
   
double varA1 =  iMA(NULL,0,6,0,0,PRICE_CLOSE,0);
double varA2 =  iMA(NULL,0,6,-2,0,PRICE_CLOSE,0);

if(  OrdersTotal() < 1)
{
if  (varA1<varA2) Ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"Test",1234,0,Red);
else if (varA1>varA2) Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"Test",1234,0,Red);

}

}

นี้คือเปิดออเดอร์อย่างเดียว  ออเดอร์เดียว  ยังไม่มีปิด   
แต่เลื่อน MA ไปทางซ้าย 2 แท่ง  กว่ามันจะเทรดก็ต้องรอ 2 แท่ง  ไม่รู้จะได้ผลดีรึเปล่า ต้องลองครับ

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ
« Reply #6 on: พฤศจิกายน 18, 2011, 05:48:52 pm »
ขอบคุณคุณ คุณ D_Diamond มากเลยครัย........
เดี๋ยวผมเอาไปลองก่อนได้ผลยังไง จะแจ้งให้ทราบครับ.......
ขอบคุณอีกครั้งครับ.......

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ
« Reply #7 on: พฤศจิกายน 18, 2011, 06:00:17 pm »
แวะมาบอกวิธีดูเส้น MA ทั้ง 2 เส้น ว่าถูกแล้วยัง

วิธีการมีดังนี้ครับ
1. จับอีเอไปแบคเทส  ไม่ต้องเลือก visual mode  เลือกช่วงเวลาสั้นๆจะได้จบเร็วๆ
2. เมื่อแบคแทสจบ  คลิกที่ปุ่มทางด้านขวา   Open Chart

มันจะเปิดกราฟที่ได้แบคเทสจบไปเมื่อกี๊  ท่านจะได้พบกับอินดิเคเตอร์ทุกตัวที่อีเอเรียกใช้  ก็ดูเอาว่าถูกหรือผิด

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามการกำหนดค่า Shift ของ MA ครับ
« Reply #8 on: พฤศจิกายน 18, 2011, 06:18:01 pm »
คุณ D_Diamond.....
ได้ผลแล้วครับ...เป็นไปตามเงื่อนไขที่ต้องการครับ...
ขอบคุณอีกครั้งที่แวะมาบอกเทคนิคให้ครับ...
เดี๋ยวผมจะลองเขียนต่อ ถ้าติดตรงไหน ผมขอรบกวนอีกครั้งนะครับ.......
ขอบคุณมากมาย....