EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: bankclub99 on ธันวาคม 08, 2012, 03:32:53 pm
-
เงื่อนไข ไม่ได้ซับซ้อนอะไรเลยครับ แค่เส้น EMA 1 มากกว่า EMA 12 เปิด Buy (เส้นตัดขึ้น)
และเมื่อ EMA 1 น้อยกว่า EMA 12 ปิด ออเดอร์ Buy และ เปิด Sell (เส้นตัดลง)
เปิด - ปิด ออเดอร์ แบบนี้ไปเรื่อย ๆ ครับ
มันเปิด order แต่มัยไม่ยอม ปิด order ให้ครับ รบกวน พี่ ๆ ช่วยดูให้ผมทีครับผม
ขอบพระคุณมากครับ.....(แก้มา 3 วันแล้ว ยังไม่ได้อีกครับ -*-)
--------------------------------------------------------------------------
extern double lots =0.01;
extern double sl =0;
extern double tp =0;
static int start=0;
int start() {
double var1 = iMA(NULL,0,1,0,1,0,0);
double var2 = iMA(NULL,0,12,0,1,0,0);
if(start==0)
{
if(var1>var2)
start=1;
if(var1<var2)
start=2;
return (0);
}
if(start==1 )
{
if(OrdersTotal()==1)
{ if(var1<var2)
{ OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),10,Pink);
Sleep(2000);
start=2;
return (0);
}
}
if(OrdersTotal()==0)
{ if(var1<var2)
{ OrderSend(Symbol(),OP_SELL,lots,Bid,10,0,0,"xxx",0,0,Red);
Sleep(2000);
start=2;
return (0);
}
}
}
if(start==2 )
{
if(OrdersTotal()==2)
{ if(var1>var2)
{ OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),10,Pink);
Sleep(2000);
start=1;
return (0);
}
}
if(OrdersTotal()==0)
{ if(var1>var2)
{ OrderSend(Symbol(),OP_BUY,lots,Ask,10,0,0,"xxx",0,0,Green);
Sleep(2000);
start=1;
return (0);
}
}
}
return(0) ;
}
-
เอาต้นแบบมาจากกระทู้ไหนครับ
-
ผมได้แก้ต่อเอาไวข้างล่างของกระทู้ต้นแบบแล้วนี้ครับ http://www.thaiforexea.com/index.php/topic,1063.msg5181.html#msg5181
-
อ้าว ๆ ทำไมผม ไม่เห็น เนี้ย 55555
ขอโทษด้วยครับ
และขอบคุณ พี่ขวัญ มาก ๆ ครับ ^^"
-
พี่ขวัญ ครับผม
ผมได้ลองนำไป back test ดูแล้ว มันยัง มีปัญหาเรื่องของการ ปิด ออเดอร์ อยู่อ่ะครับ
ทดสอบ M5 เส้น ตัดกัน ครั้งแรก เปิด roder Sell ปกติ พอเส้น ตัดขึ้น ปิด order sell เปิด order Buy ปกติ
แต่ พอ ครั้งที่สาม เส้นตัด ลง อีกครั้ง มัน ไม่ปิด order Buy แล้วเปิด order Sell ให้เลยครับ มันถือ order ไว้ ดื้อ ๆ ซะอย่างนั้น -*- แถมยัง เบิ้ลอีก ไม้ ตอนตัดขึ้นอีกทีนึงด้วย -*-
เง้อ......รบกวนพี่ อีกครังนึงครับผม
-
EA ในกระทู้นั่นผมเอา code ตัวสุดท้ายที่แก้มาทดสอบดูมันเปิดครั้งละ 1 Order เท่านั่นนะผมเอามาทดสอบก็เปิดแล้วปิด สลับกันไปเรื่อยๆๆนะ ทดสอบกับโบรเกอร์กี่จุดครับ
-
code ตัวาสุดท้ายค่าอินดี้เป้นแบบนี้
double var1 = iMA(NULL,0,12,0,1,0,0);
double var2 = iMA(NULL,0,26,0,1,0,0);
คือ 12 กับ 26 MODE_EMA ใช้ราคาแบบ PRICE_CLOSE
-
ตอนนี้ ผม ทดสอบ กับ Exness โบรค 5 จุด ครับพี่ขวัญ
-
พี่ขวัญ เทส แล้วมัน ปิด เปิด ไปเรื่อย ๆ ปกติ ดี หรอครับ
หรือจะ เกี่ยวกับ โบรคเกอร์ ของผมหว่า T^T
งง จริง ๆ เลยครับ มึน ๆ - -"
-
พี่ขวัญ เทส แล้วมัน ปิด เปิด ไปเรื่อย ๆ ปกติ ดี หรอครับ
หรือจะ เกี่ยวกับ โบรคเกอร์ ของผมหว่า T^T
งง จริง ๆ เลยครับ มึน ๆ - -"
ใช่มันเปิดปิดสลับกันไปเลย แต่ EA ไม่กำไรนะเจ๊ง ลอง test ที่โบร 4 ดู ผมใช้ forex4you test ปกติดีเปิดปิดสลับกันไปตลอด
-
อีเอมันเปิด/ปิด sell แล้วแต่ไม่สำเร็จ เกิด requote ครับ แล้วมันก็เปิดออเดอร์ใหม่ กลายเป็น buy 2ที
อีเอไม่ได้ตรวจสอบว่าการเปิด/ปิดออเดอร์ทำสำเร็จแล้วหรือยัง
อีเอที่ทำมาสำหรับโบรก 4 หลัก จะมีปัญหาเวลาใช้กับโบรก 5 หลักบ่อยๆครับ
-
ขอบคุณทั้งพี่ขวัญ และคุณ D_Diamond มากครับผม ที่คอยมาดูให้ผม ครับ ขอบคุณครับ ;)
-
ผมได้ลองโหลด MT4 ของ Forex4you มา Back Test ดูแล้ว คับพี่ขวัญ
ปรากฎว่า....มี order แรก order เดียวครับ ที่เป็น order Buy ที่เหลือเป็น order Sell หมดเลยครับ
ที่พี่ลอง แล้ว มันล้างพอร์ต สาเหตุเป็นเพราะ แบบเดียว กับอาการ ของผมรึเปล่าครับ
-
code เกห่าอาจจะไม่ครบเอาตัวไหมไปมันจะชื้อสลับกันนะตามที่เจ้าของเก่าเค้าโพสไวแต่ยังไงก็เจ๊งอยู่ดีนะ
extern int Lots=0.01;
static int memo=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);
}
int start()
{
double var1 = iMA(NULL,0,12,0,1,0,0);
double var2 = iMA(NULL,0,26,0,1,0,0);
int kway = check(var1,var2);
int total =OrdersTotal();
int ticket;
double Lots=0.1;
if(total==0)
{
if(kway==1)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"v1v2",0,0,Green);
memo=1;
}
if(kway==2)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"v1v2",555,0,Red);
memo=2;
}
}
if(total==1)
{
if(kway==1 && memo==2)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Pink);
Sleep(2000);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"v1v2",0,0,Green);
memo=1;
}
if(kway==2 && memo==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Pink);
Sleep(2000);
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"v1v2",555,0,Red);
memo=2;
}
}
return(0);
}
-
ขอบคุณมาก ๆ ครับผม ^^"
-
พี่ขวัญ เคย บอกไว้ว่า "ระวังหน่อยนะครับ เพราะ EA จะ ปิด ๆ เปิด ๆ order ช่วงที่กราฟสวิงเพราะค่า sma มันตัดไปตัดมานะครับ"
ซึ่งก็....จริง ๆ ด้วยครับ ทำให้เสีย ค่า spread ไป ๆ มา ๆ บ่อยมาก
......อย่างนี้ พอจะ แก้ได้ โดย การที่ ใส่ code ให้ เข้า order เฉพาะ ตอนที่ แท่งเทียน ปิด เท่านั้น!! ได้ใช่มั้ยครับผม
เพื่อเป็นการ ไม่ให้ เข้าออก order ไปๆมาๆ ในขณะที่กราฟ สวิง.......
ขอบคุณอีกครั้งนึงครับผม :)
-
สลับบายเซลนี้มีอีเอตัวนึงครับ ชื่อ 4xatm
ปี 2011 ทำกำไรได้เยอะ แต่ได้แค่ปีเดียว กับคู่ USDCAD ปีอื่นเน่าหมดครับ
http://www.myfxbook.com/members/4xatm