fbpx

รบกวนถามคำสั่งการเขียนสูตรหน่อยครับ

SiamQuant Minimal Home – White Webboard ห้องโปร : Professional Membership Support รบกวนถามคำสั่งการเขียนสูตรหน่อยครับ

  • ผู้สร้าง
    กระทู้
  • #5412
    นิรนาม
    ไม่เปิดใช้

    สมมุติผมระบบผมคือซื้อ

    a=EMA(C,10);
    b=EMA(C,20);

    Buy=Cross(a,b);
    Sell=Cross(b,a);

    แต่ผมอยากให้สูตรนี้เข้าซื้อต่อเมื่อ close ของ set > ma 20 วันครับ

    ต้องเขียนคำสั่งให้มัน link กันอย่างไรหรอครับ ขอบคุณมากครับ 🙂

กำลังดู 13 ข้อความตอบกลับ - 1 ผ่านทาง 13 (ของทั้งหมด 13)
  • ผู้เขียน
    ข้อความตอบกลับ
  • #5425
    นิรนาม
    ไม่เปิดใช้

    ก็ใส่เพิ่มไปที่ buysignal โดยใช้ and เชื่อม ส่วน อ้างอิง symbol ลองใช้คำสั่งนี้ดุครับ Foreign( “SET”, “Close”)

    #5424
    นิรนาม
    ไม่เปิดใช้

    ผมลอง ทำยังงี้ถูกไหมอ่ะครับ ทำไมมัน backtest up4 แล้วค่าออกมาเท่ากับ ไม่ใส่ เลย ครับ
    ขอบคุณครับ

    upper1=HHV(Ref(H,-1),20);
    Lower1 = LLV(Ref(L,-1),10);
    Middle1 = (upper1+Lower1)/2;
    Li= MA( C * V, 21 );
    Ok=Li>1000000;

    up1=ADX(14)>20;
    up2=PDI(14)>20;
    up3=C>MA(20,C);

    Close2=up3;

    up4=Foreign(“SET”,”Close2″);

    Buy = Cross(C,upper1)AND up1 AND up2 AND up4 and Ok;
    Sell = Cross(C,Lower1);

    #5423
    นิรนาม
    ไม่เปิดใช้

    up4=Foreign(“SET”,”Close”) > MA(Foreign(“SET”,”close”),20);

    วิธีการใช้งาน function Foreign ครับ

    #5422
    นิรนาม
    ไม่เปิดใช้

    ขอบคุณมากครับ : )

    #5421
    นิรนาม
    ไม่เปิดใช้

    เยี่ยมเลยครับ linuxnoy 😀
    เสริมนิดนึงครับ คำสั่ง Foreign เป็นคำสั่งที่ค่อนค้างใช้เวลาประมวลผลนาน
    สมมุติคำสั่ง RSI(14) ใช้เวลาคำนวน 0.001 ms
    แต่คำสั่ง Foreign จะใช้เวลาคำนวน 0.500 ms ครับ
    ดังนั้นถ้าใช้คำสั่งนี้มากๆ ตอน Backtest อาจไม่เห็นผล แต่ Optimize นี่รอเหงือกแห้งครับ

    วิธีแก้ไขผมแนะนำให้ Optimize Code ตามนี้ครับ
    ลองดูคำสั่ง up4 = Foreign(“SET”,”Close”) > MA(Foreign(“SET”,”close”),20);
    จะเห็นว่า โค้ดมีการเรียกหา Close ของ SET ถึงสองรอบ ทั้งที่เป็นตัวเดียวกัน
    ดังนั้นเราจึงควรเรียกหา Close ของ SET มาทีเดียวแล้วเก็บไว้ จากนั้นค่อยใช้ครับ

    ดังนั้นโค้ดรูปแบบใหม่ของเราก็จะเป็นตามนี้ครับ

    SETC = Foreign(“SET”,”Close”);
    up4 = SETC > MA(SETC,20);

    ซึ่งหลังจากนี้เราอาจจะใช้ SETC อีกกี่ครั้งก็ได้ เช่น
    RSISET = RSIa(SETC,14);
    ROCSET = ROC(SETC,1);
    ฯลฯ

    เป็นต้นครับ

    #5420
    นิรนาม
    ไม่เปิดใช้

    เยี่ยมไปเลยคุณ Coppuck

    #5419
    นิรนาม
    ไม่เปิดใช้

    ขอบคุณมากครับ คุณ Coppuck
    ผมสงสัยนิดหนึงอ่ะครับ

    RSISET = RSIa(SETC,14);

    ทำไมตรงนี้ต้องมีตัว a หรอครับ
    ผมลองแบบไม่ใส่ตัว a มันขึ้น error ครับ

    #5418
    นิรนาม
    ไม่เปิดใช้

    ขอตอบแทนละกันครับ

    คำสั่ง RSIa นั้นเป็นการสั่งให้มันคำนวน RSI จาก Array ที่เราใส่เข้าไปครับ

    RSI: จะคำนวณจากราคา C อย่างเดียว ซึ่งไม่จำเป็นต้องใส่ “C” เ่ช่น RSI(14)
    RSIa: เป็นการให้คำนวณ RSI จาก Array ที่เราต้องการ ในที่นี้คือ SETC จึงกลายเป็น RSIa(SETC,14)

    🙂

    #5417
    นิรนาม
    ไม่เปิดใช้

    RSI(14) รูปแบบเต็มๆคือ RSIa(Close,14) ครับ
    หรือก็คือ RSI(14) = RSIa(Close,14) นั่นเองครับ

    ทีนี้ถ้าเราอยากเปลี่ยน Close เป็นหุ้นอื่นๆ ก็สามารถทำได้ด้วยการแทนค่าเข้าไปครับ
    เช่น RSIa(SETC,14) ก็จะได้ค่า RSI(14) ของ SET ครับ โดยประกาศ SETC = Foreign(“SET”,C); ไว้ก่อน
    หรือทำนองเดียวกัน RSIa(ICTC,14) ก็จะได้ค่า RSI ของกลุ่ม ICT เช่นกันครับ (อย่าลืมประกาศ Foreign ไว้ก่อนด้วยนะ) 😀

    #5416
    นิรนาม
    ไม่เปิดใช้

    ขอบคุณครับ : )

    #5415
    นิรนาม
    ไม่เปิดใช้

    ผมเข้ามากด Like ให้ทุกคนที่ช่วยกันตอบนะครับ แต่ปุ่มกดไม่เจอ อิอิ…

    #5414
    นิรนาม
    ไม่เปิดใช้

    ผมได้ใช้ประโยชน์ด้วยเลยครับ ขอบคุณครับ

    #5413
    นิรนาม
    ไม่เปิดใช้

    (Like)

    😀

กำลังดู 13 ข้อความตอบกลับ - 1 ผ่านทาง 13 (ของทั้งหมด 13)
  • คุณต้องเข้าสู่ระบบเพื่อตอบกลับกระทู้นี้

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

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • เปิดใช้งานตลอด

บันทึกการตั้งค่า