Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: เบิ้ลlot เมื่อปิดorderแล้ว เขียนยังไงดีครับ  (Read 19473 times)

kung_com

  • Newbie
  • *
  • Posts: 20
 ??? ผมทดลองเขียน EA ในแบบของตัวเองอยู่คับ เริ่มออกมาเป็นรูปเป็นร่างแล้วใช้เวลาเกือบเดือน
ตอนนี้ติดปัญหาที่MMคับ ผมพยายามเขียนแต่ประสบการณ์ไม่พอรบกวนชี้แนะด้วยคับ :-* ไม่รู้จะให้มันตรวจสอบorderสุดท้ายที่เพิ่งปิดไปยังไงว่ามันได้หรือเสีย
----------------
รูปแบบของmmนี้คือ
ถ้าได้กำไรติดกันก็จะทวีกำไรขึ้นไปเรื่อยๆ2ครั้งไม่รวมครั้งแรก
ถ้าเสียก็จะเสียเท่ากับครั้งแรกตลอด ถึงจะเบิ้ลlotก็ตาม

1.เปิด order แรก สมมุติ lot=0.1 ,TPที่20จุด, SLที่20จุด

2.ถ้าชน TP ปิดorderเรียบร้อย, lot ต่อไปเปิด*2 คือ lot=0.2 ,TPที่20จุด, SLที่20จุด
2.ถ้าชน SL ปิดorderเรียบร้อย, lot ต่อไปเปิดเท่ากับครั้งแรกคือ =0.1

3.ถ้าชน TP ปิดorderเรียบร้อย, lot ต่อไปเปิด*2 คือ lot=0.4 ,TPที่20จุด, SLที่20จุด
3.ถ้าชน SL ปิดorderเรียบร้อย, lot ต่อไปเปิดเท่ากับครั้งแรกคือ =0.1

4.กลับไปที่ขั้นตอนที่1อีกครั้ง คือเปิด lot=0.1
----------------

 :-\ ขอคำชี้แนะด้วยครับ

xupiter

  • Jr. Member
  • **
  • Posts: 57
  • ไม่มี EA ใดในโลกนี้สมบูรณ์แบบ
ผมสงสัยนิดนึงครับ หากเป็น Logic แบบนี้ แสดงว่าเทรดไปรอวันเสีย หนะสิครับ
เบิ้ลไปเรื่อยๆ พอเสีย ก็กลับมาเริ่มใหม่ แล้วการเสีย ก็หนักกว่าตอนได้อีกด้วย

หรือว่าผมคิดผิดไปครับ ช่วยชี้แนะด้วยครับ

kung_com

  • Newbie
  • *
  • Posts: 20
ลิมิตเพียงแค่ทำกำไรติดกัน3ครั้งเท่านั้นครับ
ถ้าทำกำไรติดกันเกิน3ครั้ง จะกลับมาเปิดที่ 0.1ครับ

ผมคิดว่ายังไงเราก็หนีการเสียไม่พ้น ยังไงมันก็ต้องเสียซักวัน ดีกว่าเสียครั้งเดียวหมดพอร์ท
เปรียบเทียบนะครับมองเป็นเงิน5บาท สมมุติลง 5 ถูก3ครั้งติดกัน = 5+10+20 = 35
แต่ถ้าเสีย ก็จะเสียครั้งละ 5บาท
เสียตาที2 คือ 5-10= -5
เสียตาที3 คือ 15-20= -5
จะต้องเสีย 7 ครั้ง จึงจะเท่ากับทำกำไรได้1ครั้ง

แต่ระบบเรา%winต้องมากกว่า50%ขึ้นไปMMแบบนี้ถึงจะน่าใช้ครับ
(ผมเชื่อว่าforexมี%winมากกว่า50 เพราะวิเคราะห์ได้ ไม่เหมือนในบ่อน)
ถ้านำMMแบบนี้ไปใช้ในบ่อนนิ โอกาสเจ๊งมีสูงคับ
« Last Edit: พฤษภาคม 08, 2010, 11:17:00 am by kung_com »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ไม่รู้จะให้มันตรวจสอบorderสุดท้ายที่เพิ่งปิดไปยังไงว่ามันได้หรือเสีย

ใช้หมายเลข ticket เข้ามาช่วยครับ order ที่เราเปิดเป็นตัวสุดท้ายจะมีค่าของ order ticket มากที่สุดครับ  เราก็เขียน code ให้มันมันตรวจสอบว่า order ใดมีค่า order ticket มากที่สุดจากนั่นก็ตรวจสอบ OrderProfit ครับ

kung_com

  • Newbie
  • *
  • Posts: 20
ขอเป็นcodeได้มั๊ยคับ


admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
int ticket=0;
  for(int i=0;i<OrdersTotal();i++)
  {
       OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       if(OrderTicket()>ticket)
       {
         ticket=OrderTicket();
       }
         
    }
       
       OrderSelect(ticket,SELECT_BY_TICKET);
       double orderprofit=OrderProfit();
   // เราก็ได้ค่าของ Profit ของ order สุดท้ายออกมาแล้วครับ

kung_com

  • Newbie
  • *
  • Posts: 20
ผมลองใส่codeแล้วลองสั่ง print ดู

ปรากฏว่าค่า orderprofit ที่ได้ คือค่า profit บัจจุบันที่กำลังเปิดอยู่
แต่หลังจากที่ orderนั้นถูกปิด และยังไม่มีการเปิดออเดอร์ใหม่ใดๆ ค่า orderprofit =0 ครับ  ???

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ผมลองใส่codeแล้วลองสั่ง print ดู

ปรากฏว่าค่า orderprofit ที่ได้ คือค่า profit บัจจุบันที่กำลังเปิดอยู่
แต่หลังจากที่ orderนั้นถูกปิด และยังไม่มีการเปิดออเดอร์ใหม่ใดๆ ค่า orderprofit =0 ครับ  ???

  แล้วตอน test เปิดกี่ order ครับ ถ้าเปิดแค่ 1 order  profit  รวมมันก็ต้องเท่ากัน  เพราะคุณปิด แล้วไม่เปิดใหม่ก็ไม่มี order ดังนั่น Profit ก็ต้องเท่ากับ 0 อยู่แล้ว

kung_com

  • Newbie
  • *
  • Posts: 20
ขอบคุณคับ ผมคงอธิบายได้ไม่ดี T^T ขอบคุณจริงๆครับ ผมจะพยายามให้มากขึ้นครับ

ผมต้องการเขียนรูปแบบของMMดังที่กล่าวมาข้างต้น เปิดทีละ1order และเมื่อทำการปิดorderแรกแล้ว จะเบิ้ลก็ต่อเมื่อตรวจสอบแล้วว่าorderแรกได้กำไรและเริ่มเข้าเงื่อนไขการเทรด
ไม่ใช่การเบิ้ลแบบเปิดorderเพิ่มครับผม
ดังนั้นจึงมีแค่ orderเดียวเท่านั้นครับผม

และสำหรับตรวจสอบว่า order ที่เพิ่งปิดไปเป็นบวกหรือลบ เพื่อ จะเพิ่มขนาดของlotใหญ่ขึ้น ถ้าorderที่เพิ่งปิดไปนั้น เป็นบวก (ถ้าorderเพิ่งปิดไป ตรวจสอบแล้วเท่ากับ0 จึงไม่ทราบว่าจะนำไปใช้อะไรได้)

อาจมองได้ว่า 1วัน เข้า1หนและปิดในวันนั้น ถ้าเมื่อวานได้กำไร วันนี้จะเบิ้ลล็อต แต่ถ้าวันนี้เสีย พรุ่งนี้ก็กลับไปใส่lotเท่ากับเมื่อวันก่อน(วันแรก)
จะมองว่าทำกำไรได้ก็ต่อเมื่อถูกทางติดกัน3ครั้ง จึงเริ่มนับเป็นวันแรกใหม่
เดือนนึงเทรดได้20วัน ถ้าทำกำไรได้3วันติดกัน2ครั้ง คือ6วันและไม่จำเป็นว่าทั้งสองครั้งจะต้องติดกัน
จะเหลือวันอีก14วัน ถ้า14วันที่เหลือเสียทุกวัน ผลคือ กำไร+เสีย=เท่าทุน

ผมตั้งสมมุติฐานว่า มีโอกาสที่จะเข้าถูกทาง3ครั้งติดกัน ถ้าทำได้1ครั้งจะเท่ากับเสียได้7ครั้ง แต่ถ้าเดือนนั้นเข้าผิดแค่สามสี่ครั้ง ที่เหลือก็กำไรติดๆกันก็มีความเป็นไปได้อยู่คับ
ลองให้ความสำคัญกับMMมากกว่าจุดเข้าและจุดออกดูคับผมเห็นว่า EA เก่งๆก็มีมากแแล้วแต่เจ๊งตลอดสาเหตุหนึ่งคือ MMของมันไม่มีจุดsl บ้าง ไม่ก็ slกว้างมาก บางตัวไม่มีMMเลยเล่นมาจิ้นเอา บางตัวเปิด0.1ตลอดชาติ

ขอบคุณน้ำใจท่านadminและทุกๆท่านมากครับ อย่าเพิ่งทิ้งกันนะครับ อิอิ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ถ้าจะตรวจสอบว่า Order สุดท้ายที่ปิดไปเป็นบวกหรือลบ ใช่แค่นี้ก็น่าจะพอแล้วครับ

 OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
 double orderprofit=OrderProfit(); 

kung_com

  • Newbie
  • *
  • Posts: 20
ขอบคุณครับผม ได้ค่าที่ต้องการแล้วครับ ;D ;D ;D