Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ผมเขียนโคดแบบนี้ถูกไม๊ครับ  (Read 39356 times)

tanapai

  • Jr. Member
  • **
  • Posts: 50
  • เล่นจริงเจ็บจริง รู้ให้จริง ๆ ไม่รู้ก็ถาม อิ ๆ
    • เทรด forex ไม่ต้องนั่งหน้าคอม ด้วยการ copy คนเก่ง ๆ คลิก
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #15 on: กุมภาพันธ์ 21, 2011, 07:38:00 pm »
ลองเอาแบบนี้นะคับ
น่าจะได้

if(lastprofit< lastlot*sl)

ลองดูนะคับไม่รู้ว่าได้หรือเปล่า

lovelove

  • Newbie
  • *
  • Posts: 44
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #16 on: กุมภาพันธ์ 21, 2011, 11:29:16 pm »
ลองแก้ดูเองนะครับ ผมจะขออธิบายเงื่อนไขนี้ให้

if(lastprofit< lastlot*10)
 เบิ้ลต่อ
else
  ไม่เบิ้ล

จากเงื่อนไข  lastprofit คือ profit ของออเดอร์ล่าสุด ที่เราปิดไปแล้ว จะปิดมือหรืออีเอก็ตาม  จะต้องน้อยกว่า lastlot*10 ถึงจะเบิ้ล
ทำไมผมถึงเขียนแบบนั้น สมมุติเทรด 0.1ลอต คูณ10 ก็จะได้ 1 ซึ่งถ้าเทรด 0.1ลอต 1จุดก็จะมีไรเท่ากับ 1  แปลง่ายๆว่า 
lastprofit< lastlot*10  กำไรของออเดอร์ล่าสุด จะต้องน้อยกว่า 1 จุด แต่ต้องเขียนแบบนี้ เพราะกำไรนับเป็น $ ไม่ได้นับเป็นจุด

 น้อยกว่า 1 จุด ก็คือ 0 นั่นแหละครับ แต่ทำไมถ้าเขียน lastprofit = 0 มันจะใช้ไม่ได้ เพราะจริงๆแล้วมันไม่ได้ปิด +0 เป๊ะๆ มันอาจจะปิด +0.000001 ซึ่ง mt4 มันปัดให้เราเห็นเป็น 0 เขียนแบบนี้จึงเกิดบั๊กได้

ดังนั้นถ้าจะบอกว่า ถ้าปิดน้อยกว่า TP ให้เบิ้ล ก็เอา TP ไปคูณ
if(lastprofit< lastlot*TP*10)  ----ของเดิมคือ 1จุด คูณ TP เข้าไป ก็กลายเป็น TPจุด แต่เขียนแบบนี้ก็มีปัญหาอีกครับ เพราะมันอาจจะไม่ได้ปิดเท่า TP เป๊ะๆ

ลองคิดดูเองก่อน ไม่ได้ค่อยเฉลย
+++++++++++++++++++++++++++

ผมนึกยังไม่ออกเลยครับ   :'(
ลองเอาแบบนี้นะคับ
น่าจะได้

if(lastprofit< lastlot*sl)

ลองดูนะคับไม่รู้ว่าได้หรือเปล่า

ยังไม่ได้ครับ.. ;)
++++++++++++++++++++
ออเด้อที่ 1 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 2 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 3 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 4 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 4 เสีย  ปิดที่ 0 โปรฟิต เบิ้ลล็อตต่อ
ออเด้อที่ 5 ได้  แต่ไม่ชน tp ไม่เบิ้ลล็อตต่อ
ออเด้อที่ 6 กลับมาเทรดที่ 0.1 เหมือนเดิม
++++++++++++++
ออเด้อ ที่ 5 จำนวนโปรฟิตที่ได้กับเสียมันไม่เท่ากัน
ปัญหามันอยู่ที่ตรงนี้ครับ เลยอยากให้เบิ้ลต่อ
++++++++
เวลาผมเอามาเทส ผมเห็นปัญหา ถ้านึกไม่ออก ผมก็ขอถามเลยนะครับ ขอบคุณพี่ๆทุกคนและแอดมินครับ
+++++++++++++++++++++++++++++++++++++++++++


