ระบบเทรด "Chuvashov's Triangle"

 

Introduction (บทนำ)

บทความนี้เกี่ยวกับความเป็นไปได้ในการคำนวณตำแหน่งที่ตั้งของแท่งเทียน เทรนด์และแนวโน้มเส้นแบ่งช่วงเวลาในบางโอกาส หลักการสร้างเส้นแนวโน้มเป็นไปตามข้อกำหนดของ DeMark เกี่ยวกับการสร้าง TD ในช่วงเวลาสุดท้าย

Basic principles of Building Intersecting Channels

(หลักการพื้นฐานของการสร้างช่องที่ตัดกัน)

สาระสำคัญของรูปแบบของ "Chuvashov's Triangle" อยู่ในความคิดที่ว่าเรามักจะมี Fractals สองชั้นล่างและสองชั้นตอนบนที่จุดใดก็ได้ เส้นแนวโน้มจะวาดผ่าน Fractals ด้านบนทั้งสองด้านและด้านล่างสองอัน

หากทั้งสองเส้นตัดกันเมื่อดำเนินการต่อไปทางขวาสร้างรูปสามเหลี่ยมจากนั้นเราจะมีรูปแบบที่เรียกว่า "Chuvashov's Triangle" จุดตัดของทั้งสองสายการทำงานเรียกว่าเอเพ็กซ์ จำนวนทั้งหมด 4 fractals ตามลำดับของการเกิดขึ้นของอินดี้ (ซ้ายไปขวา)

วาดเส้นแนวตั้งผ่าน Fractal ซ้ายที่สอง นอกจากนี้ให้วาดเส้นแนวตั้งผ่านเอเพ็กซ์ จำนวนเชิงเทียนระหว่างทั้งสองเส้นแนวตั้งรวมถึงเชิงเทียนบนเส้นแบ่งออกเป็น 3 กลมตั้งไว้ทางด้านซ้ายของเอเพ็กซ์และวาดเส้นแนวตั้งสามไว้

ระยะห่างระหว่างแนวตั้งที่วาดผ่านทางเศษส่วนที่สองและแนวตรงกลางจะสร้างพื้นที่การพัฒนาที่เกิดขึ้นจริง

ลองไปวาดรูปสามเหลี่ยม

อาจมีหลายตำแหน่งในสี่ fractals สุดท้ายซึ่งเป็นไปไม่ได้ที่จะวาดรูปสามเหลี่ยมหรือสั้นเกินไปหรือยาวเกินไป

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

เงื่อนไขบางอย่างของการรวมกันของเส้นสามเหลี่ยม:
  1. fractals แรกของเส้นบนและล่างควรเว้นระยะห่างมากกว่า 20-30 pips กันตามความสูง (ค่านี้สามารถระบุได้มากขึ้นระหว่างการทดสอบ)
  2. ขนาดระหว่าง fractals แรกของเส้นบนและล่างควรมีขนาดเล็กกว่าขนาดระหว่าง fractals ที่สองของเส้นเหล่านี้
  3. เส้นเศษส่วนแรกของเส้นบนควรจะต่ำกว่าเส้นรอบวงที่สองของเส้นเดียวกันในขณะที่เส้นรอบวงแรกของบรรทัดล่างจะอยู่เหนือเส้นที่สองของเส้นล่าง

