ผมก็ไม่ค่อยเป็นอะไรนะครับ แต่ก็อยากทำเองบ้าง โดยการไปเอารูปแบบ การตัดกัน moving everage
ลองเอาตัวนี้ไปดูนะครับ ไปปรับแต่งเพิ่มเติม
แล้วก็พยามศึกษาเองอยู่นานมาก ลองรันแล้วรันอีก มันก็ไม่ยอมเปิด order หรือเปิดแล้วไม่ทำอะไรต่ออีกเลย ลองเช็คดูตรงที่น่าจะมีปัญหาตรงนี้
2010.09.03 02:20:07 2009.08.20 15:33 smaaa EURUSD,H1: OrderModify error 4051
2010.09.03 02:20:07 2009.08.20 15:33 smaaa EURUSD,H1: invalid ticket for OrderModify function
แต่ผมก็แก้ไม่ได้ซักที
extern double TakeProfit = 20;
extern double Lots = 0.1;
extern int TrailingStop =10;
int start()
{
double ma =iMA(NULL,0,10,0,MODE_SMMA,PRICE_MEDIAN,0);
double ma1 =iMA(NULL,0,20,0,MODE_SMMA,PRICE_MEDIAN,0);
double ma2 =iMA(NULL,0,30,0,MODE_SMMA,PRICE_MEDIAN,0);
double ma3 =iMA(NULL,0,40,0,MODE_SMMA,PRICE_MEDIAN,0);
int kway = check(ma,ma1,ma2,ma3);
int total =OrdersTotal();
int ticket;
double Lots=0.1;
if(total==0)
{
if(kway==1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*10,0,"smaaa",0,0,Green);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
}
if(kway==2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+Point*10,0,"smaaa",555,0,Red);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
}
}
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)
{
if ( Bid - OrderOpenPrice() > TrailingStop*Point)
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop,OrderTakeProfit(), 0, Green);
}
else
{
if (OrderType() == OP_SELL)
if ( OrderOpenPrice() - Ask > TrailingStop*Point )
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, Red);
}
return(0);
}
int check (double sma10 ,double sma20,double sma30,double sma40)
{ static int lastway =0;
static int way =0;
if(sma10 > sma20> sma30> sma40)
{
way=1;
}
if(sma10 < sma20< sma30< sma40)
{
way=2;
}
if(way!= lastway)
{
lastway = way;
return (lastway);
}
return (0);
}
อยากให้มันตัดกันตามเงื่อนไข และเก็บทีละ 20 จุด และตั้ง sl ขยับได้ 10 จุด
รบกวนด้วยนะครับ