Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: รบกวน แอดมิน หรือ ผู้รู้ช่วย Create โค๊ดให้หน่อยตาม Logic ที่ให้มา  (Read 17305 times)

bignose

  • Newbie
  • *
  • Posts: 10
extern double lot =0.1;
extern double sl =30;
extern double tp =15;
extern double boosters =10;  จำนวนจุดที่ต้องการให้เบิ้ล
extern double trailing =20;
extern int MaxOrder =1;  
int start() {
    if(OrdersTotal()<MaxOrder) {
 double stochastic =  iStochastic(NULL,0,5,3,3,0,0,1,0);
 double rsi = iRSI(NULL,0,14,0,0);
 double histochastic = 80.5;
  double lowstochastic = 19.5;
      double hirsi = 72.2;
      double lowrsi = 18.8;


     if(( stochastic > histochastic) && ( rsi > hirsi))  ถ้า stochastic มากกว่า hirsi  และ rsi มากกว่า hirsi  
      {
        if  ตรวจสอบเงื่อนไขว่ามีออร์เดอร์คู่เงินนั้นๆ เปิดอยู่หรือไม่  ถ้าใช่
   {
       if  ตรวจสอบเงื่อนไขว่ามีออร์เดอร์ล่าสุดของคู่เงินนั้นๆ ว่ามีจุดติดลบอยู่ต่ำกว่า ตัวแปร (boosters)   หรือไม่  ถ้าใช่  หรือต่ำกว่า
         {
            1  ให้เปิดออร์เดอร์ใหม่เพิ่มขึ้นอีก 1 ออร์เดอร์ โดยกำหนดให้ lotsize คูณ สองเท่ากับล๊อตออร์เดอร์เดิมที่มีอยู่ ล่าสุด
               
            2 ให้ปรับค่า tp ออร์เดอร์ก่อนหน้านั้นทั้งหมด ให้มี tp เท่ากันกับ ออร์เดอร์ที่เปิดล่าสุดในข้อ 1
         }      
      
   }
       else  
   {
      เปิดออร์เดอร์  SEll 1 ออร์เดอร์
   }

      }
     if(( stochastic < lowstochastic) && ( rsi < lowrsi))  ถ้า stochastic ต่ำกว่า hirsi  และ rsi ต่ำกว่า hirsi
      {
         if  ตรวจสอบเงื่อนไขว่ามีออร์เดอร์คู่เงินนั้นๆ เปิดอยู่หรือไม่  ถ้าใช่
   {
       if  ตรวจสอบเงื่อนไขว่ามีออร์เดอร์ล่าสุดของคู่เงินนั้นๆ ว่ามีจุดติดลบอยู่ต่ำกว่า ตัวแปร (boosters)   หรือไม่  ถ้าใช่  หรือต่ำกว่า
         {
            1 ให้เปิดออร์เดอร์ใหม่เพิ่มขึ้นอีก 1 ออร์เดอร์ โดยกำหนดให้ lotsize คูณ สองเท่ากับล๊อตออร์เดอร์เดิมที่มีอยู่ ล่าสุด
               
            2 ให้ปรับค่า tp ออร์เดอร์ก่อนหน้านั้นทั้งหมด ให้มี tp เท่ากันกับ ออร์เดอร์ที่เปิดล่าสุดในข้อ 1
         }
      
      
   }
       else  
   {
      เปิดออร์เดอร์  Buy 1 ออร์เดอร์
   }

      }
 
 
 }
return(0) ;
 }
« Last Edit: กุมภาพันธ์ 23, 2011, 05:43:52 pm by bignose »
1. รับโบนัสแรกเข้าทันที 5$ โดยไม่ต้องผ่านการ Verify
2.  รับโบนัส 25% ของเงินฝากทุกครั้งที่ฝาก ไม่จำกัดจำนวนครั้ง
3. เริ่มต้นฝากขั้นต่ำ 10$
4. Spread เริ่มต้นที่  0.3
คลิ๊กสมัครเลยที่นี่ >>>   http://www.roboforex.com/?a=kju

bignose

  • Newbie
  • *
  • Posts: 10
รบกวนทีนะครับ  เพราะผมรันแบบไม่เบิ้ลล๊อตแล้วผลการทดสอบโอเคเลย
1. รับโบนัสแรกเข้าทันที 5$ โดยไม่ต้องผ่านการ Verify
2.  รับโบนัส 25% ของเงินฝากทุกครั้งที่ฝาก ไม่จำกัดจำนวนครั้ง
3. เริ่มต้นฝากขั้นต่ำ 10$
4. Spread เริ่มต้นที่  0.3
คลิ๊กสมัครเลยที่นี่ >>>   http://www.roboforex.com/?a=kju

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386

bignose

  • Newbie
  • *
  • Posts: 10
 if(( stochastic > histochastic) && ( rsi > hirsi))  ถ้า stochastic มากกว่า hirsi  และ rsi มากกว่า hirsi 
      {
        if(found=>1)
   {    
       if  (total< boosters)  ถ้า total น้อยกว่า จุดเบิ้ล  10 จุด
      {     
         OrderSend(Symbol(),OP_SELL,clot*2,Bid,3,0,Ask-Point*tp,"xxx",0,0,Green);
                                for(int i=0;i<OrdersTotal();i++)
                     {
                               OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                               if(OrderTakeProfit()!=ค่าของ Tp ในข้อ 1)
                                  {
                                      OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),ค่าของ Tp ในข้อ 1,0,Blue);
                                  }
   
                                 }
      }
            
   }

จากโค๊ดข้างบนรบกวนถามเพิ่มเติมอีกนิดครับ   ตรงคำว่าว่า "ค่าของ Tp ในข้อ 1"  ผมจะได้ค่าของ Tp ในข้อ 1 มาได้ยังไงอ่ะครับ
ถ้าผมจะประกาศตัวแปรมาอีกตัว เป็น

double newtp= 0.0; เพื่อเก็บค่า tp ในข้อ 1 ได้ไหมครับ
โดยมีโค๊ดใหม่


if(( stochastic > histochastic) && ( rsi > hirsi))  ถ้า stochastic มากกว่า hirsi  และ rsi มากกว่า hirsi 
      {
double newtp= 0.0; ประกาศตัวแปร newtp เพื่อเก็บค่า tp ในออร์เดอร์ปัจจุบัน
        if(found=>1)
   {
    
       if  (total< boosters)  ถ้า total น้อยกว่า จุดเบิ้ล  10 จุด
      {     
         OrderSend(Symbol(),OP_SELL,clot*2,Bid,3,0,Ask-Point*tp,"xxx",0,0,Green);
                             newtp=Ask-Point*tp;  ตัวแปร newtp = Ask-Point*tp หรือ tp ออร์เดอร์ปัจจบันอันล่าสุดที่ผ่านมา (ออร์เดอร์บรรทัดข้างบน)
             for(int i=0;i<OrdersTotal();i++)
                     {
                               OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                               if(OrderTakeProfit()!=newtp) จุด tp ไม่เท่ากับ tp ใหม่ ให้เข้าไปปรับค่า tp ออร์เดอร์ที่ผ่านมาให้เท่ากันกับออร์เดอร์ที่เบิ้ลไว้ในปัจจุบัน
                                  {
                                      OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),ค่าของ Tp ในข้อ 1,0,Blue); โค๊ดเดิมที่ admin แนะนำไว้
                OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),newtp,0,Blue); โค๊ดใหม่ที่ผมดัดแปลง โดยเอา newtp มาเป็น tp ใหม่ ของออร์เดอร์ทั้งหมดที่เปิดอยู่
                                  }
   
                                 }
      }
   newtp=0.0;      
      
   }

ผมยังสงสัยเรื่อง Ask-Point กับ Ask+Point  และ   Bid-Point กับ Bid+Point  มีวิธีใช้และมีความแตกต่างกันอย่างไรครับ
« Last Edit: กุมภาพันธ์ 27, 2011, 03:14:14 pm by bignose »
1. รับโบนัสแรกเข้าทันที 5$ โดยไม่ต้องผ่านการ Verify
2.  รับโบนัส 25% ของเงินฝากทุกครั้งที่ฝาก ไม่จำกัดจำนวนครั้ง
3. เริ่มต้นฝากขั้นต่ำ 10$
4. Spread เริ่มต้นที่  0.3
คลิ๊กสมัครเลยที่นี่ >>>   http://www.roboforex.com/?a=kju

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ค่าของ Tp ในข้อ 1 ก็คือ Ask-Point*tp  เลยครับ ส่วน Ask-Point กับ Ask+Point  และ   Bid-Point กับ Bid+Point  มีวิธีใช้และมีความแตกต่างกันอย่างไรครับ มันก็คือการบวกลบค่า Ask กับ Bid เท่านั่นเองครับ ส่วนใหญ่จะเกี่ยวกับการตั้ง sl tp ครับ ส่วน ask กับ bid ก็ต่างกันแค่เราต้องเลือกใช้ให้ตรงกับชนืด order ที่เราเปิดไงครับเช่น ask ก็ใช่กับ sell ส่วน bid ก็ใช้กับ order buy

