Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: เขียน EA back test เรียบร้อยไม่มีปัญหา แต่พอลองเทรดกับ demo account มีปัญหาซะงั้น  (Read 14728 times)

dag123

  • Newbie
  • *
  • Posts: 17
Quote
void CheckClose()
{
    Cci = iCCI(NULL,0,20,PRICE_TYPICAL,0); //CCI value
    Stoc = iStochastic(NULL,0,6,3,3,MODE_SMA,0,MODE_MAIN,0);
    OrderSelect(buy, SELECT_BY_TICKET, MODE_TRADES);
   
    if(OrderType() == OP_BUY )
    {   
         if((Cci >= 75) && (Stoc >= 50)&&( ask_price < Bid ))
         {
       
            Print("Enter this condition Buy");
            OrderClose( buy,OrderLots(),Bid,3, Red );
       
         }
    }
    else if(OrderType()==OP_SELL)
    {
         if((Cci <= -75) && (Stoc <= 50)&&( bid_price > Ask ))
         {
       
            Print("Enter this condition Sell");
         
            OrderClose(buy,OrderLots(),Ask,3, White );
         
         }
    }

}

พอดีเราซื้อแค่ครั้งเดียวแล้วขาย เลยเก็บตัวแปร buy เป็นหมายเลข ticket ไว้ค่ะ
ตอนจะ close error ตามนี้เลยค่ะ
"invalid ticket for OrderClose function"
เราว่าโค๊ดเราไม่ผิดนะ เพราะแบคเทสก็ไม่มีปัญหา
เราเลยสงสัยว่าเป็นเพราะเทสกับ demo account เลยมีปัญหาหรือเปล่า เราเทสกับโบรกเกอร์ AGEA ค่ะ
ตอนถาม support ว่าเทสกับ demo account ได้ไหมเขาบอกว่าไม่ได้ แต่อยู่ๆพอเราลองเอา EA ไปเทสมันดันมี order ซะงั้น  ???
เลยงงๆว่าเป็นเพราะโบรกเกอร์หรือเปล่า

สุดท้ายพอจะมีโบรกเกอร์ที่น่าเชื่อถือแนะนำไหมค่ะ ว่าที่ไหนให้เทส EA กับ Demo account บ้าง ถ้าเทสเดโมได้ดี จะได้ใช้ live account กับที่นั่นเลย
ขอบคุณค่ะ
อย่าเป็นผู้รับอย่างเดียว

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
การเก็บค่าในตัวแปรมันต้องเออเร่ออยู่แล้วครับ
ต้องใช้ for +orderselect หาออเดอร์ที่เปิดอยู่ จึงจะได้ ticket ที่ถูกต้อง

สมมุติว่าคุณเปิดออเดอร์  แล้วปิด mt4 พอเปิดมาใหม่ ticket ที่เก็บไว้ในตัวแปรก็หายไปแล้ว
การเขียนอีเอให้ไม่มีปัญหาต้องหลีกเลี่ยงการเก็บตัวแปรครับ
« Last Edit: ธันวาคม 18, 2012, 10:14:31 am by D_Diamond »

dag123

  • Newbie
  • *
  • Posts: 17
การเก็บค่าในตัวแปรมันต้องเออเร่ออยู่แล้วครับ
ต้องใช้ for +orderselect หาออเดอร์ที่เปิดอยู่ จึงจะได้ ticket ที่ถูกต้อง

สมมุติว่าคุณเปิดออเดอร์  แล้วปิด mt4 พอเปิดมาใหม่ ticket ที่เก็บไว้ในตัวแปรก็หายไปแล้ว
การเขียนอีเอให้ไม่มีปัญหาต้องหลีกเลี่ยงการเก็บตัวแปรครับ

อ้อ เราลืมเรื่องนั้นไปจริงๆเลย
เดี๋ยวลองแก้ก่อน แล้วจะมาแจ้งความคืบหน้า ขอบคุณมากค่ะ
« Last Edit: ธันวาคม 18, 2012, 10:55:22 am by dag123 »
อย่าเป็นผู้รับอย่างเดียว

hyperxeon

  • Newbie
  • *
  • Posts: 11
ถ้ารอบการสั่งซื้อขายหนึ่งๆ มีแค่ Order เดียวแล้วรอปิด
ใช้ OrderSelect(0, SELECT_BY_POSITION ,MODE_TRADES); แทนได้ครับ
แต่ถ้ามีเปิดหลาย orders ก็ต้องใช้ For + OrderSelect ตามที่คุณ D_Diamond แนะนำ

dag123

  • Newbie
  • *
  • Posts: 17
จริงอย่างที่ท่าน D_Diamond กับ hyperxeon ว่า
เป็นเพราะการเก็บตัวแปร buy จริงๆด้วย
ตอนนี้แก้ได้เรียบร้อยล่ะ  ;D

ขนาดเรามีพื้นเขียนโปรแกรมบ้างยังเหนื่อยเอาการเลย ตั้งหน้าตั้งตาเขียนมาเกือบห้าวันได้ กว่าจะได้ EA ที่น่าจะมีประสิทธิ์ภาพสักตัว

ขอบคุณค่ะ
อย่าเป็นผู้รับอย่างเดียว