ขอแนวคิดเกี่ยวกับการนับเวลาหน่อยครับ

  • 5 replies
  • 1138 views

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

*

ออฟไลน์ gaothun

  • **
  • 105
  • 0
ผมต้องการจับเวลา30 วินาที แล้วให้ทำงานอย่างใดอย่างหนึ่งแล้วจับเวลาใหม่ ทุก ๆ ครั้ง
หมายถึง30 วินาที ตรวจสอบเงื่อนไขแล้วทำครั้งหนึ่ง แล้วจับเวลาใหม่
โค๊ดนี้คือโค๊ดนับเวลาถอยหลังที่พอจะเริ่มเขียนได้บ้างครับแต่ก็ไปต่อไม่ถูกเพราะมีปัญหากรณีที่ค่าเวลาวินาทีน้อยกว่า 30 ครับ
ค่า s คือค่าเวลาที่เป็นวินาทีนับถอยหลังครับ


   int  s;
   datetime m;
   int Repending = 30;

   m = Time[0]+Period()*60-CurTime();
   s  =  m % 60;

   if((s<=Repending )
     {

         for(int i=0;i<OrdersTotal();i++)
           {
            result=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol()&& OrderType()==OP_BUYSTOP  && OrderOpenPrice()!=Ask+PointPending*Point)
               {ticket=OrderModify(OrderTicket(),Ask+PointPending*Point,OrderStopLoss(),OrderTakeProfit(),0,clrNONE);}
               
            if(OrderSymbol()==Symbol()&& OrderType()==OP_SELLSTOP && OrderOpenPrice()!=Bid-PointPending*Point)
               {ticket=OrderModify(OrderTicket(),Bid-PointPending*Point,OrderStopLoss(),OrderTakeProfit(),0,clrNONE);}
           }

     }

Share Topic.


*

ออฟไลน์ forcebewithyou

  • ****
  • 2,416
  • 79
  • Green PIPs Be With You

Re: ขอแนวคิดเกี่ยวกับการนับเวลาหน่อยครับ

« ตอบกลับ #1 เมื่อ: 07, กันยายน 2019, 03:11:56 PM »

ผมก็ งง เรื่องเวาเหมือนกันครับ เคยจะทำอีเอที่เทรดไม่เกิน 5 นาที  15 นาที แล้วก็หาวิธีคำนวนปิด order 5 นาทีก็ไม่ได้

เท่าที่ผมทราบการคำนวนเวลามันจะเป็น unix timestamp

และเวลา timestamp มันจะคิดเป็นวินาที

ลองสั่งเวลาออกมาเป็นค่า  long ดูครับ    แล้ว +30 ดูครับ

ผมก็ยังทำไม่สำเร็จครับ ไม่รู้คำนวนยังไง

อาจจะต้องเอาค่าเวลาเริ่ม เข้าไปไว้ในตัวแปร A ก่อน แล้วเช็ค เวลาปัจจุบันว่าเท่ากับ  A+30 หรือเปล่า

วิธีอื่นๆ
ถ้าเวลาเป็นตามแท่งเทียน 1, 5, 15, 30, 60 นาทีก็นับเอาเวลาขึ้นแท่งเทียนใหม่เอาครับ
บางเทคนิค ก็ใช้วิธีนับ tick volume เป็น 1 เพราะเว่าขึ้นแท่งเทียนใหม่ มันก็จะนับ 1

*

ออฟไลน์ forcebewithyou

  • ****
  • 2,416
  • 79
  • Green PIPs Be With You

Re: ขอแนวคิดเกี่ยวกับการนับเวลาหน่อยครับ

« ตอบกลับ #2 เมื่อ: 07, กันยายน 2019, 03:56:32 PM »

กับอีกอันคำสั่งเกี่ยวกับเวลา

sleep (30000) คือ ให้หยุด 30 วินาทีครับ  เผื่อมีประโยชน์ครับ


สั่งให้หยุด 30 วิ แล้วทำขั้นต่อไปต่อได้ครับ


*

ออฟไลน์ gaothun

  • **
  • 105
  • 0

Re: ขอแนวคิดเกี่ยวกับการนับเวลาหน่อยครับ

« ตอบกลับ #3 เมื่อ: 07, กันยายน 2019, 06:03:10 PM »

กับอีกอันคำสั่งเกี่ยวกับเวลา

sleep (30000) คือ ให้หยุด 30 วินาทีครับ  เผื่อมีประโยชน์ครับ


สั่งให้หยุด 30 วิ แล้วทำขั้นต่อไปต่อได้ครับ


 (TH)** (TH)** (TH)**

*

ออฟไลน์ iRuler

  • *
  • 1,258
  • 40

Re: ขอแนวคิดเกี่ยวกับการนับเวลาหน่อยครับ

« ตอบกลับ #4 เมื่อ: 09, กันยายน 2019, 12:28:04 AM »
sleep มันจะหยุดการทำงานไปเลยจนกว่าจะครบเวลาที่กำหนด ระหว่างที่รอครบ 30 วิ เราก็จะทำอย่างอื่นไม่ได้เลย



โค๊ด
int prev_sec1=TimeSeconds(TimeCurrent())
int prev_sec2=TimeSeconds(TimeCurrent())

void OnTick()
{

  if(TimeSeconds(TimeCurrent()) - prev_sec1 >= 30)
   {
     prev_sec1=TimeSeconds(TimeCurrent())

    /*
     Do every 30sec.
   */

   }
 
  if(TimeSeconds(TimeCurrent()) - prev_sec2 >= 15)
   {
     prev_sec2=TimeSeconds(TimeCurrent())

    /*
     Do every 15sec.
    */
   }

}

ให้เป็นไอเดียครับ code อาจมีความผิดพลาดครับ นั่งเทียนเขียนเอา จะนับเวลาตรงหรือเปล่า ขึ้นอยู่กับ tick ที่ server ส่งมาด้วยนะครับ
ถ้าไม่มี tick ฟังก์ชัน OnTick() ก็จะไม่ทำงาน

หรือถ้าทำงานอย่างเดียวอยู่แล้ว ไปใช้ EventSetTimer() น่าจะง่ายกว่านะครับ
หมายเหตุ ea 1 ตัว มี EventSetTimer ได้ 1 function เท่านั้น ถ้าต้องทำงานหลายอย่าง ต้องใช้ code แบบตัวอย่างข้างบน

 (TH)**
« แก้ไขครั้งสุดท้าย: 09, กันยายน 2019, 12:31:20 AM โดย iRuler »

*

ออฟไลน์ forcebewithyou

  • ****
  • 2,416
  • 79
  • Green PIPs Be With You

Re: ขอแนวคิดเกี่ยวกับการนับเวลาหน่อยครับ

« ตอบกลับ #5 เมื่อ: 09, กันยายน 2019, 09:09:42 AM »

ขอบคุณมากครับท่าน iRuler


ผมไม่เคยใช้  TimeSeconds เลย เพราะไม่ได้ใช้ระดับวินาที

ก็ดีเหมือนกัน เอามาใช้กับ scalping tick น่าจะดี

เสียดาย MT4 ไม่มีกราฟ 1 tick เหมือน cTrader


Tags: