Open Forex4you Account

Server รัน EA 1000 / ปี

สั่งชื้อคู่มือการโปรแรกม MQL4

Author Topic: รบกวนให้ช่วยดู code และแก้จุดผิดครับ  (Read 17682 times)

BenooB

  • Newbie
  • *
  • Posts: 26
เนื่องจากดูตัว lastXbars แล้วพยายามแกะ function เฉพาะจุดเปิด order
ลองแก้แล้วได้แบบนี้ (ที่ compile ได้) ไม่สามารถซื้อขายใน back test ได้จะรบกวนช่วยดูและแก้ครับ

/// code


int start()
  {
//----
int lastxbars=32;
int bartf=0;
int ybarsago=21;
int adxtf=6;
int adxperiod=8;
int adxlevel=19;
int exitlastxbars=31;
int exitybarsago=21;
double lots = 0.1;
double takeprofit = 20;
double stoploss = 200;


int signal;
int mode,pos;
   {
   double high=iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,lastxbars,pos+1));
   double low=iLow(NULL,0,iLowest(NULL,0,MODE_LOW,lastxbars,pos+1));

   if(Close[pos]<low && iHighest(NULL,0,MODE_HIGH,lastxbars,pos+1)>=ybarsago && (iADX(NULL,PERIOD_H4,adxperiod,PRICE_CLOSE,MODE_PLUSDI,pos)>adxlevel))
   if(mode==0)
            {
            signal = 1;
            }   
   if(Close[pos]>high && iLowest(NULL,0,MODE_LOW,lastxbars,pos+1)>=ybarsago && iADX(NULL,PERIOD_H4,adxperiod,PRICE_CLOSE,MODE_PLUSDI,pos)>adxlevel)
   if(mode==1)           
            {
            signal = 2;
            }
   return(0);
   }
//// close sig

int exitsignal;
int mode2,pos2;
{
   if(Close[pos2]>high && iLowest(NULL,0,MODE_LOW,exitlastxbars,pos+1)>=exitybarsago)
   if(mode2==0)
            {
            exitsignal = 1;
            }
     
   if(Close[pos2]<low && iHighest(NULL,0,MODE_HIGH,exitlastxbars,pos+1)>=exitybarsago)
   if(mode2==1)
            {
            exitsignal = 2;
            }
   return(0);
//// Openbuy
if ((signal == 1) && (exitsignal == 1))
   {
   OrderSend(Symbol(),OP_BUY,lots,Ask,3,Ask - (takeprofit * Point),Ask + (stoploss * Point),"buy",0,0,Green);
   signal = 0;
   exitsignal = 0;
   Sleep(600000);
   }
//// Opensell
if ((signal ==2) && (exitsignal == 2))
   {
   OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid + (takeprofit * Point),Bid - (stoploss * Point),"sell",0,0,Red);
   signal = 0;
   exitsignal = 0;
   Sleep(600000);
   }


}

//----
   return(0);
  }
//+------------------------------------------------------------------+

BenooB

  • Newbie
  • *
  • Posts: 26
ลืม EA คับ
นี่ตัวต้นแบบครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ลองปรับตามนี้ดูก่อนครับ ในเงื่อนไข if เอาแค่ ตัวแปรที่เก็บค่าแล้วมาเปรียบเทียบกันครับ เพระาเท่าที่ผมเห็น มีการเรียกใช้ฟังก์ชั่นค่าหาอินดิในเงื่อนไข ด้วยครับ

BenooB

  • Newbie
  • *
  • Posts: 26
ขอโทษนะครับ ตัวแปรไหนครับ pos  ??

คือที่สงสัยมากๆคือตรง pos+1 ?? มีวิธีเขียนเป็นแบบอท่นมั้ยครับรูปแบบนี้ งงที่ pos นี่แหละ


ถ้าว่างรบกวนบอกวิธีแกะนะครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ขอโทษนะครับ ตัวแปรไหนครับ pos  ??

คือที่สงสัยมากๆคือตรง pos+1 ?? มีวิธีเขียนเป็นแบบอท่นมั้ยครับรูปแบบนี้ งงที่ pos นี่แหละ


