EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: Coke on มีนาคม 06, 2013, 11:47:18 pm
-
อยากทราบโค้ด เวลาindicatorเปลี่ยนสีให้บาย หรือเซล
-
ต้องศึกษาเรื่อง icustom ครับเพื่อดูว่าแต่ละสีถูกเก็บไวที่ Buffer ตัวที่เท่าไรครับ
-
คือถ้าผมได้ค่า Buffer แล้ว แต่ได้ Buffer มา 4 ตัว
ผมจะรู้ได้ไงครับว่า ตัวไหนให้ค่าสัญญาน บาย สัญญาน เซล
ผมมีอีกวิธีหนึ่งคือว่า ตอนที่รับค่าจาก Indi มาผมจะตั้งค่า Up แล้วทำ EA มา 4 ตัว
ใส่ค่า Buffer แต่ละตัวลงไป ถ้าผมไปรันแล้ว Buffer ตัวไหนทำงานแสดงว่า
เป็นสัญญาน Up จะได้หรือไม่ครับ :D
-
ต้องใช้การสังเกตุครับ ว่าถ้าเป็นสีแรก ค่า buffer แสดงตัวไหนแสดงอะไรออกมามั้ง แล้วถ้าเป้นสีที่สองค่า buffer แสดงตัวไหนออกมามั้ง จากนั่นสังเกตุความแตกต่างของทั้งสองกรณีแล้วนำความแตกต่างนี้หละครับไปสร้าเงป็นเงื่อนไขครับ
-
ok ขอบคุณครับ
-
ถามต่ออีกนิดหนึ่งครับ ให้ EA เทรดตาม Alerts มันจะได้รึเปล่าครับแล้วต้องทำยังไงครับ
แล้วถ้า Indicator บางตัวมันถอดค่า buffer ออกมาไม่ได้จะทำยังไงดีครับ
-
ถามต่ออีกนิดหนึ่งครับ ให้ EA เทรดตาม Alerts มันจะได้รึเปล่าครับแล้วต้องทำยังไงครับ
แล้วถ้า Indicator บางตัวมันถอดค่า buffer ออกมาไม่ได้จะทำยังไงดีครับ
ตอบ
ข้อ 1 ตรงที่มันมีการ alert ก็คือเงื่อนไขครับถ้าเรารู้ว่ามันมีเงื่อน ไข alert ตรงไหนเราก็ใส่ code เปิด order เข้าไปได้ครับ
ข้อ 2 indicator ส่วนใหญ่ต้องมีค่าออกมาครับหากไม่มีค่าออกมาจริงต้องเข้าไปแก้ที่ code เองครับ แต่ indicator 99% มีค่าออกมาแน่นอนครับ
ไม่ทราบว่ามีหนังสือคู่มือของทางเวบหรือเปล่าครับ เพราะวิธีการนำค่าสีออกมา กับตำแหน่งที่ alert นี้ในหนังสือมีตัวอย่างพอที่จะทำให้เข้าใจได้ง่ายขึ้นครับ
-
Indicator ที่ผมจะทำมันเป็นนามสกุล ex4 ??? ผมต้องไปหาโปรแกรมถอดให้มันเป็น MQL4 ก่อนถึงจะเข้าไปดูหรือแก้ไขใช่ไหมครับ
ส่วนค่า Buffer ผมลองถอดมาแล้วได้ตามภาพ ที่แนบมาครับ ไม่รู้ว่ามันใช่ค่า indicator ที่เปลี่ยนสีหรือเปล่าครับ
แต่ส่วนตัวคิดว่าคงไม่น่าใช่เพราะว่าค่าเหมือนกันหมดเลย
หนังสือมีครับพึ่งได้สดๆ เลย ^ ^
-
ค่าของ buffer แต่บะสีเปิดดูใน data window เอาได้เลยครับง่ายๆ
-
ท่าน D_Dimond ผมอยากปรึกษาติดต่อหลังไมค์ได้รึเปล่าครับเอาทางที่สะดวกก้ได้ครับ
-
ผมลองเขียนออกมามันได้ประมาณนี้แต่มันไม่ทำงาน เช็คerorอะไรก็ไม่มี
หรือว่าค่า buffer ผิด ผมก็ดูตามท่าน D_Dimond บอก หรือผิดตรงไหน
extern double Lot=0.01;
int start()
{double up=iCustom(NULL,0,"Test_Number1",1,0);
double down=iCustom(NULL,0,"Test_Number1",3,0);
if(OrdersTotal()==0)
{if(up>0)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"Signal_Buy",0,0,DarkTurquoise);}
if(down>0)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"Singnal_Short",0,0,Red);}
}
if(OrdersTotal()==1)
{if(up>0)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,DarkTurquoise);}
}
if(down>0)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Red);}
}
}
return(0); }
-
อินดี้อะไรครับลองโพสให้ผมดูหน่อยครับ
-
ตามนี้เลยครับ แค่อยากให้มันเปิดออเดอร์ตามการเปลี่ยนสีเท่านั้นเองครับ ???
-
ค่า อินดิ้ต้องเป้นตามนี้ครับถึงจับค่าที่ถูกต้องได้ครับ
double up =iCustom(NULL,0,"supertrendprofit4",0,1);
double down =iCustom(NULL,0,"supertrendprofit4",2,1);
if(up < 10000) คือ BUY สีฟ้า
if(down < 10000) คือ Sell สีแดง
-
extern double Lot=0.01;
int start()
{double up =iCustom(NULL,0,"supertrendprofit4",0,1);
double down =iCustom(NULL,0,"supertrendprofit4",2,1);
if(OrdersTotal()==0)
{if(up<10000)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"Signal_Buy",0,0,DarkTurquoise);}
if(down<10000)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"Singnal_Short",0,0,Red);}
}
if(OrdersTotal()==1)
{if(up<10000)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,DarkTurquoise);}
}
if(down<10000)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Red);}
}
}
return(0); }
-
ขอบคุณ Admin มากครับ :D
เดียวผมขอลองดูก่อนนะครับ
แต่ตอนนี้น่าจะใช้ได้คู่เดียวใช่ไหมครับ ถ้าจะใช้หลายๆคู่ต้องเขียนเพิ่ม โค้ด ตามตัวอย่างในหนังสือใช่ไหมครับ
-
ครับก็ใช้หลักการแจก Magic number ให้มันนั่นหละครับ
-
ทำไมอินดิเคเตอร์ตัวที่เขียน กับตัวที่เอามาโพสมันคนละตัวกันละครับ
ตัวที่เอามาโพสนี่ผมลองโหลดมาชื่อ supertrendprofit4 เป็นคล้ายๆเส้น MA มี 2 สี แดงกับฟ้า
ดูจาก data window มีบัฟเฟอร์ 3 ตัว
super trend profit จะไม่เท่ากับ 0 ถ้าเส้นเป็นสีฟ้า
value 2 ไม่มีค่า
value 3 จะไม่เท่ากับ 0 ถ้าเส้นเป็นสีแดง
เงื่อนไขก็จะเป็นแบบนี้
if(up != 0)
if(down != 0)
ได้ไม่เหมือนท่านแอดมินแฮะ สงสัยอินดิเคเตอร์คนละตัวกัน
แต่ถ้าเขียนถูกแล้วมันไม่เทรด ต้องดูก่อนว่า repaint หรือเปล่าครับ
อินดิเคเตอร์พวกเปลี่ยนสีนี่มักจะ repaint ดังนั้นจับบัฟเฟอร์ถูกแต่มักจะเขียนผิดมากกว่าถูก
-
ขอบคุณมากๆ เลยครับทั้งสองท่านเลย
ตอนนี้ได้ละครับ EA ตัวแรกเลย ขอบคุณจากใจจริงๆ
ใช้ตามที่ Admin บอกนะครับ ก็เหลือปรับแต่งเล็กน้อยครับ
ก็จะศึกษาจากหนังสือเพิ่มนะครับ ขอบคุณครับ
:D :D :D
-
1. ผมเขียนค่า Magic อย่างนี้ถูกไหมครับ
extern double Lot=0.01;
int start()
extern int Magic=123; <--------- 2. แล้วถ้าจะไปใช้อีกสัก 5 ทามเฟรมผมแค่เปลี่ยน เป็น 124 125 126 127 128 ใช่ไหมครับ
{double up =iCustom(NULL,0,"supertrendprofit4",0,1);
double down =iCustom(NULL,0,"supertrendprofit4",2,1);
if(magic)==123) <--------------------------------------------------- อันนี้เหมือนเดิมใช่ไหมครับ หรือว่าเปลี่ยนทามเฟรมต้องเปลี่ยนค่าด้วยครับ
if(OrdersTotal()==0)
{if(up<10000)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"Signal_Buy",0,0,DarkTurquoise);}
if(down<10000)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"Singnal_Short",0,0,Red);}
}
if(magic)==123) <--------------------------------------------------- อันนี้ก็เหมือนเดิมใช่ไหมครับ หรือว่าเปลี่ยนทามเฟรมต้องเปลี่ยนค่าด้วย
if(OrdersTotal()==1)
{if(up<10000)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,DarkTurquoise);}
}
if(down<10000)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Red);}
}
}
return(0); }
-
if(magic ==123) เงื่อนไขต้องแบบนี้
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"Signal_Buy",123,0,DarkTurquoise); ต้องระบุ magic ด้วยทุกที่ที่ส่งคำสั่งเปิด
-
ง่า!! ถ้าผมเปิดสัก 10 กราฟ ผมต้องมาแก้ 10 กราฟเลยใช่ไหมครับ
ไม่ให้มันเหมือนกัน แล้วต้องมี EA เพิ่มมา 10 ตัวนะสิ ???
-
ง่า!! ถ้าผมเปิดสัก 10 กราฟ ผมต้องมาแก้ 10 กราฟเลยใช่ไหมครับ
ไม่ให้มันเหมือนกัน แล้วต้องมี EA เพิ่มมา 10 ตัวนะสิ ???
จริงไม่ต้องหรอกครับให้ใช้ตัวแปร แทน ค่าของ Magic ครับ เวลาใช้งานจริงแก้แค่ input แก้ที่ input ทีเดียวครับ
-
if(magic)==123) มันต้องอยู่หลัง orderselect นะครับ ไม่ใช่เขียนไว้ลอยๆแบบนั้น
แล้วก็ไม่ใช่เขียนแบบนี้ ต้องเขียนว่า if( OrderMagicNumber() == magic )