รบกวนช่วยดูให้หน่อยครับ คือตั้งใจจะให้มัน TP จุดเดียวที่ออเดอร์ล่าสุดที่เปิดครับ
คือออเดอร์ล่าสุดเปิดมาจะตั้ง TP ให้ครับ พอตั้งให้แล้วอยากให้ออเดอร์ที่เหลือเปลี่ยน TP เดิมมาใช้ของออเดอร์ล่าสุด

ผมเขียนแบบนี้ครับแก้มาหลายวันแล้วครับแต่ก็ได้แบบในรูปครับ
double Getlastsellprice(int Type)
{
double lastsellprice=0;
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderMagicNumber()==MagicNumberSell){
if(OrderSymbol()==Symbol()){
if(OrderType()==Type){
if(OrderOpenPrice()!=lastsellprice){
lastsellprice=OrderOpenPrice();
}
}
}
}
}
}
return lastsellprice;
}
void AdjustTPS()
{
for(int i=OrdersTotal()-1;i >= 0;i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderMagicNumber()==MagicNumberSell){
if(OrderSymbol()==Symbol()){
if(OrderType() == OP_SELL){
if(OrderTakeProfit() < Ask-(TakeProfitSell*2)*Point){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),(lastsellprice-(TakeProfitSell)*Point),0,clrRed);
}
}
}
}
}
}
}
แต่คิดๆแล้วแบบนี้มันตายตัวไปครับ อยากให้เป็น CloseAll ออเดอร์ที่เปิดอยู่โดยอิงจาก TP ที่ปิดไปล่าสุดครับ แบบนี้ EA ทำงานไป เราก็สามารถตั้ง TP ให้มันปิดไว้ปิดช้าได้ครับ แค่เราเลื่อน TP ของออเดอร์ไดออเดอร์หน้าก็ได้พอมา ถึง TP ที่ใกล้ที่สุดก็ทำการปิดออเดอร์ที่เหลือให้ด้วย ขอเป็นแบบนี้แทนละกันครับ ผมต้องเอาค่าจากอะไรมาใส่ในนี้ครับ Admin
//+------------------------------------------------------------------+
//+=====================Close Order Sell Function====================+
//+------------------------------------------------------------------+
void CloseOrderSell(){
for(int i= OrdersTotal()-1;i >=0;i--){
if(OrderSelect(i,SELECT_BY_POS)==true){
if((OrderMagicNumber() == MagicNumber) && OrderSymbol()== Symbol())
if(OrderType() == OP_SELL)
if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,clrRed))Print("");
}
}
}
//+------------------------------------------------------------------+