EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: saosai on พฤษภาคม 03, 2011, 07:12:13 pm
-
ผมพยายามเอา Code มายำใส่กันไม่สะเร็จเลยครับ เศร้าเลย ก็เลยจะขอความช่วยเหลือด้วยครับ
- ตั้ง Pending Order ที่ 0.00 น. นับจากที่ราคาเปิดขึ้นแรกของวัน
- Buy Limit, Sell Stop ที่ 20 pips
- SL=40 TP=20
- Double lot 8 ระดับครับ
- เมื่อกราฟพุ่งไปชนฝั่งใดฝั่งหนึงให้ลบ Pending ที่เหลือออก
ผมได้ code นี้มาแล้วครับแต่เอาอันอื่นมาใส่กันไม่ได้เลยครับ ฮือๆๆ
อันนี้ เวลากราฟ วิ่งไปชนอันใดอันนึงมันจะลบ Pending ออก
extern double Lot=0.1;
extern int Magic=12356;
int start()
{ int total=OrdersTotal();
if(total==0)
{
OrderSend(Symbol(),OP_SELLSTOP,Lot,Bid-Point*10,3,0,0,"EA",Magic,0,Red);
Sleep(1000);
OrderSend(Symbol(),OP_BUYSTOP,Lot,Ask+Point*10,3,0 ,0 ,"EA",Magic,0,Green);
}
if(total==2)
{ int buy ,sell;
for(int i=0;i<total;i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{ buy=buy+1;
}
if(OrderType()==OP_SELL)
{
sell=sell+1;
}
}
if(buy==1 || sell==1)
{
for( i=0;i<total;i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP)
{ OrderDelete( OrderTicket());
}
if(OrderType()==OP_SELLSTOP)
{
OrderDelete( OrderTicket());
}
}
}
}
return (0);
}
อันนี้เรื่องของเวลา
extern int Start=20;
extern int End=14;
int start()
{
if(Start > End)
{
if(Hour()>=End && Hour()<Start)
return(0);
}
if(Start < End)
{
if(Hour()< Start || Hour()>=End)
return(0);
}
...........
}
ลบกวนด้วยนะครับ
ขอบคุณครับผม
-
ผมหน่วงเวลาไว 5 นาทีหลังเวลา 0.00 นะถ้าเกิน 0.05 ไปแล้วจะไม่ทำงานนะครับอีกเรื่อง ตั้งราคาแบบนี้ ตรง delete แทบไม่มีประโยชน์แล้วนะครับ
extern double Lot=0.1;
extern int Magic=12356;
int start()
{ int total=OrdersTotal();
if(total==0)
{ if(Hour()==0 && Minute()<5)
{
OrderSend(Symbol(),OP_SELLSTOP,Lot,Bid-Point*20,3,Bid+Point*20,Bid-Point*40,"EA",Magic,0,Red);
Sleep(1000);
OrderSend(Symbol(),OP_BUYLIMIT,Lot,Ask-Point*20,3,Ask-Point*60 ,Ask ,"EA",Magic,0,Green);
Sleep(1000);
return (0);
}
}
if(total==2)
{ int buy ,sell;
for(int i=0;i<total;i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{ buy=buy+1;
}
if(OrderType()==OP_SELL)
{
sell=sell+1;
}
}
if(buy==1 || sell==1)
{
for( i=0;i<total;i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYLIMIT)
{ OrderDelete( OrderTicket());
}
if(OrderType()==OP_SELLSTOP)
{
OrderDelete( OrderTicket());
}
}
}
}
return (0);
}
-
ขอบคุณมากครับ แต่ยังติดปัญหานึงครับ คือค่าของ BUY LIMIT เวลามันเปิด pending แต่มันอยู่ใต้เส้น SELL STOP ไป 3 pips ครับ อยากให้มันอยู่เหนือราคาเปิด 20 pips ห่างจาก SELL STOP 40 pips น่ะครับ ต้องแก้ไขตรงไหนครับ
ขอบคุณมากครับ
;D ;D
-
OrderSend(Symbol(),OP_SELLSTOP,Lot,Bid-Point*20,3,Bid+Point*20,Bid-Point*40,"EA",Magic,0,Red);
Sleep(1000);
OrderSend(Symbol(),OP_BUYLIMIT,Lot,Ask-Point*20,3,Ask-Point*60 ,Ask ,"EA",Magic,0,Green);
ตรงสีแดงคือราคาเปิดตั้ง 2 อันลองปรับดูครับ
-
ขอบคุณท่าน Admin มากๆครับ
ผมพยายามหา Code แก้ตัวเลขแล้วไม่ได้เลยครับ ยังติดปัญหาเดิมอยู่ครับ ปัญหามีดังนี้ครับ
1. BUYLIMIT มันไม่ได้อยู่ในที่ของมันครับ มันต้องอยู่เหนือจาก Open price ไป 20 pips ครับ
2. เมื่อเสียแล้วมันไม่ยอม เบิล Lot ให้อ่ะครับ
ผมขอลบกวนท่าน Admin อีกรอบนะครับ
ขอบพระคุณมากครับ
:D :)
-
อยู่ข้างบนเขาเรียก Buy Stop ครับ ไม่ใช่ Buy Limit