Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: รบกวนสอบถามเกี่ยวกับการ Pending ครับ  (Read 26900 times)

Redbull

  • Full Member
  • ***
  • Posts: 138
รบกวนสอบถามครับ...
สมมุติว่า ราคาอยู่ระหว่าง 1.2301 -1.2330  ให้ทำการ Buy stop @ 1.2350
แต่ถ้า    ราคาอยู่ระหว่าง 1.2270 -1.2299   ให้ทำการ Sell stop @ 1.2250
และถ้าราคาไปแตะฝั่งใดก่อนก็ให้ cancle อีกฝั่งครับ
รบกวนขอตัวอย่าง code สักนิดนะครับ..ลองเขียนแล้วไปไม่เป็นเลย..อิ อิ
ขอบพระคุณล่วงหน้าครับ... ;D ;D ;D

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #1 on: สิงหาคม 18, 2012, 10:42:20 pm »
รบกวนถามต่อนะครับ...
คือผมลองเขียนอย่างนี้ครับ..

   double  Price_Now = Bid;
   double  A  = Price_Now % 0.01;
                    
ผมตั้งใจจะหารเอาเศษไปคำนวนหาว่าราคาอยู่ช่วงไหน
เช่น Price_Now (1.2330) % 0.01 = 0.0030
แต่มันติด error : "%" remainder opertor is to be applied to integer values only.

ก็เลยไม่รู้จะแก้ไขยังไงต่อครับ..พอจะมีวิธีแปลงค่า int เป็น double ก่อนไหมครับ...
ขอบคุณมากมายล่วงหน้าครับ... ;D ;D ;D                
« Last Edit: สิงหาคม 18, 2012, 10:45:29 pm by Redbull »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #2 on: สิงหาคม 18, 2012, 11:13:26 pm »
การหารเอาเศษ ต้องใช้จำนวนเต็มหารด้วยจำนวนเต็มครับ

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #3 on: สิงหาคม 19, 2012, 09:40:17 am »
รบกวนถามต่อครับ..
ถ้างั้นมีวิธีแปลงค่า double เป็น int เพื่อเอาค่ามาคำนวน และแปลงจาก int เป็น double อีกทีเพื่อเอาค่าไปใช้งานได้ไหมครับ..
ผมลองแปลงง่ายๆ แบบนี้ครับ ไม่รู้ว่าถูกไหม..ลองแล้วไม่ error ครับ แต่เหมือค่าที่ออกมามันจะเป็น 0 ครับ..

   double  Price_Now = Bid;
   int       Price_Now_A = Price_Now * 10000;  //ตั้งใจจะแปลง double เป็น int เช่น 1.2330 * 10000 = 12330
   int       A  = Price_Now_A % 100;               //หารเอาเศษ 12330 % 100 = 30

ทำวิธีนี้ได้ไหมครับ เสร็จแล้วเอา 30 ไปคำนวน แล้วค่อยแปลงกลับจาก int เป็น double อีกทีครับ...
ขอบคุณมากมายล่วงหน้าครับ... ;D ;D ;D

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #4 on: สิงหาคม 19, 2012, 05:51:10 pm »
ตอนแปลงกลับก็เอา 10000 กลับไปหารไงครับ

แต่ไม่ต้องแปลงกลับก็ได้  เอา 30 ไปเทียบแล้ววาง pending ได้เลย

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #5 on: สิงหาคม 20, 2012, 11:02:01 am »
ตอนแปลงกลับก็เอา 10000 กลับไปหารไงครับ

แต่ไม่ต้องแปลงกลับก็ได้  เอา 30 ไปเทียบแล้ววาง pending ได้เลย
ขอบคุณครับคุณครู D_Diamond...
ผมลองแล้วครับ แต่มันเปิดออเดอร์ที่ 0.0050 ตลอดเลยครับ...
เหมือนกับว่าค่า XXX มันเป็น 0 ครับ...หรือมันผิดตั้งแต่เริ่มต้นแล้วมั้ง อิ อิ
รบกวนตรวจสอบให้นึดนึงครับ...
ขอบคุณมากมายล่วงหน้าครับ... ;D ;D ;D


