Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $  (Read 19738 times)

forkawasaki

  • Newbie
  • *
  • Posts: 8
EA ที่ผมกำลังแก้ไข Code  EA ส่วนนี้เป็น การเปิด orderใหม่ หลังจาก order ที่แล้ว ชน SL ครับ

รูปด้านล่างเป็นรูปของorder ที่ชน SL

ปัญหาอยู่ที่การชน SL ของ order 1405920869 (Order ที่2 ที่แสดงอยู่ในรูปด้านล่างครับ)

 ใน Order นี้ EA ทำการเปิด Buy แต่ราคา OrderClosePrice() ไม่ได้< =  OrderStopLoss()  {ราคาที่ปิดorder ไปก็คือ 1.64006 ครับ แต่ SL ที่ EA ตั้งไว้คือ 1.64005 มันจึงไม่เข้าสูตร <= ครับ}

ผมจึงคิดว่าตรงนี้อาจจะเป็นสาเหตุของการ ที่ EA ไม่ยอมเปิด Order ต่อไป  หรือทำงานในส่วนถัดไป หัวข้อ EnterNextProgression(); ได้

ผมควรจะแก้  Code ที่โพสด้านล่างนี้ยังไงดีครับ ผมจึงอยากขอคำชี้แนะครับ ว่าผมควรจะแก้ไขCode ยังไงดีครับ




 



        if( OrderType() == OP_BUY )
        {
          // Was the order closed in profit?
          if( OrderClosePrice() >= OrderTakeProfit() )
          {
            _text = "Order " + OrderTicket() + " closed with profit at " +
              DoubleToStr( OrderClosePrice(), Digits ) + ".";
            Print( _text );
            log( _text );
            if( StopTradingAfterSequence )
              _stopTrading = true;
            _currentProgressionLevel = 1;
            _lastOrderTicket = 0;
          }
          else if( OrderClosePrice() <= OrderStopLoss() )
          {
            _text = "Order " + OrderTicket() + " hit its stop loss at " +
              DoubleToStr( OrderClosePrice(), Digits ) + ".";
            Print( _text );
            log( _text );
            EnterNextProgression();
            if( _lastOrderTicket < 0 )
              return(9);
          }
        }
        else if( OrderType() == OP_SELL )
        {
          // Was the order closed in profit?
          if( OrderClosePrice() <= OrderTakeProfit() )
          {
            _text = "Order " + OrderTicket() + " closed with profit at " +
              DoubleToStr( OrderClosePrice(), Digits ) + ".";
            Print( _text );
            log( _text );
            if( StopTradingAfterSequence )
              _stopTrading = true;
            _currentProgressionLevel = 1;
            _lastOrderTicket = 0;
          }
          else if( OrderClosePrice() >= OrderStopLoss() )
          {
            _text = "Order " + OrderTicket() + " hit its stop loss at " +
              DoubleToStr( OrderClosePrice(), Digits ) + ".";
            Print( _text );
            log( _text );
            EnterNextProgression();
            if( _lastOrderTicket < 0 )
              return(9);
          }
        }


ขอรบกวนด้วยครับ ขอบคุณมากๆครับ
« Last Edit: กุมภาพันธ์ 10, 2014, 05:05:10 pm by forkawasaki »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ก่อนจะแก้ code ที่เปิด Order ต่อไปผมต้องถามก่อน Order ที่มีปัญหาถูกปิดด้วยวิธีการอะไรครับ ?

forkawasaki

  • Newbie
  • *
  • Posts: 8
ปล่อยให้ชน SL อย่างเดียวครับ ไม่มีการปิดมือ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น

กรณีที่คุณยกตัวอย่างมาก Order Buy
ของเดิมคือ
if( OrderClosePrice() <= OrderStopLoss() )

ของใหม่ตือ
if( OrderClosePrice() <= OrderStopLoss() +Point*3 )

คือเราขยายเพิ่มออกไปอีก 3 จุดใน โบรเกอร์ 5 จุด มีโอกาสที่จะตัด SL TP ไม่เท่าเท่ากับที่เราตั้งไวเสมอ ไม่เหมือโบรเกอร์ 4 จุดที่แทบไม่มีโอกาสหลุดเลยนอกจากข่าวแรงมากจริงๆ

forkawasaki

  • Newbie
  • *
  • Posts: 8
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น

กรณีที่คุณยกตัวอย่างมาก Order Buy
ของเดิมคือ
if( OrderClosePrice() <= OrderStopLoss() )

ของใหม่ตือ
if( OrderClosePrice() <= OrderStopLoss() +Point*3 )

คือเราขยายเพิ่มออกไปอีก 3 จุดใน โบรเกอร์ 5 จุด มีโอกาสที่จะตัด SL TP ไม่เท่าเท่ากับที่เราตั้งไวเสมอ ไม่เหมือโบรเกอร์ 4 จุดที่แทบไม่มีโอกาสหลุดเลยนอกจากข่าวแรงมากจริงๆ

