EA Programing > MT4 Code Libary
คำสั่ง OrderModify() และ Trailing Stop
gagoi:
ขอบคุณครับ กลับมากอ่านหลายรอบเลย ;D ;D
tomkah:
ขอบคุณครับมีประโยชน์มาก
Zero:
รบกวนช่วยดูให้หน่อยครับ คือตั้งใจจะให้มัน 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);
}
}
}
}
}
}
}
Zero:
--- Quote from: Zero on ตุลาคม 08, 2015, 12:14:47 pm ---รบกวนช่วยดูให้หน่อยครับ คือตั้งใจจะให้มัน 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);
}
}
}
}
}
}
}
--- End quote ---
แต่คิดๆแล้วแบบนี้มันตายตัวไปครับ อยากให้เป็น 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("");
}
}
}
//+------------------------------------------------------------------+
admin:
lastsellprice เป็นตัวแปรของฟังก์ชั่น Getlastsellprice แล้วคุณเอาตัวแปรนี้ไปใช้ที่ฟังก์ชั่น AdjustTPS() ยังไงอ่ะครับ ถ้าไม่ทำให้มันเป็นตัวแปรแบบ global ก่อนอ่ะครับ
นำร่อง
[0] ดัชนีข้อความ
[#] หน้าถัดไป
[*] หน้าที่แล้ว
Go to full version