ผมลองเปลี่ยนเป็น if(((lastprofit< lastlot*10))&&(lastprofit< tp)) ก็ยังไม่ได้ครับ
++++++
ผมลองเปลี่ยนเป็น if(((lastprofit< lastlot*100))  เบิ้ลไม่หยุดเลยครับ  เบิ้ลต่อเนื่องเลยครับ
+++
if(((lastprofit< lastlot*10))||((lastprofit< lastlot*100)))   ก็ยังไม่ได้ครับ
« Last Edit: กุมภาพันธ์ 22, 2011, 12:10:52 am by lovelove »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #17 on: กุมภาพันธ์ 22, 2011, 01:27:25 am »
ปัญหาคุณคือ order ที่5 ใช้ไหมเพราะว่า order ที่ 4 มีการขบได้ 2 แบบแล้วเปิด lot ของ order ที่5 ต่างกันใช่ไหมเพราะผมอ่านแล้วยังงง เลยถามก่อนว่าปัญหาคุณคือตรงนี้ใช่ไหม

tanapai

  • Jr. Member
  • **
  • Posts: 50
  • เล่นจริงเจ็บจริง รู้ให้จริง ๆ ไม่รู้ก็ถาม อิ ๆ
    • เทรด forex ไม่ต้องนั่งหน้าคอม ด้วยการ copy คนเก่ง ๆ คลิก
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #18 on: กุมภาพันธ์ 22, 2011, 10:28:57 am »
แบที่คุณ D_Diamond บอก น่าจะถูกแล้วคับ
ลองแบบนี้คับ

if(lastprofit< lastlot*tp*10)  ------->ที่โค๊ส TP ต้องเป็นตัวพิมพ์เล็ก tp เพราะตอนแรกกำหนดค่าเป็นตัวพิมพ์เล็กอะคับ------

หรือว่าแบบนี้

if(lastprofit< lastlot*sl*10)

น่าจะได้นะคับถ้าไม่ได้จริงๆ เดี๋ยวจะลองหาให้ใหม่
« Last Edit: กุมภาพันธ์ 22, 2011, 10:33:01 am by tanapai »

lovelove

  • Newbie
  • *
  • Posts: 44
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #19 on: กุมภาพันธ์ 22, 2011, 12:36:16 pm »
แบที่คุณ D_Diamond บอก น่าจะถูกแล้วคับ
ลองแบบนี้คับ

if(lastprofit< lastlot*tp*10)  ------->ที่โค๊ส TP ต้องเป็นตัวพิมพ์เล็ก tp เพราะตอนแรกกำหนดค่าเป็นตัวพิมพ์เล็กอะคับ------

หรือว่าแบบนี้

if(lastprofit< lastlot*sl*10)

น่าจะได้นะคับถ้าไม่ได้จริงๆ เดี๋ยวจะลองหาให้ใหม่
ลองแล้วครับเบิ้ลไม่หยุดเลยครับ
ปัญหาคุณคือ order ที่5 ใช้ไหมเพราะว่า order ที่ 4 มีการขบได้ 2 แบบแล้วเปิด lot ของ order ที่5 ต่างกันใช่ไหมเพราะผมอ่านแล้วยังงง เลยถามก่อนว่าปัญหาคุณคือตรงนี้ใช่ไหม

ครับผม

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #20 on: กุมภาพันธ์ 22, 2011, 04:14:52 pm »
ผมมีข้อสงสัย  ในเมื่อโค้ดของอีเอ  มีแต่คำสั่ง เปิดออเดอร์+TP+SL  แต่ไม่มีคำสั่ง ปิดออเดอร์

++++++++++++++++++++
ออเด้อที่ 1 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 2 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 3 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 4 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 4 เสีย  ปิดที่ 0 โปรฟิต เบิ้ลล็อตต่อ
ออเด้อที่ 5 ได้  แต่ไม่ชน tp ไม่เบิ้ลล็อตต่อ
ออเด้อที่ 6 กลับมาเทรดที่ 0.1 เหมือนเดิม

++++++++++++++
1.แล้วออเดอร์ที่ 4 ปิด 0ได้ยังไง  ออเดอร์ที่5 ปิดไม่ชน TP ได้ยังไง?

2.ณ ตอนนี้ ความต้องของคือ ปิดตรงไหนก็ต้องเบิ้ล  ยกเว้นชน TP กลับไปเริ่มใหม่ ใช่ไหมครับ?

lovelove

  • Newbie
  • *
  • Posts: 44
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #21 on: กุมภาพันธ์ 22, 2011, 07:06:45 pm »
ผมมีข้อสงสัย  ในเมื่อโค้ดของอีเอ  มีแต่คำสั่ง เปิดออเดอร์+TP+SL  แต่ไม่มีคำสั่ง ปิดออเดอร์

++++++++++++++++++++
ออเด้อที่ 1 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 2 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 3 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 4 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 4 เสีย  ปิดที่ 0 โปรฟิต เบิ้ลล็อตต่อ
ออเด้อที่ 5 ได้  แต่ไม่ชน tp ไม่เบิ้ลล็อตต่อ
ออเด้อที่ 6 กลับมาเทรดที่ 0.1 เหมือนเดิม

++++++++++++++
1.แล้วออเดอร์ที่ 4 ปิด 0ได้ยังไง  ออเดอร์ที่5 ปิดไม่ชน TP ได้ยังไง?

2.ณ ตอนนี้ ความต้องของคือ ปิดตรงไหนก็ต้องเบิ้ล  ยกเว้นชน TP กลับไปเริ่มใหม่ ใช่ไหมครับ?
ตอบครับ
1) ตั่งเวลาปิดครับ  และ ตั่ง tpและsl  สั้นระหว่าง 3- 15 ครับ  เพราะถ้าตั้งเยอะคงจะกินมาจิ้นเยอะ
2) ใช่ครับ  ติดลบก็เบิ้ล เท่ากับ 0 ก้เบิ้ล ไม่ถึงtp ก็เบิ้ล
 ผมยังนึกไม่ออกเลย รบ กวนด้วยนะครับ
