fbpx

สอบถามและช่วยแกะโค๊ด trailing stop

  • ผู้สร้าง
    กระทู้
  • #9369
    AvatarKitiwat-Koon
    Participant

    <p>จุดประสงผมคืออยากทำ trailing stop ครั้งจะใช้คำสั่ง applystop มันก็ได้ แต่เวลา scan มันหาไม่เจอ เจอแต่คำสั่งที่ไม่ trailingstop ผมเลยค้นใน google ได้คำสั่งมาแบบนี้
    StopLevel = 1 – Param(“trailing stop %”, 3, 0.1, 10, 0.1)/100;</p>

    <p>Buy = Cross( MACD(), Signal() );
    Sell = 0;
    trailARRAY = Null;
    trailstop = 0;</p>

    <p>for( i = 1; i < BarCount; i++ )
    {</p>

    <p>if( trailstop == 0 AND Buy[ i ] )
    {
    trailstop = High[ i ] * stoplevel;
    }
    else Buy[ i ] = 0; // remove excess buy signals</p>

    <p>if( trailstop > 0 AND Low[ i ] < trailstop )
    {
    Sell[ i ] = 1;
    SellPrice[ i ] = trailstop;
    trailstop = 0;
    }</p>

    <p>if( trailstop > 0 )
    {
    trailstop = Max( High[ i ] * stoplevel, trailstop );
    trailARRAY[ i ] = trailstop;
    }</p>

    <p>}</p>

    <p> </p>

    <p>แล้วผมก็ลอง backtest ดูแล้วลองไล่ scan ดู ปรากกฏมามันเจอ สามารถนำไปใช้ได้จริง เพราะถ้าใช้ applystop เช่น วันนี้อาจเจอ ให้ขาย trailing แต่ scan ไม่เจอสัญญาณขาย เพราะเวลา scan มันจะข้ามคำสั่ง applystop ไป ผมเลยต้สองหา code ที่สามารถ scan เจอ แต่ติดตรงผมแกะไม่เป็นครับ รบกวนผู้รู้ช่วย comment แต่ละบรรทัดได้ไหมครับ พอดีผมมือใหม่ และก็ไม่เก่งอังกฤษด้วยครับ ขอบคุณครับ</p>

กำลังดู 3 ข้อความตอบกลับ - 1 ผ่านทาง 3 (ของทั้งหมด 3)
  • ผู้เขียน
    ข้อความตอบกลับ
  • #9372
    AvatarPiyoros-Tpakdee
    Participant

    <p>ลอง งม ดูนะครับ</p>

    <p> </p>

    <p>StopLevel = 1 – Param(“trailing stop %”, 3, 0.1, 10, 0.1)/100;</p>

    <p>ระดับที่จะ stop มีค่าเท่ากับ 1 - (trailing stop % ) / 100
    trailing stop % เป็นตัวแปร มี พารามิเตอร์ ดังนี้ ค่าเริ่มต้นที่ 3 ต่ำสุดที่ 0.1 สูงสุดที่ 10 ขยับทีละ 0.1</p>

    <p>Buy = Cross( MACD(), Signal() );                            --- คำสั่งซื้อ เมื่อ macd ตัด ขึ้น
    Sell = 0;                                                                         --- กำหนดให้ Sell มีค่าเท่ากับศูนย์ ( เพื่อให้แน่ใจว่า ไม่มีคำสั่งขายในตอนเริ่ม )
    trailARRAY = Null;                                                     --- กำหนดให้ trailARRAY เท่ากับศูนย์
    trailstop = 0;                                                                --- กำหนดให้ trailstop มีค่าเท่ากับศูนย์</p>

    #9371
    AvatarPiyoros-Tpakdee
    Participant

    <p>for( i = 1; i < BarCount; i++ )
    {</p>

    <p>if( trailstop == 0 AND Buy[ i ] )                                --- ถ้า ที่แท่ง i ยังไม่มี trailstop และ มีสัญญาณซื้อ
    {
    trailstop = High[ i ] * stoplevel;                                --- ให้ trailstop เท่ากับ ราคาสูงสุดของแท่งนั้น คูณกับ stoplevel
    }
    else Buy[ i ] = 0;                                                           --- ถ้าเป็นอย่างอื่น เช่น มีสัญญาณซื้อและมี trailstop แล้ว ให้ค่า สัญญาณซื้อ เท่ากับ 0 (เพื่อเคลียร์สัญญาณซื้อซ้ำ)</p>

    <p>if( trailstop > 0 AND Low[ i ] < trailstop )              -- ถ้า มี trailstop และ ราคาต่ำสุดของแท่งนั้น ต่ำกว่า trailstop
    {
    Sell[ i ] = 1;                                                                     --- ให้มีสัญญาณขาย
    SellPrice[ i ] = trailstop;                                              --- ให้ราคาขาย เท่ากับ trailstop
    trailstop = 0;                                                                  --- เคลียร์ค่า trailstop
    }</p>

    <p>if( trailstop > 0 )                                                            -- ถ้า มี trailstop (แต่ ราคาต่ำสุดของแท่งนั้น สูงกว่า trailstop )
    {
    trailstop = Max( High[ i ] * stoplevel, trailstop );   -- ปรับค่า trailstop เอาค่าสูงที่สุดระหว่าง trailstop เดิม กับ trailstop ใหม่
    trailARRAY[ i ] = trailstop;                                          -- เก็บค่า trailstop เข้า trailARRAY
    }</p>

    #9370
    AvatarKitiwat-Koon
    Participant

    <p>ขอบคุณครับ พอดีช่วงนี้งานประจำผมเยอะมากเลยไม่ค่อยได้เข้ามาอ่านเลย</p>

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