int start()

      {
      double    Price_Now     = Bid;                               // 1.1234
      int         Price_Now_A  = Price_Now * 10000;        // 1.1234 * 10000 = 11234
      int         Compare        = Price_Now_A % 100;        // 11234 % 100 = 34
      int         PPP              = Price_Now_A - Compare;  // 11234 - 34 = 11200
      double    XXX             = PPP / 10000;                  // 11200 / 10000 = 1.1200     

           
      if (Compare < 50)
      {
      OrderSend(Symbol(),OP_BUYSTOP,0.01,XXX+0.0050,3,0,0," ",111,0,Green);
      }     
         
      if (Compare < 50)
      {
      OrderSend(Symbol(),OP_SELLLIMIT,0.01,XXX+0.0050,3,0,0," ",111,0,Red);
      }
           
//===========================================================================================
         
      if (Compare > 50)
      {
      OrderSend(Symbol(),OP_BUYLIMIT,0.01,XXX+0.0050,3,0,0," ",111,0,Green);
      } 
         
      if (Compare > 50)
      {
      OrderSend(Symbol(),OP_SELLSTOP,0.01,XXX+0.0050,3,0,0," ",111,0,Red);
      }
      }
     
   return(0);

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #6 on: สิงหาคม 20, 2012, 12:09:27 pm »
เปลี่ยน PPP เป็น double ครับ

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #7 on: สิงหาคม 20, 2012, 01:23:37 pm »
โอ้...ได้แล้วครับ.. :D :D :D
ขอบพระคุณมากมายครับคุณครู.... ;D ;D ;D
« Last Edit: สิงหาคม 21, 2012, 11:11:08 am by Redbull »

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #8 on: สิงหาคม 22, 2012, 11:50:14 am »
รบกวนสอบถามต่ออีกนิดครับ...ทีนี้เกี่ยวกับการ Modify Order ครับ
คือลองเขียนการ Modify Order หลังจากเปิดออเดอร์ไปแล้ว ถ้าเป็นคู่เงินเดียวลองดูตัวอย่างในบอร์ดก็พอเขียนได้ครับ..
แต่ถ้ารันหลายคู่และ Magic number คนละตัว ไปไม่เป็นเลยครับทีนี้... ??? ???
ขอยกตัวอย่างครับ

Order 1 = GBP/USD  เปิด Buy 0.1 lot (Magic number 111)
Order 2 = GBP/USD  เปิด Sell 0.1 lot (Magic number 111)
Order 3 = EUR/USD  เปิด Sell 0.2 lot (Magic number 222)
Order 4 = EUR/USD  เปิด Sell 0.2 lot (Magic number 222)
Order 5 = GBP/USD  เปิด Sell 0.1 lot (Magic number 111)
Order 6 = EUR/USD  เปิด Buy 0.2 lot (Magic number 222)

โดยแต่ละออเดอร์ TP และ SL ไม่เท่ากันครับ
รบกวนขอตัวอย่างนิดนะครับ ว่าจะกำหนดตำแหน่งออเดอร์และ Magic number ที่จะ Modify ยังไง

ขอบคุณมล่วงหน้าครับ... ;D ;D ;D

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #9 on: สิงหาคม 22, 2012, 02:33:22 pm »
tp sl มันไม่เท่ากันยังไงครับ

ปกติเขียนอีเอไม่ต้องแยก magic นะครับ  แยก symbol เอาก็พอ เพราะเวลาเอาไปรันก็ต้องรันทั้ง 2 กราฟ

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #10 on: สิงหาคม 22, 2012, 03:13:36 pm »
tp sl มันไม่เท่ากันยังไงครับ

ปกติเขียนอีเอไม่ต้องแยก magic นะครับ  แยก symbol เอาก็พอ เพราะเวลาเอาไปรันก็ต้องรันทั้ง 2 กราฟ
คุณครูครับ..

