รบกวนถาม ผู้รู้ ครับ

  • 7 replies
  • 1635 views

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

*

ออฟไลน์ aeiou

  • *
  • 15
  • 0

รบกวนถาม ผู้รู้ ครับ

« เมื่อ: 18, กุมภาพันธ์ 2019, 10:03:16 AM »
void OnTick()
  {
   
   total = OrdersTotal();
   
   Higher6 = High[iHighest(NULL,0,MODE_HIGH,6,1)];
   Lower6 = Low[iLowest(NULL,0,MODE_LOW,6,1)];
   Higher12 = High[iHighest(NULL,0,MODE_HIGH,12,1)];
   Lower12 = Low[iLowest(NULL,0,MODE_LOW,12,1)];
   Higher18 = High[iHighest(NULL,0,MODE_HIGH,18,1)];
   Lower18 = Low[iLowest(NULL,0,MODE_LOW,18,1)];
   Higher24 = High[iHighest(NULL,0,MODE_HIGH,13,12)];
   Lower24 = Low[iLowest(NULL,0,MODE_LOW,13,12)];
   Higher48 = High[iHighest(NULL,0,MODE_HIGH,24,24)];
   Lower48 = Low[iLowest(NULL,0,MODE_LOW,24,24)];
   time1_up = iTime(Symbol(),0,iHighest(NULL,0,MODE_HIGH,24,24));
   time2_up = iTime(Symbol(),0,iHighest(NULL,0,MODE_HIGH,13,12));
   time3_up = iTime(Symbol(),0,iHighest(NULL,0,MODE_HIGH,12,1));
   time1_down = iTime(Symbol(),0,iLowest(NULL,0,MODE_LOW,24,24));
   time2_down = iTime(Symbol(),0,iLowest(NULL,0,MODE_LOW,13,12));
   time3_down = iTime(Symbol(),0,iLowest(NULL,0,MODE_LOW,12,1));
   
   if ( bar == Bars)
   {
     ObjectDelete("High"); ObjectDelete("Low");
     ObjectCreate(chart_ID,"High",OBJ_TREND,0,time1_up,Higher48,time3_up,Higher12);
     ObjectCreate(chart_ID,"Low",OBJ_TREND,0,time1_down,Lower48,time3_down,Lower12);
   }
   bar = Bars ;

  }
อันนี้คือ โค๊ดที่ผมใช้ สร้างเส้น แนวรับ แนวต้าน ครับ อยากรู้ว่า ต้องใช้ คำสั่งอะไร ถึงจะ ตรวจสอบได้ว่า  Close[1] มันชน หรือ เลย เส้น High Low  ที่สร้าง ครับ

Share Topic.


*

ออนไลน์ admin

  • *
  • 72,013
  • 2638

Re: รบกวนถาม ผู้รู้ ครับ

« ตอบกลับ #1 เมื่อ: 18, กุมภาพันธ์ 2019, 10:38:29 AM »
เดี๋ยว Programmer เรา จะมาตอบให้ นะครับ
 (TH)**
"เอาชนะใจตัวเองให้ได้ ก่อนที่จะไปเอาชนะตลาด"

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40

Re: รบกวนถาม ผู้รู้ ครับ

« ตอบกลับ #2 เมื่อ: 18, กุมภาพันธ์ 2019, 12:31:01 PM »
ใช้ ObjectGet() ดึงราคาของเส้นออกมาครับ โดยส่ง parameter index เป็น OBJPROP_PRICE1

https://docs.mql4.com/objects/objectget
https://docs.mql4.com/constants/objectconstants/enum_object_property

เช่น

double res_line = ObjectGet("High",OBJPROP_PRICE1);

*

ออฟไลน์ aeiou

  • *
  • 15
  • 0

Re: รบกวนถาม ผู้รู้ ครับ

« ตอบกลับ #3 เมื่อ: 18, กุมภาพันธ์ 2019, 05:42:49 PM »
ขอบคุณ ครับ
ว่างแล้ว จะ ลองเขียน แล้วจะมา อัพเดทให้ชม นะครับ