ถ้าว่างรบกวนบอกวิธีแกะนะครับ

จาก code คุณด้านบน ตัวแปร pos ไม่มีการประกาศค่าเริ่มต้นให้ จึงมีค่าเท่ากับ 0 ดังนั่น pos+1 ใส่เลข 1 ลงไปก็มีค่าเท่ากันครับ

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
1. return(0);   คำสั่งนี้ทำให้อีเอจบการทำงานในฟังก์ชั่นนั้นๆไปเลย  
มันจึงไม่ทำงาน

2. อีเอจะเทรด  เมื่อมี signal และ exit signal เกิดขึ้นพร้อมกัน
เงื่อนไขนี้ไม่มีทางเป็นจริง  ไม่งั้นอีเอจะ buy แล้ว close ทันที  เสียเงินฟรีครับ

3. sl กับ tp ตอนเปิดออเดอร์มันสลับที่กันอยู่
อันนี้ไม่เกี่ยวกับเทรดได้หรือไม่ได้   แต่มันเพี้ยน

แก้เอาเองนะครับ บอกจุดผิดให้แล้ว
« Last Edit: เมษายน 04, 2012, 10:27:00 am by D_Diamond »

BenooB

  • Newbie
  • *
  • Posts: 26
ขอบคุณครับ
1. return(0);   คำสั่งนี้ทำให้อีเอจบการทำงานในฟังก์ชั่นนั้นๆไปเลย   
มันจึงไม่ทำงาน

2. อีเอจะเทรด  เมื่อมี signal และ exit signal เกิดขึ้นพร้อมกัน
เงื่อนไขนี้ไม่มีทางเป็นจริง  ไม่งั้นอีเอจะ buy แล้ว close ทันที  เสียเงินฟรีครับ

3. sl กับ tp ตอนเปิดออเดอร์มันสลับที่กันอยู่
อันนี้ไม่เกี่ยวกับเทรดได้หรือไม่ได้   แต่มันเพี้ยน

แก้เอาเองนะครับ บอกจุดผิดให้แล้ว

แก้แล้วครับ ทีนี้พอลบ exit signal ออกกลายเป็น เปิด order ท่วมแทน(แทบตลอดเวลา)
ไม่ทราบว่าพอจะช่วยดูได้ไหมครับว่าตกเงื่อนไขไหนไป
« Last Edit: เมษายน 04, 2012, 12:19:50 pm by BenooB »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ขอหลักการ EA ของคุณหน่อยครับ ว่าทั้งหมดจะให้มันทำงานยังไงครับ

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
เปิดออเดอร์ท่วม  เพราะไม่ได้กำหนดว่าจะให้มันเปิดกี่ออเดอร์ครับ  เมื่อยังมีสัญญาณอยู่มันก็จะเทรดตลอดแบบนี้ทุกอีเอ
วิธีกำหนดให้เทรดแค่1ออเดอร์ ลองอ่านกระทู้อื่นดูครับ พึ่งเจอไม่กี่วัน

BenooB

  • Newbie
  • *
  • Posts: 26
ตอบ admin
     ยังไม่เป็น EA ครับผมแค่ต้องการแกะเงื่อนไขซื้อขายของ last x bars (ตัวนี่แนบมาข้างบน) ให้มันเทรดเหมือนกันก่อนครับ

ตอบคุณ d-daimond
     คิดว่าน่าจะมีเงื่อนไขอื่นอีกมากกว่าครับ เดี๋ยวผมลองอ่าน code EA เขาดูอีกที (ยังหาไม่เจอ) เพราะดูของเขาเปิดหาย order แต่ไม่รู้มีเงื่อนไขอะไรอีก

9/4

ผมยังหาจุดผิดของที่เขียน เทียบกับ EA ต้นแบบบไม่เจอเลย ถ้า admin ว่างรบกวนช่วยแกะทีครับ
« Last Edit: เมษายน 09, 2012, 12:55:40 pm by BenooB »