ก็สร้างฟังก์ชั่นนี้ขึ้นมาก่อน
int fib(int n)
{
if (n < 2)
return n;
else
return fib(n-1) + fib(n-2);
}
แล้วเอาไปใส่บนโค้ดเดิมตอนหาค่าลอตที่จะเปิดออเดอร์ใหม่ ให้เรียกใช้ฟังก์ชั่นนี้คำนวนก่อนว่าอยู่ที่สเตปไหนแล้ว แล้วก็เอาไปคูณกับลอตเริ่มต้น ก็จะได้ลอตใหม่ออกมา ตามข้างบนครับ
รบกวนช่วยวางให้หน่อยครับ นี่โคดเก่าครับxtern double lot =0.1;
extern double sl =45;
extern double tp =45;
extern int MaxOrder =1;
int start() {
if(OrdersTotal()<MaxOrder)
{
double var1 = 0.00025;
double var2 = -0.00025;
double ma1 =iMA(NULL,0,10,0,MODE_SMMA,PRICE_MEDIAN,0);
double ma2 =iMA(NULL,0,20,0,MODE_SMMA,PRICE_MEDIAN,0);
double min = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
double sig = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
{
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
double lastlot=OrderLots();
double lastprofit=OrderProfit();
double lastlot2=lastlot*2;
{
if( OrderClosePrice() != OrderTakeProfit() )
{
if ((min<=0))
{
if ((sig <=0)&&(ma2>ma1))
{
if ((sig-var1)>=min)
{OrderSend(Symbol(),OP_SELL,lastlot2,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red); }
}
}
if ((min>=-0))
{
if ((sig>=-0)&&(ma2<ma1))
{
if ((sig+var1)<=min)
{OrderSend(Symbol(),OP_BUY,lastlot2,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green); }
}
}
}
else
{
if ((min<=0))
{
if ((sig <=0)&&(ma2>ma1))
{
if ((sig-var1)>=min)
{OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red); }
}
}
if ((min>=-0))
{
if ((sig>=-0)&&(ma2<ma1))
{
if ((sig+var1)<=min)
{OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green);}
}
}
}
}}}
return(0) ;
}
++++++++++++++++