เดี๋ยวผมลองดูก่อนครับ ยังไงก็ขอบคุณมากๆครับ

forkawasaki

  • Newbie
  • *
  • Posts: 8
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น

กรณีที่คุณยกตัวอย่างมาก Order Buy
ของเดิมคือ
if( OrderClosePrice() <= OrderStopLoss() )

ของใหม่ตือ
if( OrderClosePrice() <= OrderStopLoss() +Point*3 )

คือเราขยายเพิ่มออกไปอีก 3 จุดใน โบรเกอร์ 5 จุด มีโอกาสที่จะตัด SL TP ไม่เท่าเท่ากับที่เราตั้งไวเสมอ ไม่เหมือโบรเกอร์ 4 จุดที่แทบไม่มีโอกาสหลุดเลยนอกจากข่าวแรงมากจริงๆ

ว่าแต่ ที่Admin บอกว่า ขยายเพิ่มออกไปอีก 3 จุด อันนี้ เป็น 3 จุด ตำแหน่ง ที่ 4 หรือ 5 หรอครับ

แหะๆ ขอรบกวนอีกครั้งครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Point*3  ถ้าใช้แบบนี้จะขึ้นอยู่กับโบรเกอร์เลยครับ   ถ้าโบรเป็น 4 จุด ก็ได้ 0.0003     ถ้าโบรเป็น 5 จุด ก็จะได้ 0.00003

forkawasaki

  • Newbie
  • *
  • Posts: 8
Point*3  ถ้าใช้แบบนี้จะขึ้นอยู่กับโบรเกอร์เลยครับ   ถ้าโบรเป็น 4 จุด ก็ได้ 0.0003     ถ้าโบรเป็น 5 จุด ก็จะได้ 0.00003

ขอบคุณมากๆครับ

sAcIw

  • Newbie
  • *
  • Posts: 20
เอาคราวๆนะครับ
if( (OrderComment() == "[sl]") && (OrderProfit()<0.0) ){
   ...
}
ไม่ว่าจะเปิดออเดอร์ด้วยมือหรือea แล้วตั้ง sl tp เมื่อไปชนเส้นใดเส้นนึง จะมีคอมเม้นว่าชนอะไรครับ
ผมก็ใช้ประโยชน์จากตรงอ่ะครับ
ตอนเปิดออเดอร์จะต้องไม่มีคอมเม้นนะ ถ้ามีก็ใช้วิธีการหาคำเอาครับ
และถ้าเป็น ea ที่เล่นทีล่ะออเดอร์นะ
ถ้าไม่จำเป็นก็ไม่ต้องการวนลูปหรอเปลืองcpu+ram เปล่าๆ
ปล.ความคิดเห็นส่วนตัวนะ ผมก็ไม่ได้เก่งอะไรหรอครับ ผิดถูกอย่างไงก็ช่วยชี้แนะด้วยนะครับ

forkawasaki

  • Newbie
  • *
  • Posts: 8
เอาคราวๆนะครับ
if( (OrderComment() == "[sl]") && (OrderProfit()<0.0) ){
   ...
}
ไม่ว่าจะเปิดออเดอร์ด้วยมือหรือea แล้วตั้ง sl tp เมื่อไปชนเส้นใดเส้นนึง จะมีคอมเม้นว่าชนอะไรครับ
ผมก็ใช้ประโยชน์จากตรงอ่ะครับ
ตอนเปิดออเดอร์จะต้องไม่มีคอมเม้นนะ ถ้ามีก็ใช้วิธีการหาคำเอาครับ
และถ้าเป็น ea ที่เล่นทีล่ะออเดอร์นะ
ถ้าไม่จำเป็นก็ไม่ต้องการวนลูปหรอเปลืองcpu+ram เปล่าๆ
ปล.ความคิดเห็นส่วนตัวนะ ผมก็ไม่ได้เก่งอะไรหรอครับ ผิดถูกอย่างไงก็ช่วยชี้แนะด้วยนะครับ

เป็นวิธีที่เข้าท่ามากๆเลยครับ  ขอบคุณมากๆๆๆครับ

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
แปลกดีครับ ชน SL แต่ไม่ขึ้นสีแดง  แสดงว่ามันปิดธรรมดา อิอิ โบรกไรหว่า

forkawasaki

  • Newbie
  • *
  • Posts: 8
แปลกดีครับ ชน SL แต่ไม่ขึ้นสีแดง  แสดงว่ามันปิดธรรมดา อิอิ โบรกไรหว่า

 ;D ;D ;D

forkawasaki

  • Newbie
  • *
  • Posts: 8
Order เปิดตามปกติแล้วครับ

 

ขอบคุณมากๆ อีกครั้งครับ