bignose

  • Newbie
  • *
  • Posts: 10
ค่าของ Tp ในข้อ 1 ก็คือ Ask-Point*tp  เลยครับ ส่วน Ask-Point กับ Ask+Point  และ   Bid-Point กับ Bid+Point  มีวิธีใช้และมีความแตกต่างกันอย่างไรครับ มันก็คือการบวกลบค่า Ask กับ Bid เท่านั่นเองครับ ส่วนใหญ่จะเกี่ยวกับการตั้ง sl tp ครับ ส่วน ask กับ bid ก็ต่างกันแค่เราต้องเลือกใช้ให้ตรงกับชนืด order ที่เราเปิดไงครับเช่น ask ก็ใช่กับ sell ส่วน bid ก็ใช้กับ order buy

ขอบคุณ Admin มากครับ สุดท้ายผมจะทดสอบโค๊ดได้ที่ไหนครับหรือต้องรอให้ตลาดเปิดพร่งนี้ก่อนถึงจะทดสอบได้   ;D
1. รับโบนัสแรกเข้าทันที 5$ โดยไม่ต้องผ่านการ Verify
2.  รับโบนัส 25% ของเงินฝากทุกครั้งที่ฝาก ไม่จำกัดจำนวนครั้ง
3. เริ่มต้นฝากขั้นต่ำ 10$
4. Spread เริ่มต้นที่  0.3
คลิ๊กสมัครเลยที่นี่ >>>   http://www.roboforex.com/?a=kju

bignose

  • Newbie
  • *
  • Posts: 10
ผมแนบโค๊ดล่าสุดที่ลองปรับแก้ไขดู โดยสมมติเหตุการณ์ดังนี้ นะครับ
ไม้ที่ 
ไม้ที่  1      EU   Buy   lot  0.1        comment  xxx
ไม้ที่  2    EU   Buy   lot  0.2        comment  xxxx
ไม้ที่  3       EU   Buy   lot ...       comment  xxxx

แล้วออร์เดอร์ที่ 3 จะเปิด ที่ lot 0.4 หรือเปล่าครับ  ผมสงสัยว่าโค๊ดตัวไหนที่จะบอกได้ว่าตอนนี้เปิดออร์เดอร์มา 2 ออร์เดอร์แล้ว และถ้าจะเปิดออร์เดอร์ต่อไปให้เปิด lot คูณ 2ของออร์เดอร์ล่าสุด มีการตรวจเชคค่ายังไงเหรอครับ

รบกวนอีกครั้งครับ  เพื่อเป็นวิทยาทานแก่เดกตาดำๆ คนหนึ่ง
1. รับโบนัสแรกเข้าทันที 5$ โดยไม่ต้องผ่านการ Verify
2.  รับโบนัส 25% ของเงินฝากทุกครั้งที่ฝาก ไม่จำกัดจำนวนครั้ง
3. เริ่มต้นฝากขั้นต่ำ 10$
4. Spread เริ่มต้นที่  0.3
คลิ๊กสมัครเลยที่นี่ >>>   http://www.roboforex.com/?a=kju

bignose

  • Newbie
  • *
  • Posts: 10
Admin ครับ ผม compile แล้ว Errorตรงนี้ครับ

   clot=OrdersLots();
"function is not define"

1. รับโบนัสแรกเข้าทันที 5$ โดยไม่ต้องผ่านการ Verify
2.  รับโบนัส 25% ของเงินฝากทุกครั้งที่ฝาก ไม่จำกัดจำนวนครั้ง
3. เริ่มต้นฝากขั้นต่ำ 10$
4. Spread เริ่มต้นที่  0.3
คลิ๊กสมัครเลยที่นี่ >>>   http://www.roboforex.com/?a=kju

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
เปลี่ยนเป็น OrderLots( )