Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ถาม code ตามนี้ครับ  (Read 16140 times)

TvT

  • Full Member
  • ***
  • Posts: 133
ถาม code ตามนี้ครับ
« on: ตุลาคม 02, 2010, 11:50:41 pm »
ถามโค๊ดครับ
ถ้าต้องการให้ detect ว่า ล่าสุดมีการแตะ RSI ที่ 30 - 70 ?? และส่งค่าออกมา เช่น ล่าสุด 30 ส่ง 2 , 70 ส่ง 1
เช่น
ตอนนี้อยู่ที่ RSI 76 จะส่งค่าออกมาเป็น 2 จนกว่า RSI ไปที่ 30 จะส่งเป็น 1 แทน

ต้องใช้คำสั่งไหนในการตรวจสอบครับ ขอ code ที่ส่งค่าออกมาแบบนี้ที

linconz

  • VIP
  • Sr. Member
  • *
  • Posts: 357
Re: ถาม code ตามนี้ครับ
« Reply #1 on: ตุลาคม 03, 2010, 11:16:42 am »
ประกาศตัวแปรที่ golbal
int abcdefg;
เงื่อนไขตรวจสอบ

if(irsi(บลาๆๆๆ)>70)
abcdefg=1;
else if(irsi(บลาๆๆๆ)<30)
abcdefg=2;
else abcdefg=0;

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถาม code ตามนี้ครับ
« Reply #2 on: ตุลาคม 03, 2010, 12:52:20 pm »
อ้อ ง่ายๆเองนี่ลืมคิดได้ไงหว่า ถ้าจะเก็บข้อมูล เวลาเปิดจริงก็ต้อง save  ใส่เครื่องใช่ไหม
อีกเรื่องครับ

สงสัยว่า เมื่อเราซื้อไปแล้ว เช่น ซื้อที่ 21.00 แล้วอีก 8 ชั่วโมงยังไม่เข้าเงื่อนไขใดที่ให้ปิด  order ที่เปิดไว้

ขอบคุณครับ
« Last Edit: ตุลาคม 03, 2010, 01:12:13 pm by TvT »

linconz

  • VIP
  • Sr. Member
  • *
  • Posts: 357
Re: ถาม code ตามนี้ครับ
« Reply #3 on: ตุลาคม 03, 2010, 01:59:02 pm »
เก็บข้อมูลอะไรครับผม เอาให้ละเอียดนิดนึง

และเมื่อเราซื้อไปแล้วไม่เข้าเงื่อนไข  เงื่อนไขคืออะไร  TP  SL หรือป่าวครับ
ถ้าใช่  เมื่อครบกำหนดเวลาแล้ว อยากปิดไม่ว่ากำไรหรือขาดทุนก็

-ตรวจสอบเวลา เมื่อถึงเวลาที่กำหนด
-ตรวจสอบว่ามีออร์เดอร์ค้างหรือไม่ด้วยเมจิกนัมเบอร์ที่เราเปิดไปตอนแรก
-ถ้าไม่มีออก
-ถ้ามีก็ปิดเฉพาะตัวที่เราเปิดด้วยเมจิกที่เราเปิดไปตอนแรกครับ

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถาม code ตามนี้ครับ
« Reply #4 on: ตุลาคม 03, 2010, 02:32:14 pm »
เก็บข้อมูลอะไรครับผม เอาให้ละเอียดนิดนึง

และเมื่อเราซื้อไปแล้วไม่เข้าเงื่อนไข  เงื่อนไขคืออะไร  TP  SL หรือป่าวครับ
ถ้าใช่  เมื่อครบกำหนดเวลาแล้ว อยากปิดไม่ว่ากำไรหรือขาดทุนก็

-ตรวจสอบเวลา เมื่อถึงเวลาที่กำหนด
-ตรวจสอบว่ามีออร์เดอร์ค้างหรือไม่ด้วยเมจิกนัมเบอร์ที่เราเปิดไปตอนแรก
-ถ้าไม่มีออก
-ถ้ามีก็ปิดเฉพาะตัวที่เราเปิดด้วยเมจิกที่เราเปิดไปตอนแรกครับ

หมายถึงถ้าซื้อแล้วนับเวลา 8 hrจากที่ซื้อไม่ว่าจะกำไรหรือขาดทุนอยู่ให้ปิดทันทีครับ สงสัยว่าจะใช้คำสั่งใดในการ record เวลาที่ซื้อเพื่อนับเวลาปิดครับ
พอจะบกตัวอย่างคำสั่งได้ไหมครับ

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถาม code ตามนี้ครับ
« Reply #5 on: ตุลาคม 06, 2010, 04:26:50 pm »
ไม่ทราบว่า พอจะมีใครบอกได้มั้ยครับ : สงสัยมากว่าจะต้องใช้ code แบบไหน
เดาเบื้องต้น
ordersend()........... ลง magic number

นับเวลาที่ magic number   ...... ต่างกันกี่ bars  >>> ปิด

คาดว่าใช้วิธีนี้ ขอให้ผู้ที่พอตอบได้ให้ตัวอย่าง code มาที

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

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถาม code ตามนี้ครับ
« Reply #6 on: ตุลาคม 06, 2010, 04:59:22 pm »
หมายถึงถ้าซื้อแล้วนับเวลา 8 hrจากที่ซื้อไม่ว่าจะกำไรหรือขาดทุนอยู่ให้ปิดทันทีครับ สงสัยว่าจะใช้คำสั่งใดในการ record เวลาที่ซื้อเพื่อนับเวลาปิดครับ
พอจะบอกตัวอย่างคำสั่งได้ไหมครับ
  ถ้าต้องการแบบนี้ใช้ไหมครับ ให้ใช้หลักการแบบนี้  ให้ใช้ for เรียกดูเวลาที่ order เปิดขึ้นมา ครับจากนั่น ให้ใช้ฟังก์ชั่น TimeCurrent( ) - เวลาเปิดที่ได้มา นะครับ ตรงนี้มีหน่วยเป็นวินาที ตัวอย่างถ้าคุณต้องการปิดภายใน 1 ชั่วโมงเท่ากับ 3600 วินาทีก็ใข้เงื่อนไขตรวจสอบอีกทีเช่น

if( ( TimeCurrent( ) - เวลาเปิดของ Order ) > 3600 )
{
    คำสั่งปิด order

}

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถาม code ตามนี้ครับ
« Reply #7 on: ตุลาคม 06, 2010, 08:33:17 pm »
แล้วเวลาเปิด order นี่ check ยังไงครับ

คือที่สงสัยมากๆก็อันนี้แหละ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถาม code ตามนี้ครับ
« Reply #8 on: ตุลาคม 06, 2010, 10:35:40 pm »
     int total=OrdersTotal();
   
for(int i=0;i<total;i++)

    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if( (TimeCurrent()- OrderOpenTime()) >3600)
   
    {
   
      int type   = OrderType();
               
       bool result = false;
             
       switch(type)
          {
         
          case OP_BUY  : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Pink);
                         break;     
          case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Pink);
                         
          }
    }
 
}