EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: forkawasaki on กุมภาพันธ์ 10, 2014, 04:56:11 pm

Title: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: forkawasaki on กุมภาพันธ์ 10, 2014, 04:56:11 pm
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 ยังไงดีครับ




  (http://upic.me/i/07/noopenorderss.jpg) (http://upic.me/show/49549774)



        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);
          }
        }


ขอรบกวนด้วยครับ ขอบคุณมากๆครับ
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: admin on กุมภาพันธ์ 10, 2014, 05:52:58 pm
ก่อนจะแก้ code ที่เปิด Order ต่อไปผมต้องถามก่อน Order ที่มีปัญหาถูกปิดด้วยวิธีการอะไรครับ ?
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: forkawasaki on กุมภาพันธ์ 10, 2014, 06:12:04 pm
ปล่อยให้ชน SL อย่างเดียวครับ ไม่มีการปิดมือ
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: admin on กุมภาพันธ์ 10, 2014, 07:20:09 pm
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น

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

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

คือเราขยายเพิ่มออกไปอีก 3 จุดใน โบรเกอร์ 5 จุด มีโอกาสที่จะตัด SL TP ไม่เท่าเท่ากับที่เราตั้งไวเสมอ ไม่เหมือโบรเกอร์ 4 จุดที่แทบไม่มีโอกาสหลุดเลยนอกจากข่าวแรงมากจริงๆ
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: forkawasaki on กุมภาพันธ์ 10, 2014, 07:24:12 pm
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น

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

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

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

เดี๋ยวผมลองดูก่อนครับ ยังไงก็ขอบคุณมากๆครับ
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: forkawasaki on กุมภาพันธ์ 10, 2014, 07:35:41 pm
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น

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

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

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

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

แหะๆ ขอรบกวนอีกครั้งครับ
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: admin on กุมภาพันธ์ 10, 2014, 08:06:39 pm
Point*3  ถ้าใช้แบบนี้จะขึ้นอยู่กับโบรเกอร์เลยครับ   ถ้าโบรเป็น 4 จุด ก็ได้ 0.0003     ถ้าโบรเป็น 5 จุด ก็จะได้ 0.00003
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: forkawasaki on กุมภาพันธ์ 10, 2014, 08:12:54 pm
Point*3  ถ้าใช้แบบนี้จะขึ้นอยู่กับโบรเกอร์เลยครับ   ถ้าโบรเป็น 4 จุด ก็ได้ 0.0003     ถ้าโบรเป็น 5 จุด ก็จะได้ 0.00003

ขอบคุณมากๆครับ
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: sAcIw on กุมภาพันธ์ 10, 2014, 08:51:37 pm
เอาคราวๆนะครับ
if( (OrderComment() == "[sl]") && (OrderProfit()<0.0) ){
   ...
}
ไม่ว่าจะเปิดออเดอร์ด้วยมือหรือea แล้วตั้ง sl tp เมื่อไปชนเส้นใดเส้นนึง จะมีคอมเม้นว่าชนอะไรครับ
ผมก็ใช้ประโยชน์จากตรงอ่ะครับ
ตอนเปิดออเดอร์จะต้องไม่มีคอมเม้นนะ ถ้ามีก็ใช้วิธีการหาคำเอาครับ
และถ้าเป็น ea ที่เล่นทีล่ะออเดอร์นะ
ถ้าไม่จำเป็นก็ไม่ต้องการวนลูปหรอเปลืองcpu+ram เปล่าๆ
ปล.ความคิดเห็นส่วนตัวนะ ผมก็ไม่ได้เก่งอะไรหรอครับ ผิดถูกอย่างไงก็ช่วยชี้แนะด้วยนะครับ
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: forkawasaki on กุมภาพันธ์ 11, 2014, 07:25:33 am
เอาคราวๆนะครับ
if( (OrderComment() == "[sl]") && (OrderProfit()<0.0) ){
   ...
}
ไม่ว่าจะเปิดออเดอร์ด้วยมือหรือea แล้วตั้ง sl tp เมื่อไปชนเส้นใดเส้นนึง จะมีคอมเม้นว่าชนอะไรครับ
ผมก็ใช้ประโยชน์จากตรงอ่ะครับ
ตอนเปิดออเดอร์จะต้องไม่มีคอมเม้นนะ ถ้ามีก็ใช้วิธีการหาคำเอาครับ
และถ้าเป็น ea ที่เล่นทีล่ะออเดอร์นะ
ถ้าไม่จำเป็นก็ไม่ต้องการวนลูปหรอเปลืองcpu+ram เปล่าๆ
ปล.ความคิดเห็นส่วนตัวนะ ผมก็ไม่ได้เก่งอะไรหรอครับ ผิดถูกอย่างไงก็ช่วยชี้แนะด้วยนะครับ

เป็นวิธีที่เข้าท่ามากๆเลยครับ  ขอบคุณมากๆๆๆครับ
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: D_Diamond on กุมภาพันธ์ 11, 2014, 10:03:52 am
แปลกดีครับ ชน SL แต่ไม่ขึ้นสีแดง  แสดงว่ามันปิดธรรมดา อิอิ โบรกไรหว่า
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: forkawasaki on กุมภาพันธ์ 12, 2014, 05:22:44 am
แปลกดีครับ ชน SL แต่ไม่ขึ้นสีแดง  แสดงว่ามันปิดธรรมดา อิอิ โบรกไรหว่า

 ;D ;D ;D
Title: Re: รบกวนช่วยแก้ไข code ในส่วนของการเปิด orderใหม่ $
Post by: forkawasaki on กุมภาพันธ์ 12, 2014, 08:31:34 pm
Order เปิดตามปกติแล้วครับ

 (http://upic.me/i/y7/dlook.jpg) (http://upic.me/show/49583975)

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