Monday, July 28, 2025
Homeการซื้อขายMarkov Chain - การวิเคราะห์และการคาดการณ์ - 26 กรกฎาคม 2024

Markov Chain – การวิเคราะห์และการคาดการณ์ – 26 กรกฎาคม 2024


แต่ละองค์ประกอบ พี ไอ เจ พี_{ไอ เจ} พีไอเจ คำนวณได้ดังนี้:

ขั้นตอนที่ 4: ใช้ Markov Chain สำหรับการทำนาย

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

หากเวกเตอร์สถานะปัจจุบันเป็น โซ0

ขั้นตอนที่ 5: พัฒนากลยุทธ์การซื้อขาย

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

ตัวอย่างใน MQL5

ด้านล่างนี้เป็นตัวอย่างวิธีการนำกลยุทธ์แบบ Markov Chain ง่ายๆ ไปใช้ใน MQL5:


enum PriceState {
    DECREASE_SIGNIFICANTLY,
    DECREASE_SLIGHTLY,
    STABLE,
    INCREASE_SLIGHTLY,
    INCREASE_SIGNIFICANTLY
};


PriceState GetState(double priceChange) {
    if (priceChange < -0.5) return DECREASE_SIGNIFICANTLY;
    if (priceChange < -0.1) return DECREASE_SLIGHTLY;
    if (priceChange < 0.1) return STABLE;
    if (priceChange < 0.5) return INCREASE_SLIGHTLY;
    return INCREASE_SIGNIFICANTLY;
}


double transitionMatrix(5)(5) = {
    {0.2, 0.3, 0.2, 0.2, 0.1},
    {0.1, 0.3, 0.4, 0.1, 0.1},
    {0.1, 0.2, 0.4, 0.2, 0.1},
    {0.1, 0.1, 0.3, 0.4, 0.1},
    {0.1, 0.1, 0.2, 0.3, 0.3}
};


PriceState PredictNextState(PriceState currentState) {
    double rnd = MathRand() / (double)RAND_MAX;
    double cumulativeProbability = 0.0;

    for (int i = 0; i < 5; i++) {
        cumulativeProbability += transitionMatrix(currentState)(i);
        if (rnd <= cumulativeProbability) {
            return (PriceState)i;
        }
    }

    return currentState; 
}


void OnTick() {
    static PriceState currentState = STABLE;
    static double previousClose = 0.0;

    double currentClose = iClose(Image(), PERIOD_M1, 0);
    if (previousClose != 0.0) {
        double priceChange = (currentClose - previousClose) / previousClose * 100;
        currentState = GetState(priceChange);

        
        PriceState nextState = PredictNextState(currentState);

        
        if (nextState == INCREASE_SIGNIFICANTLY || nextState == INCREASE_SLIGHTLY) {
            
            if (PositionSelect(Image()) == false) {
                OrderSend(Image(), OP_BUY, 0.1, Ask, 2, 0, 0, "Purchase Order", 0, 0, Inexperienced);
            }
        } else if (nextState == DECREASE_SIGNIFICANTLY || nextState == DECREASE_SLIGHTLY) {
            
            if (PositionSelect(Image()) == true) {
                OrderSend(Image(), OP_SELL, 0.1, Bid, 2, 0, 0, "Promote Order", 0, 0, Purple);
            }
        }
    }

    previousClose = currentClose;
}

จุดสำคัญ:

  • การกำหนดสถานะ: ขึ้นอยู่กับการเปลี่ยนแปลงราคา.
  • คำนวณความน่าจะเป็นในการเปลี่ยนแปลง:จากข้อมูลในอดีต
  • ทำนายสถานะในอนาคต:การใช้เมทริกซ์การเปลี่ยนผ่าน
  • พัฒนากลยุทธ์:ซื้อหรือขายตามสถานะที่คาดการณ์

การใช้โซ่มาร์คอฟช่วยในการจับภาพความน่าจะเป็นของการเคลื่อนไหวของราคา และสามารถเป็นเครื่องมือที่มีประโยชน์ในการพัฒนากลยุทธ์การซื้อขาย

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

ความเห็นล่าสุด