หน้าแรก การเทรดด้วยระบบ โพสต์

EA สำหรับ MetaTrader 4: เข้าใจ Perceptron แบบง่ายๆ

ไฟล์แนบ
18987.zip (1.98 KB, ดาวน์โหลด 0 ครั้ง)

1. เกี่ยวกับ Perceptron

Perceptron คืออะไร? ดร. มาร์ค ฮัมฟรีส์ เขียนเกี่ยวกับ Neural Networks แบบชั้นเดียว (Perceptrons)

ในการทำงานของ Perceptron เราสามารถเรียกว่าเป็นลอจิกที่ช่วยในการตัดสินใจในระบบการเทรดได้


2. อัลกอริธึม


2.1. ข้อมูลนำเข้า

ตัวแปร w1, w2, w3 และ w4 เป็นน้ำหนักที่กำหนดค่าตามที่คุณได้ทำการปรับแต่ง

input int    x1 = 0;//น้ำหนัก1
input int    x2 = 0;//น้ำหนัก2
input int    x3 = 0;//น้ำหนัก3
input int    x4 = 0;//น้ำหนัก4


2.2. Perceptron

ในการสร้าง EA แบบง่ายๆ ค่ากำหนด (threshold) จะเป็นศูนย์ โดยผลลัพธ์จะไม่เปลี่ยน "ยิง" 1, "ไม่ยิง" 0

กฎ

double w1 = x1 - 100;

 double w2 = x2 - 100;    double w3 = x3 - 100;    double w4 = x4 - 100;   //Perceptron ก่อนแท่ง 1 วันที่ 2017/03/18

   double a11 = ((iRSI(Symbol(), 0, 12,PRICE_MEDIAN,1))/100-0.5)*2

 double a21 = ((iRSI(Symbol(), 0, 36,PRICE_MEDIAN,1))/100-0.5)*2;    double a31 = ((iRSI(Symbol(), 0, 108,PRICE_MEDIAN,1))/100-0.5)*2;    double a41 = ((iRSI(Symbol(), 0, 324,PRICE_MEDIAN,1))/100-0.5)*2;    double Current_Percptron = (w1 * a11 + w2 * a21 + w3 * a31 + w4 * a41);   //Perceptron ก่อนแท่ง 2 วันที่ 2017/03/18

   double a12 = ((iRSI(Symbol(), 0, 12,PRICE_MEDIAN,2))/100-0.5)*2;

  double a22 = ((iRSI(Symbol(), 0, 36,PRICE_MEDIAN,2))/100-0.5)*2;    double a32 = ((iRSI(Symbol(), 0, 108,PRICE_MEDIAN,2))/100-0.5)*2;    double a42 = ((iRSI(Symbol(), 0, 324,PRICE_MEDIAN,2))/100-0.5)*2;  double Pre_Percptron = (w1 * a12 + w2 * a22 + w3 * a32 + w4 * a42);

ใน EA นี้ผมใช้ RSI แต่คิดว่าออสซิลเลเตอร์อื่นๆ ก็ใช้ได้ เช่น RCI, W%R เป็นต้น


2.3. การเปิดและปิดคำสั่ง

เมื่อ Perceptron ก่อนหน้านี้ต่ำกว่า 0 และ Perceptron ปัจจุบันสูงกว่า 0 หากมีสถานะขายก็จะถูกปิด

และ EA จะส่งคำสั่งซื้อ

if(Pre_Percptron < 0 && Current_Percptron > 0) //สัญญาณซื้อ
   {
      //ถ้ามีสถานะขาย ให้ปิดคำสั่ง
      if(pos < 0)
      {
         ret = OrderClose(Ticket, OrderLots(), OrderClosePrice(), 0);
         if(ret) pos = 0; //ถ้าปิดคำสั่งสำเร็จ สถานะจะเป็นศูนย์
      }
      //ถ้าไม่มีสถานะ ให้ส่งคำสั่งซื้อ
      if(pos == 0) Ticket = OrderSend(
                                       _Symbol,              // สัญลักษณ์
                                       OP_BUY,                 // การดำเนินการ
                                       Lots,              // ปริมาณ
                                       Ask,               // ราคา
                                       0,            // slippage
                                       0,            // stop loss
                                       0,          // take profit
                                       Trade_Comment,        // คอมเมนต์
                                       MagicNumber,// หมายเลขเวทมนตร์
                                       0,        // เวลาหมดอายุคำสั่งรอดำเนินการ
                                       Green  // สี
                                       );
   }

ในทางกลับกัน เมื่อ Perceptron ปัจจุบันต่ำกว่า 0 และ Perceptron ก่อนหน้านี้สูงกว่า 0 หากมีสถานะซื้อก็จะถูกปิด

และ EA จะส่งคำสั่งขาย


3. การปรับแต่ง

โหลด "Slime_Mold_RSI_template.set" และเลือก "เปิดราคาเท่านั้น" สำหรับโมเดล

ข้อมูลนำเข้า

การปรับแต่ง


4. คอมเมนต์และหมายเลขเวทมนตร์

ผมตั้งค่า Magic Number ตามระยะเวลาที่ใช้ในการปรับแต่ง EA นี้จะใช้หมายเลขเวทมนตร์ในคอมเมนต์

string Trade_Comment = IntegerToString(MagicNumber,5,' ') + "Days-Optimization";

คอมเมนต์


5. บทความที่เกี่ยวข้อง

อ่านเพิ่มเติมเกี่ยวกับ Perceptron

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)