*

Chakwaina

Re: รบกวนถาม ผู้รู้ ครับ

« ตอบกลับ #4 เมื่อ: 20, กุมภาพันธ์ 2019, 09:47:03 AM »
โค๊ดที่พี่ใช้ก็ไม่มีปัญหาน่ะเท่าที่ดูอ่ะครับ

*

ออฟไลน์ aeiou

  • *
  • 15
  • 0

Re: รบกวนถาม ผู้รู้ ครับ

« ตอบกลับ #5 เมื่อ: 20, กุมภาพันธ์ 2019, 08:01:02 PM »
ขอถามเพิ่มเติม นะ ครับ
1 ถ้าเกิดว่า พอราคามาชนเส้นแล้วกลับตัว ผมซื้อไป 1 ไม้ แล้ว พอเกิดแท่งต่อมา ผม อยากให้ เข้าออเดอร์อีก 1 ไม้ในทางเดียวกัน ก็ ใช้โค๊ด ticket = OrderSend(Symbol(),OP_BUY,Lot,Ask,5,Bid-(StopLoss),Bid+(TakeProfit*16),"BUY Order",MagicNumber,0,clrGreen); อีกทีใช้มั้ย ครับ
2 ถ้า มี ออเดอร์ มากกว่า1 ผม อยากให้มันขยับ [size=78%]StopLoss ขึ้นมา 50 pip ทุกๆที่ ราคา เปลี่ยนไป 100 pip ของแต่ ละออเดอร์ ต้องทำไง ครับ[/size]
[size=78%]รบกวนอีกแล้ว[/size]
[size=78%]ขอบคุณ ครับ[/size]

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40

Re: รบกวนถาม ผู้รู้ ครับ

« ตอบกลับ #6 เมื่อ: 20, กุมภาพันธ์ 2019, 08:39:52 PM »
1) ใช่ครับ
2) Trailling Stop ครับ
เอา ราคา ปัจจุบัน ลบกันกับ ราคาเปิดออร์เดอร์ ถ้าผลต่าง = 100pip ก็ส่งคำสั่ง OrderModify ไปแก้ SL ของออร์เดอร์นั้นๆ SL=SL +/- 50pip
มีออร์เดอร์มากกว่า 1 ก็วน loop ไปครับ  (TH)**

*

ออฟไลน์ aeiou

  • *
  • 15
  • 0

Re: รบกวนถาม ผู้รู้ ครับ

« ตอบกลับ #7 เมื่อ: 20, กุมภาพันธ์ 2019, 11:32:13 PM »

for(int i=0;i<total;i++)
      {
         Ans = OrderSelect( i,SELECT_BY_POS,MODE_TRADES) ;
         if( OrderType() == 0 )
         {
            if(Bid-OrderOpenPrice() > TakeProfit)
            {
                 Ans2 = OrderModify(OrderTicket(),OrderOpenPrice(),Bid-StopLoss,OrderTakeProfit(),0,clrNONE);
            }
         }
         else if( OrderType() == 1 )
         {
            if(OrderOpenPrice()-Ask > TakeProfit)
            {
                 Ans2 = OrderModify(OrderTicket(),OrderOpenPrice(),Ask+StopLoss,OrderTakeProfit(),0,clrNONE);
            }
         }
         
      }
ผม เขียนออกมาประมาณนี้ แต่ มันเกิดปัญหา คือ พอมันถึง 100 pip แล้ว มันขยับเส้ร SL ตลอดเลย ขยับตามราคา Bid เลยครับ
สมมุติ  [size=78%]OrderOpenPrice() = 1.13636  อยากให้มันขยับ SL ที่ราคา 1.13736 แล้วถ้าราคายังไปต่อให้ปรับที่ 1.3836 ครับ [/size][/size][size=78%]ต้องแก้ยังไง ครับ [/size]

Tags: