EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: dimdio on ธันวาคม 08, 2011, 02:02:40 am
-
ผมอยากจะได้ rsi ในแบบ ea น่ะครับ อยากจะลองเก็บสถิติดูครับ
โดยใช้เส้น rsi 2 ค่าที่ตัดกันเป็นสัญญาณซื้อขาย โดยตั้งค่าได้ดังนี้ครับ
ค่า rsi ตัวที่ 1 ใส่ค่า...วัน
ค่า rsi ตัวที่ 2 ใส่ค่า ...วัน
กำหนด Lot .....
กำหนดให้ใช้หรือไม่ใช้ TP และตั้งค่าTP ได้ ....
กำหนดให้ใช้หรือไม่ใช้ SL และตั้งค่าSL ได้ ....
กำหนดให้ใช้หรือไม่ใช้ trailingstop ได้และตั้งค่า trailingstop ได้ ....
**** สัญญาณ ซื้อ คือ เมื่อ rsi เส้นที่มีค่าน้อย*ตัดปิด*เหนือเส้นที่มีค่ามากให้ซื้อ และเมื่อออเดอถูกปิดไป
ไม่ว่าจะกำไรหรือขาดทุน **จะไม่มีการเปิดออเดอต่อในขณะที่เส้น rsi ที่มีค่าน้อยอยู่เหนือเส้นที่มีค่ามาก**
**** สัญญาณ ขาย คือ เมื่อ rsi เส้นที่มีค่าน้อย*ตัดปิด*ต่ำกว่าเส้นที่มีค่ามากให้ขาย และเมื่อออเดอถูกปิดไป
ไม่ว่าจะกำไรหรือขาดทุน **จะไม่มีการเปิดออเดอต่อในขณะที่เส้น rsi ที่มีค่าน้อยอยู่ต่ำกว่าเส้นที่มีค่ามาก**
*** คือซื้อเมื่อเส้นrsi *ตัดกัน*จริงๆ น่ะครับ ไม่เปิดออเดอต่อเรื่อยๆ ในขณะที่เส้นrsi ที่มีค่าน้อยอยู่เหนือหรือต่ำกว่าเส้นที่มีค่ามากเพราะปกติเว็บเขียนอีเอออกมามันจะเป็นแบบนั้น ***
รบกวนผู้เชี่ยวชาญในการเขียน ea ช่วยผมหน่อยนะครับ ต้องการจริงๆ ขอบคุณครับ
-
อยากได้เช่นกันครับจะนำไปประยุกกับของผมพอดี
-
มีใครอาสาเขียนให้มั้ยครับ :)
-
ลองใช้ระบบสร้าง EA ของเวบดูสิค่ะ http://www.thaiforexea.com/mt4/
-
ขอบคุณครับ ลองดูแล้วครับแล้วถ้าจะให้มันเข้าเปิดออเดอร์ แค่ครั้งเดียว เช่น ตอนrsi เส้นค่าน้อยตัดค่าเส้นมากขึ้นครั้งแรกเปิดออเดอเป็น buy แล้วพอออเดอร์นี้ปิดลง ไม่ต้องให้มันเปิดออเดอร์เพิ่มจนกว่าrsi จะตัดกันอีกรอบต้องทำไงอ่ะครับ ใครแนะนำได้บ้างครับ
-
เคลียร์ค่า ตัวแปรหลังจากที่เปิด Order หรือยังครับ
เพื่อให้มันเปิด เฉพาะตอนตัดกันไง :D
-
คุณ preeyada เคลียร์ยังไงอ่ะครับ ??? ใช่หมายถึงที่สร้างในเว็บหรือเปล่่า ผมมือใหม่นะครับ ช่วยสอนที ขอบคุณครับ
-
นั่นนะสิครับ...เคลียร์ยังไงครับ...
ทุกวันนี้ผมลองเขียนมาหลายแบบก็ติดปัญหานี้เหมือนกันครับ...
รบกวนช่วยชี้แนะข้าน้อยด้วยครับ....
....ขอบคุณมากมายล่วงหน้าครับ..../^_^/" ??? :-\ ;D :-*
-
คือ ผมหมายถึงว่าอย่างนี้ครับ
เมื่อมีการตัดกันเกิดขึ้น ให้เก็บค่าลงตัวแปรว่าให้ Buy หรือ Sell
เช่น ประกาศตัวแปร ชื่อ OrderBS
เมื่อเข้าจังหวะ Buy ก็ให้ OrderBS=1
เมื่อเข้าจังหวะ Sell ก็ให้ OrderBS=2
จากนั้นก็เอาค่าจากตัวแปรไปสั่งให้เปิด Order อีกที
เมื่อมีการปิด Order ก็ให้เคลียร์ค่าตัวแปรอย่างที่บอก เช่น ให้ OrderBS=0
ก็จะไม่เปิด Order อีก จนกว่าจะมีการตัดกันเกิดขึ้นครั้งต่อไป
ประมาณนี้ครับ :D
-
อ๋อ...มันป็นจั่งสั้น...
ที่ท่านอธิบายมาผมพอเข้าใจครับ...
แต่ปัญหาของผมคือเรื่องคำสั่งต่างๆ ที่จะนำมาใช้น่ะครับ...(ไม่เคยเรียนภาษา C มาก่อน เรียนแต่ PLC 555)
ไม่เป็นไรครับ...เดี๋ยวผมลองดูก่อนครับ...
ติดตรงไหนเดี๋ยวลองรบกวนอีกครั้งครับ...
....ขอบคุณมากมายครับ...(*_*) :-* ;D :o
-
ยินดีครับ :D
ในบอร์ดนี้มีคนเก่งๆมากมายครับ
ถามมามีคนตอบแน่นอน ฟันธง 55
-
ผมอยากจะได้ rsi ในแบบ ea น่ะครับ อยากจะลองเก็บสถิติดูครับ
โดยใช้เส้น rsi 2 ค่าที่ตัดกันเป็นสัญญาณซื้อขาย โดยตั้งค่าได้ดังนี้ครับ
ค่า rsi ตัวที่ 1 ใส่ค่า...วัน
ค่า rsi ตัวที่ 2 ใส่ค่า ...วัน
กำหนด Lot .....
กำหนดให้ใช้หรือไม่ใช้ TP และตั้งค่าTP ได้ ....
กำหนดให้ใช้หรือไม่ใช้ SL และตั้งค่าSL ได้ ....
กำหนดให้ใช้หรือไม่ใช้ trailingstop ได้และตั้งค่า trailingstop ได้ ....
**** สัญญาณ ซื้อ คือ เมื่อ rsi เส้นที่มีค่าน้อย*ตัดปิด*เหนือเส้นที่มีค่ามากให้ซื้อ และเมื่อออเดอถูกปิดไป
ไม่ว่าจะกำไรหรือขาดทุน **จะไม่มีการเปิดออเดอต่อในขณะที่เส้น rsi ที่มีค่าน้อยอยู่เหนือเส้นที่มีค่ามาก**
**** สัญญาณ ขาย คือ เมื่อ rsi เส้นที่มีค่าน้อย*ตัดปิด*ต่ำกว่าเส้นที่มีค่ามากให้ขาย และเมื่อออเดอถูกปิดไป
ไม่ว่าจะกำไรหรือขาดทุน **จะไม่มีการเปิดออเดอต่อในขณะที่เส้น rsi ที่มีค่าน้อยอยู่ต่ำกว่าเส้นที่มีค่ามาก**
*** คือซื้อเมื่อเส้นrsi *ตัดกัน*จริงๆ น่ะครับ ไม่เปิดออเดอต่อเรื่อยๆ ในขณะที่เส้นrsi ที่มีค่าน้อยอยู่เหนือหรือต่ำกว่าเส้นที่มีค่ามากเพราะปกติเว็บเขียนอีเอออกมามันจะเป็นแบบนั้น ***
รบกวนผู้เชี่ยวชาญในการเขียน ea ช่วยผมหน่อยนะครับ ต้องการจริงๆ ขอบคุณครับ
ยอมเปิดเป็น Open source ไหมหละครับถ้ายอมเดียวผมเขียนให้ดู
-
นั้นไง พูดยังไม่ทันขาดคำ
ท่านแอดมินผู้ใจดีก็มาช่วยเลย
เชื่อว่าเด๋วต้องมีท่าน D_Diamond มาเสริมอีกแรง
ด่วนเลยครับ ท่านเจ้าของกระทู้ รีบตอบรับเร็ว อิอิ
-
ไม่มีปัญหาครับท่านแอดมิน open source ได้เลยครับ ขอบคุณล่วงหน้าครับ :)
-
Open source คือไรอ่ะ....
ไม่รู้...ช่วยตอบทีครับ...
จะได้เอออ๋อตามไปด้วย.../^_^/ ??? ::) ;D
-
Open source คือไรอ่ะ....
ไม่รู้...ช่วยตอบทีครับ...
จะได้เอออ๋อตามไปด้วย.../^_^/ ??? ::) ;D
Open source คือการเปิดเผย code ทั้งหมดที่ผมจะเขียนให้เพราะเห็นว่ามันมีเทคนิคที่ทุกคนนำไปใช้ได้เลยจะทำให้เพื่อให้คนอื่นมานำไปใช้ต่อครับ เดียวพรุ่งนี้หรือไม่ก็วันพูธก็น่าจะเสร็จช่วยนี้ค่อนข้างยุ่งครับ
-
ลองเปิด demo ดูการตัดมันนะครับแต่ก็น่าจะ ok แล้วหละ
extern double lot=0.1;
extern int magic=123;
extern bool UseTp=true;
extern int Tp=15;
extern bool UseSl=true;
extern int Sl =15;
extern bool UseTrailing=true;
extern int trailing =15;
extern int LessRsiDay=14;
extern int MuchRsiDay=49;
int temp;
int start()
{
double LessRsi =iRSI(NULL,0,LessRsiDay,PRICE_CLOSE,0);
double MuchRsi =iRSI(NULL,0,MuchRsiDay,PRICE_CLOSE,0);
int way= check(LessRsi,MuchRsi);
if(temp==0)
temp=way;
if(UseTp==false)
Tp=0;
if(UseSl==false)
Sl=0;
if(OrdersTotal()==0)
{
if(way==1 && temp==2)
{
if(Sl== 0 && Tp==0)
{
OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0,"dimdo",magic,0,Green);
}
if(Sl!= 0 && Tp==0)
{
OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-Point*Sl,0,"dimdo",magic,0,Green);
}
if(Sl== 0 && Tp!=0)
{
OrderSend(Symbol(),OP_BUY,lot,0,0,"dimdo",magic,0,Green);
}
if(Sl!= 0 && Tp!=0)
{
OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-Point*Sl,Ask+Point*Tp,"dimdo",magic,0,Green);
}
temp=1;
}
if(way==2 && temp==1)
{
if(Sl== 0 && Tp==0)
{
OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,0,"dimdo",magic,0,Red);
}
if(Sl!= 0 && Tp==0)
{
OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+Point*Sl,0,"dimdo",magic,0,Red);
}
if(Sl== 0 && Tp!=0)
{
OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,Bid-Point*Tp,"dimdo",magic,0,Red);
}
if(Sl!= 0 && Tp!=0)
{
OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+Point*Sl,Bid-Point*Tp,"dimdo",magic,0,Red);
}
temp=2;
}
}
if(UseTrailing==true)
trailingstop();
return(0);
}
int check (double v1 ,double v2)
{ static int lastway =0;
static int way =0;
if(v1 > v2)
{
way=1;
}
if(v1 < v2)
{
way=2;
}
if(way!= lastway)
{
lastway = way;
return (lastway);
}
return (0);
}
void trailingstop() {
for(int count=0;count<OrdersTotal();count++)
{OrderSelect(count,SELECT_BY_POS,MODE_TRADES);
if(OrderType() == OP_BUY)
{if(trailing > 0){
if(OrderStopLoss()==0 || (Bid - OrderStopLoss()> trailing*Point))
{
OrderModify(OrderTicket(), OrderOpenPrice(),Bid - trailing*Point, OrderTakeProfit(), 0, Blue);
}
}
}
if(OrderType() == OP_SELL)
{ if(trailing > 0)
{
if(OrderStopLoss() == 0 || ( OrderStopLoss()-Ask > trailing*Point ) )
{OrderModify(OrderTicket(), OrderOpenPrice(),Ask + trailing*Point, OrderTakeProfit(), 0, Red); }
}
}
}
}
-
ท่าน Admin ครับ
extern int magic=123; คืออะไรครับ...
...ขอบคุณครับ.../^_^/ ;D ::) :-[
-
magicnumber เป็นเลขประจำตัวอีเอครับ ใส่ไว้ให้รู้ว่าออเดอร์ไหนเป็นของอีเอตัวไหน ไม่ใส่อีเอจะมั่ว
-
อ๋อ.......
ขอบคุณมากมายครับ..../^_^/ ;D :o :-*
-
ขอบคุณครับท่านแอดมิน ขอนำไปลองใช้ก่อนนะครับ :)
-
ถึงท่าน admin จากโค้ต ที่ท่านเขียนไว้ผมขอให้ท่านช่วย แก้ไขให้มันเบิ้ลล๊อด จนกว่าจะปิด order แล้วไม่เอา sl กับ Trailing นะคับ
และขอกำหนดระยะ pipที่จะเปิดไม้ 1 กับไม้ที่ 2 คับ ขอขอบคุณล่วงหน้าคับ