ผิดตรงไหนครับ
Home › Forums › Q&A ถามตอบ › ผิดตรงไหนครับ
This topic contains 6 replies, has 3 voices, and was last updated by cheaw 5 months ago.
-
AuthorPosts
-
January 13, 2013 at 12:14 pm #5664
ผมลองเขียนสูตรยังงี้ครับ
อยากให้เกิดสัญญาณซื้อตอนที่ MA 10 ตัด MA 50 แต่ condition เพิ่มคือ ต้องมี adx 14 วัน มากกว่า 25 ครับ และ PDI มากกว่า 25 ครับ
ทำไมมัน Backtest ไม่ได้น่ะครับ ไม่ทราบว่าการเอา Condition มาใส่เพิ่ม ต้องใช้คำสั่งอะไรหรอครับขอบคุณมากครับ
SECTION_BEGIN(“Cross MA”);
a=MA(C,10);
b=MA(C,50);
Plot(a,”MA10″,colorRed,styleLine);
Plot(b,”MA50″,colorBlack,styleLine);
C=ADX(14)>25;
d=PDI(14)>25;Buy=Cross(a,b) AND ADX(14)>25 AND PDI(14)>25;
Sell=Cross(b,a);
_SECTION_END();January 13, 2013 at 11:15 pm #5666Backtest ไม่ได้? มันฟ้องว่าอะไรเหรอครับผมไม่ได้ลองเองแต่อ่านแค่นี้ก็นึกภาพไม่ออก
ที่ผมเห็นแปลกบ้างก็
1. ผมไม่เคยใช้คำสั่ง SECTION เลย ก็เลยไม่แน่ใจว่ามีผลไหม
2. เงื่อนไขการซื้อ กับ เงื่อนไขการขาย ไม่เป็น Complement กันสนิทครับ เพราะกรณีของการซื้อคุณคิด ADX กับ PDI แต่ตอนขายไม่คิด ดังนั้นในกรณีที่ MA ตัดกันแล้ว แต่ ADX ไม่ถึง ทำให้ไม่เกิดสัญญาณซื้อ แต่พอมันตัดกันกลับมาเราดันได้สัญญาณขายโดยไม่มีสัญญาณซื้อมาก่อน ผมก็ไม่เคยลองเลยไม่รู้ว่ามีผลหรือไม่ แต่ให้ดีลองใช้ ExRem(Buy, Sell); ExRem(Sell,Buy); เพิ่มไปในบรรทัดหลัง Sell=… ดูครับอ้อ MA ใน AmiBroker มันเป็น SMA นะครับ ไม่ใช่ EMA ถ้าต้องการ EMA ก็ใช้ฟังก์ชั่น EMA(C,10) แทนนะครับ ปกติผมมักจะเห็นคนนิยม EMA มากกว่าถ้าเป็นช่วงเวลาไม่ยาวนานนัก (สั้นกว่า 200 หรือ 1 ปีนับเฉพาะวันทำการ)
January 14, 2013 at 3:38 pm #5668ตัวแปร C ห้ามใช้ครับ มันเอาไว้สำหรับ Close ต้องเปลี่ยนเป็นชื่ออื่นครับ
January 15, 2013 at 1:03 pm #5670จริงด้วยครับ C ห้ามใช้ครับ ขอบคุณมากครับ ได้หล่ะครับ : )
January 16, 2013 at 9:56 am #5671ขอถามนิดหนึงครับคุณ Pongkemon
exrem มันคือคำสั่งยังไงหรอครับ ผมอ่านแล้วไม่ค่อยเข้าใจครับ รบกวนช่วยอธิบายหน่อยได้ไหมครับ :)ExRem
- remove excessive signalsTrading system toolbox
(AFL 1.5)SYNTAX exrem( ARRAY1, ARRAY2 )
RETURNS ARRAY
FUNCTION removes excessive signals:
returns 1 on the first occurence of “true” signal in Array1
then returns 0 until Array2 is true even if there are “true” signals in Array1EXAMPLE
buy = ExRem( buy, sell );
sell = ExRem( sell, buy );ขอบคุณมากครับ
-
This reply was modified 5 months ago by
cheaw.
January 16, 2013 at 10:13 am #5673ExRem ใช้สำหรับลบสัญญาณส่วนเกินครับ เราจะใช้คำสั่งนี้กับคู่ของสัญญาณที่จะมีความหมายต่อเมื่อเกิดขึ้นสลับกัน เช่น สัญญาณซื้อกับสัญญาณขาย การเกิดสัญญาณขายขึ้นติดกัน 2 ครั้ง เราจะถือว่าครั้งที่สองเป็นสัญญาณเกินเพราะเรายังไม่ได้ซื้อเลยจะให้ขายได้ยังไง
ทีนี้สัญญาณเกินพวกนี้จะเกิดขึ้นได้ก็ต่อเมื่อเงื่อนไขการสร้างสัญญาณซื้อกับสัญญาณขายไม่ได้เป็นเงื่อนไขที่สลับกันพอดี
ตัวอย่างเงื่อนไขที่สลับกันพอดีเช่น ซื้อขายเมื่อ MACD ตัด Signal เพราะเมื่อตัดขึ้น ก็จะต้องมีตัดลงก่อนถึงจะมีตัดขึ้นครั้งถัดไปได้ แต่ระบบที่คุณสร้างสัญญาณขายอาจจะเกิดขึ้นสองครั้งติดกันได้เพราะแม้สัญญาณ MA ตัดกันแล้วแต่ถ้า ADX กับ PDI ไม่ถึงก็ไม่เกิดสัญญาณซื้อ แต่เส้นที่ตัดไปแล้วก็สามารถตัดเพื่อสร้างสัญญาณขายได้ ก็เลยใช้ ExRem มาลบสัญญาณที่เกินออกเพื่อป้องกันการสับสนของระบบครับ
January 16, 2013 at 1:20 pm #5674ขอบคุณมากครับ K.Pongkemon
-
This reply was modified 5 months ago by
-
AuthorPosts
You must be logged in to reply to this topic.









สวัสดีครับ!
ใครที่อยากเล่นหุ้นอย่างเป็นระบบ และเข้าใจแนวคิดในการเก็งกำไรอย่างเป็นระบบแนะนำให้ไล่อ่านตั้งแต่บทความแรกๆดูนะครับ
(Click! ดัชนีบทความตรง tab ด้านบน)