EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: nugtiaw on กรกฎาคม 27, 2010, 11:32:33 pm
-
ถ้าจะส่งคำสั่งเทรดหลายคู่เงินเขียนยังไงครับ
แล้วสามารถแบ๊คเทสได้ไหม
ขอบคุณครับ...
-
ขอถามด้วยครับ
สมมติว่าเปิด order แล้ว ต้องการให้ระบบสามารถจำได้ว่าเปิดด้วยวิธีไหน (ในกรณีที่มีหลายเงื่อนไข)
ตอนนี้ผมลองเขียนโค๊ดเพื่อให้ทำงานเป็น chain A > B > c โดยมีเงื่อนไขในการตรวจสอบ เช่น C + new high ให้ไปนับ A ใหม่เป็น loop ตามนี้ แต่ยังไม่ทำงาน ไม่แน่ใจว่าทำไม
-
double lasthigh;
double lastlow;
double high;
double low;
int trend;
double EMA40 = ......... (ยังไม่แน่ว่าใช้อันนี้)
double EMA80 = ......... (ยังไม่แน่ว่าใช้อันนี้)
lasthigh = High[iHighest(NULL,0,2,400,101)];
lastlow = Low[iLowest(NULL,0,2,400,101)];
double high = High[iHighest(NULL,0,3,100,1)];
double low = Low[iLowest(NULL,0,3,100,1)];
int start()
{
if((total<1) && ((high>lasthigh) || (low<lastlow)))
{
if((EMA40 > EMA80) && (high>lasthigh))
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,0,0,"Long",0,0,Green);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("buy");
}
if((EMA40 < EMA80) && (low<lastlow))
{
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0,"Short",0,0,Red);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("sale");
}
trend = 1;
return(0);
}
if(total>0)
{
if(((trend>1)&&(trend<5)&&(OrderType() == OP_BUY)&&(((EMA40 >((EMA80)) || ((trend>1)&&(trend<5)&&(OrderType() == OP_SELL)&&(low<lastlow)))
{
trend = 1;
return(0);
}
///trend = 1 ///
if ((trend>0)&&(trend<2))
{
if((((EMA40 >EMA80)&&(OrderType() == OP_BUY))
{
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
Print("sale");
return(0);
}
{
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0,"Short",0,0,Red);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("sale");
}
}
if((((EMA40 <EMA80)&&(OrderType() == OP_SELL))
{
{
OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
Print("buy");
return(0);
}
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,0,0,"Long",0,0,Green);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("buy");
}
}
trend = 2;
return(0);
}
///trend = 2 ///
if ((trend>1)&&(trend<3))
{
if((((EMA40 >EMA80)&&(OrderType() == OP_BUY))
{
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
Print("sale");
return(0);
}
{
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0,"Short",0,0,Red);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("sale");
}
}
if((((EMA40 <EMA80)&&(OrderType() == OP_SELL))
{
{
OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
Print("buy");
return(0);
}
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,0,0,"Long",0,0,Green);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("buy");
}
}
trend = 3;
return(0);
}
/// trend = 3 ///
if ((trend>2)&&(trend<4))
{
if((((EMA40 >EMA80)&&(OrderType() == OP_BUY))
{
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
Print("sale");
return(0);
}
{
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0,"Short",0,0,Red);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("sale");
}
}
if((((EMA40 <EMA80)&&(OrderType() == OP_SELL))
{
{
OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
Print("buy");
return(0);
}
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,0,0,"Long",0,0,Green);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("buy");
}
}
trend = 4;
return(0);
}
/// trend = 4 ///
if ((trend>3)&&(trend<5))
{
if((((EMA40 >EMA80)&&(OrderType() == OP_BUY))
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
Print("sale");
return(0);
}
if((((EMA40 <EMA80)&&(OrderType() == OP_SELL))
{
OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
Print("buy");
return(0);
}
return(0);
}
}
return(0);
}
มันไม่เวิกไม่แน่ใจว่าผิดไงน่ะ