EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: chartwat on พฤษภาคม 13, 2014, 02:55:28 pm
-
ผมเขียนแบบง่าย ๆ เลย ครับ รับค่า input มาจาก MA 3 ค่า และเปรียบเทียบ ค่า มากกว่าน้อยกว่า และแสดงผลการเปรียบเทียบ ว่าผลเป็นอย่างไร ยังไม่เป็นไปตามที่คิดเลย ครับ
รบกวนผู้รู้ช่วยชี้แนะครับ
int start()
{
double ma3 , ma7 , ma14 ;
int total;
int ticket;
int Ans=0;
ma3=iMA(NULL,0,3,8,MODE_SMMA,PRICE_MEDIAN,0);
ma7=iMA(NULL,0,7,8,MODE_SMMA,PRICE_MEDIAN,0);
ma14=iMA(NULL,0,14,8,MODE_SMMA,PRICE_MEDIAN,0);
total=OrdersTotal();
if(total<1)
{
if(Ask>ma3>ma7>ma14)
{
Ans=1;
}
if(Bid<ma3<ma7<ma14)
{
Ans=2;
}
else
{
Ans=0;
}
}
Print(Ans);
return(0);
}
-
int start()
{
double ma3 , ma7 , ma14 ;
// int total;
// int ticket;
int Ans=0;
ma3=iMA(NULL,0,3,8,MODE_SMMA,PRICE_MEDIAN,0);
ma7=iMA(NULL,0,7,8,MODE_SMMA,PRICE_MEDIAN,0);
ma14=iMA(NULL,0,14,8,MODE_SMMA,PRICE_MEDIAN,0);
if( (Ask>ma3) > (ma7>ma14) )
{
Ans=1;
}
if( (Bid<ma3) < (ma7<ma14))
{
Ans=2;
}
else
{
Ans=0;
}
Print(Ans);
return(0);
-
ขอบคุณ admin มากครับ ได้แล้ว ครับ
อยากขอ เพิ่มอีกนิดครับ
หาก Ans = 0 ให้ close oder ทั้งหมดที่มีไม่ว่าจะ Buy หรือ Sell ครับ ตอนนี้ ให้เปิดเพียงแค่ 1 oder เท่านั้นครับ
ขอบคุณมากครับ
-
int start()
{
double ma3 , ma7 , ma14 ;
// int total;
// int ticket;
int Ans=0;
ma3=iMA(NULL,0,3,8,MODE_SMMA,PRICE_MEDIAN,0);
ma7=iMA(NULL,0,7,8,MODE_SMMA,PRICE_MEDIAN,0);
ma14=iMA(NULL,0,14,8,MODE_SMMA,PRICE_MEDIAN,0);
if( (Ask>ma3) > (ma7>ma14) )
{
Ans=1;
}
if( (Bid<ma3) < (ma7<ma14))
{
Ans=2;
}
else
{
Ans=0;
}
if(Ans==0)
{
closeall();
}
return(0);
}
void closeall()
{
int total =OrdersTotal();
for(int i=0;i<total;i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
int type = OrderType();
bool result = false;
switch(type)
{
case OP_BUY : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Pink);
break;
case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Pink);
break;
case OP_BUYLIMIT : result = OrderDelete(OrderTicket());
break;
case OP_SELLLIMIT : result = OrderDelete(OrderTicket());
break;
case OP_BUYSTOP : result = OrderDelete(OrderTicket());
break;
case OP_SELLSTOP : result = OrderDelete(OrderTicket());
break;
}
}
}
-
ขอบ คุณมากครับ จะทดสอบดูครับ
-
ค่า จาก ima ที่รับมา มันไม่ตรงกับเส้นที่ปรากฏในจอ เลย ครับ ใช้คำสั่งยังไงมันจึงจะดึงค่าออกมาตรงกับที่ ปรากฏในจอได้ครับ
-
ค่า จาก ima ที่รับมา มันไม่ตรงกับเส้นที่ปรากฏในจอ เลย ครับ ใช้คำสั่งยังไงมันจึงจะดึงค่าออกมาตรงกับที่ ปรากฏในจอได้ครับ
อันนี้คำถามคลาสสิกครับ ค่าพารามิเตอร์ของคุณคือ
ma3=iMA(NULL,0,3,8,MODE_SMMA,PRICE_MEDIAN,0);
ma7=iMA(NULL,0,7,8,MODE_SMMA,PRICE_MEDIAN,0);
ma14=iMA(NULL,0,14,8,MODE_SMMA,PRICE_MEDIAN,0);
ต้องไปตั้งที่ตัวอินดี้บนกราฟให้พวกค่า ต่างตรงกับ code ที่เราดึงค่ามันออกมาครับ พวกค่า shift ค่า เวลาที่ใช้คำนวณ วิธีการคำนวณครับ
-
ถึงจะเห็นค่าบนกราฟกับค่าที่ EA ดึงออกมาตรงกันครับ
-
ตอบเร็วดีจัง ครับ
ตอนนี้ผมใช้ แบบนี้ เห็นจากใน web นี้ ครับ อ่านไปเจอมาครับ ก็ไกล้เคียงมาก
ma3=iMA(NULL,0,Ema1,0,MODE_EMA,PRICE_CLOSE,0);
ขอบคุณมากครับ
-
ท่านต้องไปกด properties ของอินดี้ที่อยู่บนกราฟครับ ดูว่า paremeters มันใส่ค่าอะไรบ้าง แล้วเอามาใส่ในโค้ดให้ตรงกัน