ขอบคุณครับ
« Last Edit: กุมภาพันธ์ 22, 2011, 08:31:48 pm by lovelove »

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #22 on: กุมภาพันธ์ 22, 2011, 08:39:37 pm »
จากเงื่อนไขคือ  ปิดไม่ถึง TP ให้เบิ้ล ตรงนี้เราต้องดูก่อนครับว่า  TP คือราคาที่อยู่บนกราฟ  ไม่ใช่ กำไรที่เป็นเงิน
การจะเทียบแบบเดิมนั้นผมบอกแล้วว่ามันใช้ได้เหมือนกัน แต่อาจจะติดบั๊ก

การจะเทียบราคาTP ใช้คำสั่ง  OrderTakeprofit() ครับ  ทีนี้เราจะต้องเปลี่ยน ไม่เอากำไรมาเทียบ  แต่เอาราคาปิดมาเทียบแทน

if( OrderClosePrice() != Ordertakeprofit() )   ไม่แน่ใจสะกดถูกไหม

แบบนี้จะเอาราคาปิดของออเดอร์ก่อนหน้ามาดู  ถ้าปิดไม่ชน TP เขียว ออเดอร์ต่อไปต้องเบิ้ล

lovelove

  • Newbie
  • *
  • Posts: 44
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #23 on: กุมภาพันธ์ 22, 2011, 08:51:55 pm »
จากเงื่อนไขคือ  ปิดไม่ถึง TP ให้เบิ้ล ตรงนี้เราต้องดูก่อนครับว่า  TP คือราคาที่อยู่บนกราฟ  ไม่ใช่ กำไรที่เป็นเงิน
การจะเทียบแบบเดิมนั้นผมบอกแล้วว่ามันใช้ได้เหมือนกัน แต่อาจจะติดบั๊ก

การจะเทียบราคาTP ใช้คำสั่ง  OrderTakeprofit() ครับ  ทีนี้เราจะต้องเปลี่ยน ไม่เอากำไรมาเทียบ  แต่เอาราคาปิดมาเทียบแทน

if( OrderClosePrice() != Ordertakeprofit() )   ไม่แน่ใจสะกดถูกไหม

แบบนี้จะเอาราคาปิดของออเดอร์ก่อนหน้ามาดู  ถ้าปิดไม่ชน TP เขียว ออเดอร์ต่อไปต้องเบิ้ล

ขอบคุณมากๆ เลยครับ ขอลองก่อนนะครับ ;D

lovelove

  • Newbie
  • *
  • Posts: 44
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #24 on: กุมภาพันธ์ 23, 2011, 08:31:55 pm »
รบกวนคุณ  D_Diamond อีกครั้งครับ ผมวางโค็ตแบบนี้ถูกไหมครับ ทำไมมันไม่ยอมเปิดออเด้อให้ครับ
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
                     double lastlot=OrderLots();
                     double lastprofit=OrderProfit();
                     double lastlot2=lastlot*2;
                     
               
               if( OrderClosePrice() != OrderTakeProfit() )
                 {
                  if((lastprofit< lastlot*10))
                     {
                         if(a  >  b )
                                {OrderSend(Symbol(),OP_BUY,lastlot2,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green); }
                               
                         else if( a < b )
                                {OrderSend(Symbol(),OP_SELL,lastlot2,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red);  }
                      }
                else
                      {
                         if( a > b )
                                {OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green); }
                               
                         else if( a <= b )
                                {OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red);  }
                               
                       }
                       
                       
                 }

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #25 on: กุมภาพันธ์ 23, 2011, 08:44:30 pm »
เปลี่ยนเงื่อนอะไรอีกรึเปล่าครับ แล้ว a กับ b นี่คือออะไรครับ