การทำงานประมาณว่าบีบ TP และ SL ให้แคบลงเรื่อยๆ เมื่อเปิดออเดอร์เยอะขึ้นครับ คือต้อง Modify ทุกครั้งที่เปิดออเดอร์ใหม่
ไม่รู้ผมเขียนอย่างนี้ถูกต้องไหม...ซึ่งมันก็ทำงานตามที่ต้องการครับ..แต่มันติดตรงที่ว่า ถ้าไปเปิดออเดอร์คู่เงินอื่นด้วยมันก็นับ OrdersTotal รวมกับคู่เงินที่เปิดก่อนหน้านี้ด้วยครับ..
ความต้องการก็คือต้องการให้มันแยกการทำงานในแต่ละคู่เงินครับ...

สมมุติ เงื่อนไขการเปิดออเดอร์เป็นการเปิดมือนะครับ (เป็น Buy 3 ออเดอร์ การใช้งานจริงอาจมากกว่านั้นครับ)

int Total        = OrdersTotal ();
      if (Total == 1)
      {
      OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*100,Bid+Point*100,0,Blue);      // Order 1
      }

      if (Total == 2)
      {
      OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*75,Bid+Point*75,0,Blue);        // Order 1

      OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*100,Bid+Point*100,0,Blue);     // Order 2
      }

      if (Total == 3)
      {
      OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*50,Bid+Point*50,0,Blue);        // Order 1

      OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*75,Bid+Point*75,0,Blue);     // Order 2

      OrderSelect(2,SELECT_BY_POS,MODE_TRADES);
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*100,Bid+Point*100,0,Blue);     // Order 3

      }

ขอบคุณล่วงหน้าครับ... ;D ;D
« Last Edit: สิงหาคม 22, 2012, 03:15:55 pm by Redbull »

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #11 on: สิงหาคม 22, 2012, 04:19:15 pm »
ถ้าใช้ Ordertotal มันจะนับรวมหมดทั้งพอร์ตครับ  ต้องเขียนฟังก์ชั่นนับออเดอร์เอาเอง

 int total = OrdersTotal();
   for (int pos = 0; pos < total; pos++) {
      OrderSelect( pos, SELECT_BY_POS, MODE_TRADES );
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic ) {
         count++;
       
      }
   }

แล้วก็เอา count ไปใช้แทน total ครับ

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #12 on: สิงหาคม 22, 2012, 05:22:45 pm »
คุณครู...อีกนิดส์ครับ..อิ อิ
ทำตามที่แนะนำใช้ได้แล้วครับ...
สมมุติว่าเปิด 2 ออเดอร์ หลังจากที่มัน Modify เสร็จทุกอย่างโอเค แล้วผมดูใน Journal มันวน Modify Order อยู่ที่เดิมครับ เพราะเข้าเงื่อนไข Total = 2...
พอไปเปิดคู่อื่นมันก็ไม่ Modify คู่อื่นให้ เพราะใน Journal มันวน Modify Order อยู่ที่เดิมครับ...
มีวิธีไงให้มันหยุดหลังจาก Modify เสร็จครับ..

      if (Total == 2)
      {
      OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*75,Bid+Point*75,0,Blue);        // Order 1


ขอบคุณล่วงหน้าครับ... ;D ;D ;D

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #13 on: สิงหาคม 22, 2012, 05:38:44 pm »
ต้องเช็กออเดอร์ก่อน  ว่า SL กับ TP ตรงกับที่ต้องการแล้วยัง  ถ้าไม่ตรงค่อย modify ครับ

if ( OrderStopLoss() != Bid-Point*75 || OrderTakeProfit()!= Bid+Point*75 )
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*75,Bid+Point*75,0,Blue);        // Order 1

Redbull

  • Full Member
  • ***
  • Posts: 138
Re: รบกวนสอบถามเกี่ยวกับการ Pending ครับ
« Reply #14 on: สิงหาคม 22, 2012, 08:10:22 pm »
ขอลองก่อนนะครับ...
ขอบมากมายคุณครับ... ;D ;D ;D