เงื่อนไขเพิ่มเติมของรูปแบบ
ดูเหมือนว่าจะชัดเจน แต่ขอย้ายไปที่รูปที่ 3. เราจะกำหนดจำนวนบาร์ได้อย่างไรซึ่งจะมีจุดตัดกันของเส้นการทำงานสองเส้น?
รอจังหวะของ line breakthrough,หากยังไม่ทราบว่า line breakthrough ครั้งนี้เป็นจริงแ ม้ว่าจะมีอยู่แล้วเวลาที่จะเข้าสู่ตลาด! บล็อกคำนวณพื้นที่การค้นพบที่เกิดขึ้นจริงได้แก้ปัญหานี้โดยใช้พารามิเตอร์เวลา,กล่าวคือกำหนดส่วนแยกของเส้นการทำงานในช่วงเวลา
เรารู้ว่าแต่ละบาร์จะปรากฏบนกราฟหลังจากช่วงเวลาหนึ่ง ตัวอย่างเช่น แท่งใหม่จะปรากฏบน H1 ทุกๆหนึ่งชั่วโมง การรู้อัตราการเปลี่ยนแปลงราคาต่อหน่วยของแต่ละเส้นทั้งสองเส้นนั้นเป็นไปได้ในการคำนวณเวลาของการตัดกัน รู้ระยะเวลาจาก "ฐาน" ของสามเหลี่ยมถึงจุดตัดกันซึ่งเป็นไปได้ที่จะคำนวณจำนวนบาร์ (หน่วยของเวลา) ก่อนที่จะตัดกัน พื้นที่ที่เป็นความก้าวหน้าที่แท้จริงถูกกำหนดไว้ในบล็อกเดียวกัน
The Expert Advisor(EA) ได้รับการออกแบบขึ้นโดยใช้แบบเป็นกลุ่มทีละขั้นตอน
  
บล็อกการทำงานที่ทำซ้ำได้บ่อยที่สุดมักจะอยู่ที่จุดเริ่มต้นของโปรแกรม: การเปิดและปิดตำแหน่งฟังก์ชันสำหรับการวาดสัญลักษณ์และเส้น โปรแกรมปฏิบัติการหลักยังประกอบด้วยบล็อกที่แยกต่างหากเช่น:
  1.  บล็อกสำหรับค้นหา fractals บนและล่าง
  2.  บล็อกของรูปแบบการขึ้นรูปเงื่อนไข
  3.  บล็อกสำหรับการคำนวณพื้นที่ที่เกิดขึ้นจริง
  4.  บล็อกเงื่อนไขการเปิดตำแหน่ง
ส่วนของบล็อกการทำงานดังแสดงด้านล่าง
  
[
// --------------------------------------------------------------------+
void Op_Sell_Ch()
  { 
  if(!OrderSend(Symbol(),OP_SELL,Lots,Bid,2,Ask+SL_S*Point,
      Bid-TP_S*Point," ",Magic,0,Red)) 
      { Print("  SELL order open error  # ",GetLastError()); }
      return(0);
     }
// --------------------------------------------------------------------+
void Op_Buy_Ch()
  {
  if(!OrderSend(Symbol(),OP_BUY,Lots,Ask,2,Bid-SL_B*Point,
      Ask+TP_B*Point," ",Magic,0,Blue))
      { Print("  SELL order open error  # ",GetLastError()); }
      return(0);
     }
//+--------------------------------------------------------------------+
void Close_S_Ch()
  {
  if(!OrderClose(OrderTicket(),OrderLots(),Ask,2,Aqua))  
      {Print(" Cl.ord.# ",OrderTicket()," Error # ",GetLastError());}
      return(0);
     }
//+--------------------------------------------------------------------+]
การค้นหาจุดอ้างอิงด้านบนและด้านล่างสำหรับสร้างเส้นการทำงานของรูปสามเหลี่ยมมีอยู่ในแถบเรียงลำดับของแท่งตามกฎของการสร้าง fractals

"การจัดทำดัชนีองค์ประกอบของชุดเวลาจะดำเนินการย้อนกลับจากช่วงก่อนไปแถบแรกแถบปัจจุบันซึ่งเป็นอาร์เรย์ล่าสุดในช่วงนี้มีดัชนีเป็น 0"
[
// ====================================================================+
// (upper and lower fractals searching block) ---------------------------+
   for (i=M;i<=N;i++) // reference points (fractals) searching loop
    {//loop b
   // searching for upper fractals -----------------------------------------+
   if(High[i]>High[i+1] && High[i]>High[i+2] && 
      High[i]>High[i-1] && High[i]>High[i-2])
     {// frac_b
      Tfnb++;   // counter 
   // ----------------------------  
     if(Tfnb==1)     
           {             // for the 1 st fractal: price, index, time.
           TF1B=High[i]; Tf1b=i; timf1b=iTime(Symbol(),Period(),i); 
      }//-counter_1
   // ----------------------------
          if(Tfnb==2)    
           {//counter_2                       // price, index, time.
            TF2B=High[i]; Tf2b=i; timf2b=iTime(Symbol(),Period(),i); break;
           }//-counter_2
        // ----------------------------   
     }//-frac_b
    }//-b loop
// --------------------------------------------------------------------+
   for (i=M;i<=N;i++) // reference points (fractals) searching loop
    {//s loop
   // searching for lower fractals ------------------------------------------+
   if(Low[i]<Low[i+1] && Low[i]<Low[i+2] && 
      Low[i]<Low[i-1] && Low[i]<Low[i-2])
     {// frac_s
      Tfns++; 
     if(Tfns==1)     
           {//counter_1                    // price, index, time.
           TF1S=Low[i]; Tf1s=i; timf1s=iTime(Symbol(),Period(),i); 
           }//-counter_1
           if(Tfns==2)      
            {//counter_2                    // price, index, time.
            TF2S=Low[i]; Tf2s=i; timf2s=iTime(Symbol(),Period(),i); break;
           }//-counter_2
     }//-frac_s
    }//- loop s 
// ---------------------------(upper and lower fractals searching block)-+]


เงื่อนไขต่อไปนี้ได้ถูกรวมไว้ในการลู่เข้าของการทำงานของรูปลักษณ์ของรูปสามเหลี่ยม
  1.  fractals แรกควรเว้นระยะห่างมากกว่า 20-30 pips กัน
  2.  fractals แรกของสายการทำงานหนึ่งควรน้อยกว่า fractals ที่สองของอีกหนึ่ง
  3.  จุดอ้างอิงทั้งหมด 4 จุดแตกต่างจาก "0" ได้แก่ พวกวอลุ่มของจริง
  4.  พารามิเตอร์เวลาของจุดอ้างอิงควรแตกต่างจาก "0"
  5.  จุดอ้างอิงด้านบนด้านล่างอยู่ด้านล่างของส่วนบนที่สองและจุดต่ำสุดแรกสูงกว่าจุดต่ำกว่าที่สอง
  6.  ความแตกต่างระหว่าง fractals ที่สองของเส้นจะต้องไม่เกิน 150 pips
[
// ---------------------------------------------------------------------------+
   if((TF1B-TF1S)>25*Point && 
      Tf1b<=Tf2s && Tf1s<=Tf2b && 
      TF1B>0 && TF1S>0 && TF2B>0 && TF2S>0 && 
      timf1b!=0 && timf2b!=0 && timf1s!=0 && timf2s!=0 &&
      TF1B<TF2B && TF1S>TF2S && 
      (TF2B-TF2S)/Point<150)   
    {// triangle drawing conditions
//===========================================================================+]
หลังจากปฏิบัติตามเงื่อนไขเบื้องต้นแล้วให้คำนวณอัตราการเปลี่ยนแปลงราคาสำหรับบรรทัดการทำงานทั้งบนและล่าง:
[
// -----------------------------------------------------------------------------+
   // -   (block Price change rate calculation)(upper and lower pips per one bar)
   if(TF1B!=TF2B) {RatePriceH=MathAbs((TF2B-TF1B)/(Tf2b-Tf1b));} // for the upper
   if(TF1S!=TF2S) {RatePriceS=MathAbs((TF1S-TF2S)/(Tf2s-Tf1s));} // for the lower 
   // Print(" RatePriceS= ",RatePriceS); Print(" RatePriceH= ",RatePriceH);
// -------------------------------------(block Price change rate calculation)---+]
เมื่อมาถึงจุดนี้ 4 fractals สุดท้ายจะตั้งอยู่ตามเงื่อนไขการขึ้นรูปสามเหลี่ยมแม้ว่าจะยังไม่ชัดเจนเท่าไรเอฤเพ็กซ์จะเป็นและที่จะมีการพัฒนาพื้นที่ที่เกิดขึ้นจริง การคำนวณเอฟเพ็กซ์ขึ้นอยู่กับตำแหน่งของเศษส่วนที่สองจากสี่ตัวที่ผ่านมาในระหว่างการสร้าง (จากซ้ายไปขวาบนแผนภูมิ)

จุดเริ่มต้นของเส้นทำงานยาวควรกำหนดเป็นจุดตัดแนวตั้งที่วาดผ่านเส้นรอบวงที่สองของสายการทำงานสั้น ๆ ตามแนวยาว ในส่วนนี้อัลกอริธึมโปรแกรมต่อไปจะแบ่งออกเป็นสองทิศทางของการคำนวณพื้นที่ที่เกิดขึ้นจริง: "ยาว" บนและ "ยาว" สายการทำงานลดลง
 

โค้ดขั้นพื้นฐานเกี่ยวกับทิศทางใดทิศทางหนึ่งดังแสดงด้านล่าง ทิศทางที่สองถูกคำนวณโดยใช้อัลกอริทึมเดียวกัน

[
// жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж 1. upper working line is longer than the lower one  жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+ 
// - (block of searching for the working line's intersection point) ----------------------------------------------------------+
// If the upper working line is longer than the lower one - find the intersection point on 50 bars
   if(Tf2b>Tf2s && TF2B>TF1B && TF2S<TF1S)
    {// The upper working line is longer
     // the starting price for calculation of values at each bar of the upper working line 
     Starting_Price_H=TF2B-RatePriceH*(Tf2b-Tf2s); 
     // the starting price for calculation of values at each bar of the upper working line 
     Starting_Price_S=TF2S;
     //the time of drawing the vertical line at the triangle's base
     time_starting=timf2s; 
     // ------------------------------------
    for(int k=1;k<=50;k++)
    {//50b loop
     PricB[k]=Starting_Price_H-RatePriceH*k;      // minus fall rate
     PricS[k]=Starting_Price_S+RatePriceS*k;      // plus rising rate
                            //       if prices of the upper and lower lines' projections coincide or the price of the upper one 
    if(PricB[k]<=PricS[k])  // has become less than that of the lower one, then there is the intersection with the working line 
     {//there is the intersection
     P_Tria=PricB[k-1];                                        // working line intersection price (-1) - should be one bar less
     cut_left=k;  break;                                       //     number of bars from the base up to the intersection point
     }//-there is an intersection
    }//-50b loop
// -------------------------------------- (block of searching for working line's intersection point)--------------------------+]
ตอนนี้เราสามารถเริ่มคำนวณค่าพารามิเตอร์เวลาที่ใช้ในการพัฒนาพื้นที่จริงได้:

[
// ---------------------------------------------------------------------------+
// - (block of calculating time intervals for the actual breakthrough area)-----------+
// Introduce two additional limitations:
// 1. The Apex should not be located more than 50 bars far from the triangle's base
// 2. The Apex should not be located closer than 15 bars to the triangle's base.
   if(cut_left<50 && cut_left>12)
    {//triangle with all limitations
     time_Apex=timf2s+cut_left*T_period;                        // Apex generation time
     //  divide the number of bars by three, take 2/3 and round them off to the integer
     // value: MathRound(cut_left/3*2) -number of bars for the actual breakthrough area
     time_bar_zona=time_starting+MathRound(cut_left/3*2)*T_period;          //area time
     //      pattern creation conditions fulfilled, actual breakthrough area calculated  
     PatternTch=true;                          // "Chuvashov's Triangle" pattern formed
     }//-triangle with all limitations
// ------------(block of calculating time intervals for the actual breakthrough area)-+]
ตอนนี้หลังจากที่รูปแบบได้รับการจัดตั้งบล็อกการวาดรูปสามเหลี่ยมสามารถเริ่มดำเนินการได้:
[
// - (block of drawing the triangle after the pattern has been formed) ---+
   if(PatternTch==true)
    {//there is a pattern
    Del_Frb(); Del_Frs();       // delete previous upper and lower fractals
    CreateArrow_Frb(); CreateArrow_Frs();  // draw upper and lower fractals
    Create_Tr_H(); Create_Tr_S();       // draw upper and lower trend lines
    CreateLzona(); CreateLbasis(); CreateLApex();    // draw vertical lines
    CreateTriangleH();               // draw the triangle by the upper line
    ObjectDelete("TRS");   // delete the triangle drawing by the lower line
// -----(block of drawing the triangle after the pattern has been formed)-+ ]
ภาพหน้าจอด้านล่างแสดงการทำงานของรูปวาด "Chuvashov's Triangle":
 บล็อกสำหรับเปิดตำแหน่งกำลังทำงานแล้ว

ถ้าเงื่อนไขสำหรับการเปิดตำาแหน่งจะได้รับการชดเชยจะมีการคำนวณการวาดช่องที่มีเส้นงานที่เกินขีด สร้างช่องแล้ว

StopLoss และ TakeProfit จะคำนวณตามความต้องการของระบบการจัดการเงินและจะเปิดตำแหน่ง (ในกรณีนี้คือซื้อ - ดูภาพหน้าจอด้านล่าง)



อย่างไรก็ตามตำแหน่งสามารถเปิดได้ทั้งสองทิศทางหากมีเงื่อนไขสำหรับการเปิดทั้งสองทิศทาง (ดูภาพด้านล่าง)
 โปรแกรมจะติดตามเวลาชีวิตของรูปแบบ

ถ้าเวลาปัจจุบันเกินกว่าเวลาของการพัฒนาที่เกิดขึ้นจริงโปรแกรมแนะนำห้ามเปิดตำแหน่ง ถ้าเวลาปัจจุบันเกินกว่าเอเพ็กซ์โปรแกรมจะลบภาพวาดลายเส้นทั้งหมดที่ทำความสะอาดแผนภูมิจากสัญญาณและเส้นที่ไม่จำเป็นอยู่แล้ว

โค้ดบล็อกชีวิตของรูปแบบแสดงด้านล่าง


[
// - (block defining the pattern's life time) -------------------------------+
// if the current time exceeds the actual breakthrough area boundary's time, the pattern loses its power
   if((TimeCurrent()-time_bar_zona)>=T_period)
    {
     PatternTch=false; // the pattern is outdated - introduce the ban on opening positions
    }
    // after the current time exceeds the Apex one
    if((TimeCurrent()-time_Apex)>=T_period) 
     {
      // delete pattern signs and lines from the chart 
      Del_Frs(); Del_Frb(); Del_TrLin();
      // delete the lines of channel profit size by the upper working line 
      ObjectDelete("Tr_B1h"); ObjectDelete("Tr_B1hh"); ObjectDelete("Tr_B1hs");ObjectDelete("Tr_B1s");
      // delete the lines of channel profit size by the lower working line 
      ObjectDelete("Tr_S1s"); ObjectDelete("Tr_S1sh"); ObjectDelete("Tr_S1ss");ObjectDelete("Tr_S1h");
      // delete the vertical lines of the actual breakthrough area
      ObjectDelete("L1");ObjectDelete("zona");ObjectDelete("Ap");
      ObjectDelete("TRH"); ObjectDelete("TRS");
     }
// --------------------(block defining the pattern's life time)-+]
ผลลัพธ์ของการดำเนินการบล็อกนี้จะแสดงที่ด้านขวาของภาพหน้าจอก่อนหน้านี้
 
EA นำเสนอนี่มีผลบวกเป็นระบบการซื้อขายเชิงกลศาสตร์ในระหว่างการทดสอบอัตโนมัติ:


  •  Gross profit and gross loss ratio P/F = 38869/16480 = 2.36 (more than 2);
  •  Number of deals = 101 (not less than 100);
  •  Drawdown percetnage = 25,18% (see attached file).
 

ข้อสรุปสรุปได้ดังนี้

เทคนิคที่อธิบายไว้นี้สามารถใช้โดยเทรดเดอร์แต่ควรเพิ่มตัวกรองการเปิดตำแหน่งเป็นส่วนปรับปรุง

ตัวกรองที่เสนอในที่นี้สามารถปรับปรุงได้ตามที่แนะนำโดยผู้ที่ใช้เทคนิค Stanislav Chuvashov
Notes to the attached files:
  • Triangle_H1_v46.mq4 – offered МТС
  • Strategy_Tester_Report_46.zip – test result
  • table_3.zip – for fans of analysis
 

ความคิดเห็น

เรื่องราวที่น่าสนใจ