EA Programing => ปัญหาที่พบในการเขียน EA => Topic started 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);
}
}
ขอรบกวนด้วยครับ ขอบคุณมากๆครับ
-
ก่อนจะแก้ code ที่เปิด Order ต่อไปผมต้องถามก่อน Order ที่มีปัญหาถูกปิดด้วยวิธีการอะไรครับ ?
-
ปล่อยให้ชน SL อย่างเดียวครับ ไม่มีการปิดมือ
-
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น
กรณีที่คุณยกตัวอย่างมาก Order Buy
ของเดิมคือ
if( OrderClosePrice() <= OrderStopLoss() )
ของใหม่ตือ
if( OrderClosePrice() <= OrderStopLoss() +Point*3 )
คือเราขยายเพิ่มออกไปอีก 3 จุดใน โบรเกอร์ 5 จุด มีโอกาสที่จะตัด SL TP ไม่เท่าเท่ากับที่เราตั้งไวเสมอ ไม่เหมือโบรเกอร์ 4 จุดที่แทบไม่มีโอกาสหลุดเลยนอกจากข่าวแรงมากจริงๆ
-
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น
กรณีที่คุณยกตัวอย่างมาก Order Buy
ของเดิมคือ
if( OrderClosePrice() <= OrderStopLoss() )
ของใหม่ตือ
if( OrderClosePrice() <= OrderStopLoss() +Point*3 )
คือเราขยายเพิ่มออกไปอีก 3 จุดใน โบรเกอร์ 5 จุด มีโอกาสที่จะตัด SL TP ไม่เท่าเท่ากับที่เราตั้งไวเสมอ ไม่เหมือโบรเกอร์ 4 จุดที่แทบไม่มีโอกาสหลุดเลยนอกจากข่าวแรงมากจริงๆ
เดี๋ยวผมลองดูก่อนครับ ยังไงก็ขอบคุณมากๆครับ
-
ถ้าแบบนั่นแสดงว่าเกิดจากการคลาดเคลื่อนของ โบรเกอร์ 5 จุดในการตัดแล้วครับ เราต้องเพิ่มค่าความคลาดเคลื่อน + หรือ - เข้าแล้วแต่กรณีของ order เช่น
กรณีที่คุณยกตัวอย่างมาก Order Buy
ของเดิมคือ
if( OrderClosePrice() <= OrderStopLoss() )
ของใหม่ตือ
if( OrderClosePrice() <= OrderStopLoss() +Point*3 )
คือเราขยายเพิ่มออกไปอีก 3 จุดใน โบรเกอร์ 5 จุด มีโอกาสที่จะตัด SL TP ไม่เท่าเท่ากับที่เราตั้งไวเสมอ ไม่เหมือโบรเกอร์ 4 จุดที่แทบไม่มีโอกาสหลุดเลยนอกจากข่าวแรงมากจริงๆ
ว่าแต่ ที่Admin บอกว่า ขยายเพิ่มออกไปอีก 3 จุด อันนี้ เป็น 3 จุด ตำแหน่ง ที่ 4 หรือ 5 หรอครับ
แหะๆ ขอรบกวนอีกครั้งครับ
-
Point*3 ถ้าใช้แบบนี้จะขึ้นอยู่กับโบรเกอร์เลยครับ ถ้าโบรเป็น 4 จุด ก็ได้ 0.0003 ถ้าโบรเป็น 5 จุด ก็จะได้ 0.00003
-
Point*3 ถ้าใช้แบบนี้จะขึ้นอยู่กับโบรเกอร์เลยครับ ถ้าโบรเป็น 4 จุด ก็ได้ 0.0003 ถ้าโบรเป็น 5 จุด ก็จะได้ 0.00003
ขอบคุณมากๆครับ
-
เอาคราวๆนะครับ
if( (OrderComment() == "[sl]") && (OrderProfit()<0.0) ){
...
}
ไม่ว่าจะเปิดออเดอร์ด้วยมือหรือea แล้วตั้ง sl tp เมื่อไปชนเส้นใดเส้นนึง จะมีคอมเม้นว่าชนอะไรครับ
ผมก็ใช้ประโยชน์จากตรงอ่ะครับ
ตอนเปิดออเดอร์จะต้องไม่มีคอมเม้นนะ ถ้ามีก็ใช้วิธีการหาคำเอาครับ
และถ้าเป็น ea ที่เล่นทีล่ะออเดอร์นะ
ถ้าไม่จำเป็นก็ไม่ต้องการวนลูปหรอเปลืองcpu+ram เปล่าๆ
ปล.ความคิดเห็นส่วนตัวนะ ผมก็ไม่ได้เก่งอะไรหรอครับ ผิดถูกอย่างไงก็ช่วยชี้แนะด้วยนะครับ
-
เอาคราวๆนะครับ
if( (OrderComment() == "[sl]") && (OrderProfit()<0.0) ){
...
}
ไม่ว่าจะเปิดออเดอร์ด้วยมือหรือea แล้วตั้ง sl tp เมื่อไปชนเส้นใดเส้นนึง จะมีคอมเม้นว่าชนอะไรครับ
ผมก็ใช้ประโยชน์จากตรงอ่ะครับ
ตอนเปิดออเดอร์จะต้องไม่มีคอมเม้นนะ ถ้ามีก็ใช้วิธีการหาคำเอาครับ
และถ้าเป็น ea ที่เล่นทีล่ะออเดอร์นะ
ถ้าไม่จำเป็นก็ไม่ต้องการวนลูปหรอเปลืองcpu+ram เปล่าๆ
ปล.ความคิดเห็นส่วนตัวนะ ผมก็ไม่ได้เก่งอะไรหรอครับ ผิดถูกอย่างไงก็ช่วยชี้แนะด้วยนะครับ
เป็นวิธีที่เข้าท่ามากๆเลยครับ ขอบคุณมากๆๆๆครับ
-
แปลกดีครับ ชน SL แต่ไม่ขึ้นสีแดง แสดงว่ามันปิดธรรมดา อิอิ โบรกไรหว่า
-
แปลกดีครับ ชน SL แต่ไม่ขึ้นสีแดง แสดงว่ามันปิดธรรมดา อิอิ โบรกไรหว่า
;D ;D ;D
-
Order เปิดตามปกติแล้วครับ
(http://upic.me/i/y7/dlook.jpg) (http://upic.me/show/49583975)
ขอบคุณมากๆ อีกครั้งครับ