lovelove

  • Newbie
  • *
  • Posts: 44
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #26 on: กุมภาพันธ์ 23, 2011, 09:02:05 pm »
เปลี่ยนเงื่อนอะไรอีกรึเปล่าครับ แล้ว a กับ b นี่คือออะไรครับ

โทษทีครับ ตัวบนผมตั่งใจจะดัดแปลงใส่กับอินดี้ตัวอื่นครับ


OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
                     double lastlot=OrderLots();
                     double lastprofit=OrderProfit();
                     double lastlot2=lastlot*2;
            if( OrderClosePrice() != OrderTakeProfit() )
               {
               if(lastprofit< lastlot*10)
                        {
                     
                           if ((min<=0))
                                 {
                                 if ((sig <=0)&&(ma2>ma1))
                                    {
                                    if ((sig-var1)>=min)   
                                    {OrderSend(Symbol(),OP_SELL,lastlot2,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red);  }
                                    }
                                 }
                         if ((min>=-0))
                                 {
                                 if ((sig>=-0)&&(ma2<ma1))
                                    {
                                    if ((sig+var1)<=min)   
                                    {OrderSend(Symbol(),OP_BUY,lastlot2,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green); }
                                    }   
                                 }
                       }
                     
               else
                           {
                           if ((min<=0))
                                 {
                                 if ((sig <=0)&&(ma2>ma1))
                                    {
                                    if ((sig-var1)>=min)   
                                    {OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red); }
                                    }
                                 }   
                           if ((min>=-0))
                                 {
                                 if ((sig>=-0)&&(ma2<ma1))
                                    {
                                   if ((sig+var1)<=min)                         
                                    {OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green);}
                                    }
                                 }
                           }
}}}
 รบกวนด้วยครับ ขอบคุณครับ
« Last Edit: กุมภาพันธ์ 23, 2011, 09:04:17 pm by lovelove »

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #27 on: กุมภาพันธ์ 23, 2011, 10:47:59 pm »
แล้วความต้องการคืออะไรครับ
แล้วปัญหาตอนนี้คือยังไงครับ ละเอียดกว่านี้หน่อย

lovelove

  • Newbie
  • *
  • Posts: 44
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #28 on: กุมภาพันธ์ 24, 2011, 01:56:41 am »
แล้วความต้องการคืออะไรครับ
แล้วปัญหาตอนนี้คือยังไงครับ ละเอียดกว่านี้หน่อย

ครับผม ตามนี้เลยครับ
เพิ่มเติมครับ
ออเด้อที่ 1 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 2 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 3 เสีย  ชน sl เบิ้ลล็อต
ออเด้อที่ 4 เสีย  ปิดที่ 0 โปรฟิต เบิ้ลล็อตต่อ
ออเด้อที่ 5 ได้  แต่ไม่ชน tp ให้เบิ้ลล็อตต่อในออเด้อที่ 6
ออเด้อที่ 6 ได้ ชน tp
ออเด้อที่ 7 กลับมาเทรดที่ 0.1 เหมือนเดิมครับ
+++++++
เอาโคตไปวางใส่ macd เบิ้ลล็อตด้านบนแล้วอีเอเปิดออเด้อตามปกติน่ะครับ 
ขอบคุณครับ.. :D  รบกวนคุณD_Diamond และ admin และ เพื่อนๆ ด้วยนะครับ
« Last Edit: กุมภาพันธ์ 24, 2011, 06:00:59 pm by lovelove »

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: ผมเขียนโคดแบบนี้ถูกไม๊ครับ
« Reply #29 on: กุมภาพันธ์ 24, 2011, 06:12:05 pm »
แปลว่าตอนนี้ได้ตามความต้องการแล้วเหรอครับ  หรือยังติดปัญหาตรงไหนอีก ถ้ายังติดก็แนบไฟล์ mq4 ไว้นะครับ