Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: รบกวนด้วยครับ  (Read 48284 times)

gagoi

  • Jr. Member
  • **
  • Posts: 62
รบกวนด้วยครับ
« on: ธันวาคม 01, 2010, 06:55:04 pm »
ว่าจะรอเขียนเอง แต่ท่าจะอีกนาน ;D

ขอรบกวนแอดมิน หรือพี่ น้องท่านใดจะกรุณาครับ

อยากได้ EA ตามเงื่อนไขนี้ครับ

ระบบเทรด จากแนวความคิดที่ว่า เมื่อเทรนด์ขึ้น สัณญานขึ้นน่าเชื่อถือกว่าสัณญานลง

เมื่อเทรนด์ลง สัณญานลงน่าเชื่อถือกว่าสัณญานขึ้น

ด้งนั้น

1 ต้องการ ma 2 เส้น(ตั้งค่ายาวหน่อย) เพื่อยืนยันเทรนด์ ว่าอยู่ ซื้อ หรือขาย

2 ต้องการ ma 2 เส้น (ตั้งค่าสั้นลงมา) เพื่อใช้เป็นตัวส่งสัณญาน ซื้อ หรือขายตามเทรนด์ (จะไม่ส่งคำสั้งสวนเทรนด์)

3 เมื่อซื้อแล้ว จะใช้ t/s เพื่อ ตั้ง s/l ทันที และตั้งค่า t/s เพื่อปกป้องกำไร และปัองกันแรงตกสวนทางเทรนด์

(ดังนั้นจึงไม่ใช้ค่า ma )

ซึ่งค่าของ ma ทั้ง 4 เส้น และ t/s s/l จะต้องปรับแต่งได้ครับ เพื่อปรับใช้กับคุ่เงิน และช่วงเวลาที่เหมาะสมได้

ขอบคุณล่วงหน้าครับผม

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนด้วยครับ
« Reply #1 on: ธันวาคม 02, 2010, 01:11:21 pm »
ครับเดียวอีก 2วันผมว่างจะทำให้พร้อมกับอืกท่านที่ฝากผมเขียนครับ

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #2 on: ธันวาคม 02, 2010, 11:52:50 pm »
ขอบคุณมาก ๆ ครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนด้วยครับ
« Reply #3 on: ธันวาคม 04, 2010, 01:45:15 pm »
extern double lot=0.1;
extern double long1=50;
extern double long2=100;
extern double short1=5;
extern double short2=10;
extern double TP=0.1;
extern double SL=0.1;

int start()
{   double ma1 =iMA(NULL,0,long1,8,MODE_SMMA,PRICE_MEDIAN,0);
    double ma2 =iMA(NULL,0,long2,8,MODE_SMMA,PRICE_MEDIAN,0);
    double ma3 =iMA(NULL,0,short1,8,MODE_SMMA,PRICE_MEDIAN,0);
    double ma4 =iMA(NULL,0,short2,8,MODE_SMMA,PRICE_MEDIAN,0);

  จากนั่นก็นำค่า ma1 ma2 ที่เป็นเส้น MA ยาว กับ ma3 ma4 ซึ้งเป็นเส้นสั้นไปตรวจสอบเงื่อนไขการเปิดครับ เขียนได้เท่านี้จากที่คุณอธิบายมาอ่ะครับ



return (0);
}

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #4 on: ธันวาคม 04, 2010, 11:57:39 pm »
ขอบคุณมากครับ

อันนี้จะไม่เปิดออเดอร์สวนเทรนด์(จากเส้น ma long 1,2 )แล้วใช่ไหมครับ

แล้วคำสั่งชุดนี้ให้ก๊อปใส่ใน ea เลยใช่ไหมครับ(ขออภัยที่ถามครับ พอดีที่ว่าจะหัดยังอ่านไปได้แค่บทที่สาม ที่สี่อยู่เลยครับ)

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนด้วยครับ
« Reply #5 on: ธันวาคม 05, 2010, 12:34:08 pm »
ขอบคุณมากครับ

อันนี้จะไม่เปิดออเดอร์สวนเทรนด์(จากเส้น ma long 1,2 )แล้วใช่ไหมครับ

แล้วคำสั่งชุดนี้ให้ก๊อปใส่ใน ea เลยใช่ไหมครับ(ขออภัยที่ถามครับ พอดีที่ว่าจะหัดยังอ่านไปได้แค่บทที่สาม ที่สี่อยู่เลยครับ)
ตัวนี้เป็นแค่ชุดคำสั่งในการเตรียค่า ma สั้นยาวเท่านั่นเองครับจากนั่นตุณก็แค่เอาตัวแปร ma1 ma2 ma3 ma4 ไปใช้เงื่อนไขตรวจสอบถ้าตรงตามแนวคิดคุณก็เขียนตำสั่งเปิดครับ มีตรงไหนไม่เข้าใจก็ถามต่อได้ครับ

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #6 on: ธันวาคม 06, 2010, 12:40:47 am »
ขอบคุณครับผม

เท่าที่นำไปลอง (ทดลองแต่ว่าเปิด ปิดออเดอร์หรือไม่) ก็ไม่มีปัญหาครับ

ตอนนี้ขาด trailing stop ที่จะใช้เพื่อรักษาผลกำไร และป้องกันโดนสวนเทรนด์ เท่านั้น ครับ


admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนด้วยครับ
« Reply #7 on: ธันวาคม 06, 2010, 01:48:42 pm »
ขอบคุณครับผม

เท่าที่นำไปลอง (ทดลองแต่ว่าเปิด ปิดออเดอร์หรือไม่) ก็ไม่มีปัญหาครับ

ตอนนี้ขาด trailing stop ที่จะใช้เพื่อรักษาผลกำไร และป้องกันโดนสวนเทรนด์ เท่านั้น ครับ


trailing stop ถ้าไม่เข้าใจก็ถามได้ครับ

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #8 on: ธันวาคม 06, 2010, 09:59:16 pm »
//+------------------------------------------------------------------+
//|                                                      firstea.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
     double ma10 , ma15 ,ma20 ,ma50 ;
     int total;
     int ticket;
     ma10=iMA(NULL,0,10,0,MODE_SMMA,PRICE_MEDIAN,0);
     ma15=iMA(NULL,0,15,0,MODE_SMMA,PRICE_MEDIAN,0);
     ma20=iMA(NULL,0,20,0,MODE_SMMA,PRICE_MEDIAN,0);
     ma50=iMA(NULL,0,50,0,MODE_SMMA,PRICE_MEDIAN,0);
     
     total=OrdersTotal();
     
     if(total<1)
     {
     
            if((ma20>ma50)==(Ask>=ma10>ma15))
                {   
               
                   if(ma10>ma15)
                     {     
                 
                        ticket=OrderSend(Symbol(),OP_BUY,0.5,Ask,3,Bid-Point*50,Ask+Point*50,"firstea",0,0,Green);
                        OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                      }
                     
                      return (0);
                 }
     
          if((ma50>ma20)==(ma15>ma10>=Bid))
                 {
     
                    ticket=OrderSend(Symbol(),OP_SELL,0.5,Bid,3,Ask+Point*50,Bid-Point*50,"firstea",0,0,Red);
                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                 
                 }
   }








   return(0);
  }
 
 
//+------------------------------------------------------------------+
« Last Edit: ธันวาคม 06, 2010, 10:01:54 pm by gagoi »

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #9 on: ธันวาคม 06, 2010, 10:10:20 pm »
ตอนนี้ดัดแปลงจากโค๊ดที่ admin ทำให้เป็นตัวอย่างครับ

ทดลองว่าสั่งซื้อผิดเทรนด์หรือเปล่าเท่านั้น ได้ผลเป็นที่น่าพอใจ (คือไม่ออเดอร์ผิดเทรนด์)

แต่ยังมีปัญหาตรงที่ เวลาเทรนด์ติดไซด์เวย์ จะขาดทุนจาการปิด เปิดออเดอร์เร็วตามราคาที่แกว่งตัวตามไซด์เวย์

จึงคิดจะกรองสัญณานด้วยการเพิ่ม trailling stop โดยเพิ่มขอรบกวน admin เพิ่มโค๊ดเข้าไป

ให้ทำการขายจาก trailling stop เท่านั้น (คือขายเมื่อราคาติด stoploss ที่ตั้งไว้ด้วย trailling stop )

ถ้ายังกรองได้ไม่ดีพอ อาจจะเพิ่ม parabolic sar อีกสักตัวเพื่อกรองสัญณานให้นิ่งขึ้น ไม่ให้ปิดออเดอร์ผิดอีก

ถ้ายังไง ขอคำแนะนำ และขอรบกวน ด้วยนะครับ

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #10 on: ธันวาคม 07, 2010, 10:28:43 am »
 ;D ลองก๊อป โค๊ตตัวนี้ใส่ลงไป ไม่ได้ผลครับ

ยังไม่มี trailling stop เกิดขึ้น  ;D

extern int MagicNumber = 0;
extern bool SignalMail = true;
extern bool EachTickMode = True;
extern double Lots = 0.50;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 20;
extern bool UseTakeProfit = false;
extern int TakeProfit = 500;
extern bool UseTrailingStop = True;
extern int TrailingStop = 20;

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนด้วยครับ
« Reply #11 on: ธันวาคม 07, 2010, 12:23:45 pm »
ลองเอาไปดูครับครับผมยังไม่ได้ทดลองนะครับ


extern int trailingStop = 20;
int start()
  {
     double ma10 , ma15 ,ma20 ,ma50 ;
     int total;
     int ticket;
     ma10=iMA(NULL,0,10,0,MODE_SMMA,PRICE_MEDIAN,0);
     ma15=iMA(NULL,0,15,0,MODE_SMMA,PRICE_MEDIAN,0);
     ma20=iMA(NULL,0,20,0,MODE_SMMA,PRICE_MEDIAN,0);
     ma50=iMA(NULL,0,50,0,MODE_SMMA,PRICE_MEDIAN,0);
     
     total=OrdersTotal();
     
     if(total<1)
     {
     
            if((ma20>ma50)==(Ask>=ma10>ma15))
                {   
               
                   if(ma10>ma15)
                     {     
                 
                        ticket=OrderSend(Symbol(),OP_BUY,0.5,Ask,3,Bid-Point*50,Ask+Point*50,"firstea",0,0,Green);
                        OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                      }
                     
                      return (0);
                 }
     
          if((ma50>ma20)==(ma15>ma10>=Bid))
                 {
     
                    ticket=OrderSend(Symbol(),OP_SELL,0.5,Bid,3,Ask+Point*50,Bid-Point*50,"firstea",0,0,Red);
                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                 
                 }
   }
   
   
       if(total==1)
       {
       
     if(OrderType() == OP_BUY)
             {
               if(trailingStop > 0)
                 {
                   if(Bid - OrderOpenPrice() > trailingStop*Point)
                     {
                       if(OrderStopLoss()==0 || (Bid - OrderStopLoss()> trailingStop*Point))
                           OrderModify(OrderTicket(), OrderOpenPrice(),
                                       Bid - trailingStop*Point, OrderTakeProfit(), 0, Blue);
                     }
                 }
             }
           else
             {
               if(trailingStop > 0)
                 {
                   if(OrderOpenPrice() - Ask > trailingStop*Point)
                     {
                       if(OrderStopLoss() == 0 || OrderStopLoss()-Ask >  trailingStop*Point)
                           OrderModify(OrderTicket(), OrderOpenPrice(),
                                       Ask + trailingStop*Point, OrderTakeProfit(), 0, Red);
                     }           
                 }
             }
       
       }


   return(0);
  }

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #12 on: ธันวาคม 07, 2010, 06:41:59 pm »
เพิ่งทดสอบครับ

ไม่ทราบเป็นอะไร มันไม่ส่งออเดอร์เลยครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนด้วยครับ
« Reply #13 on: ธันวาคม 07, 2010, 07:18:20 pm »
if((ma20>ma50)==(Ask>=ma10>ma15))
if((ma50>ma20)==(ma15>ma10>=Bid))


เงื่อนไขเขียนแบบนี้ผิดครับคูณต้องการเงื่อนไขยังไงครับลอง พิมเป็นคำพูดออกมาให้ผมอ่านหน่อยครับ

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #14 on: ธันวาคม 07, 2010, 10:54:39 pm »
อ้าว เหรอครับ

แต่ผมทำ back test แล้วมันส่งออเดอร์นะครับ

เงื่อนไขก็เหมือนเดิมครับ เพียงแต่อันนี้ผมดัดแปลงเอาจากที่ท่าน admin ทำไว้เป็นตัวอย่าง ยังไม่ได้เอาที่เขียนใหม่ไปลง

พอดีเห็นทำ back test แล้วมันได้ ;D

เงื่อนไขเดิม คือ

1. ถ้าเส้น 20 ตัดเส้น 50 ขึ้น เป็นตัวกรองให้ สั่งเฉพาะคำสั่ง ซื้อ (long)

2. ถ้าเส้น 10 ตัดเส้น 15 ขึ้น ก็คือ ส่งออเดอร์ ซื้อ (long)(ซึ่งตอนข้อ 1. จะยังไม่ส่งออเดอร์ แค่กรองว่า เทรนด์ไหนแน่)

3.ปิดด้วย trailling stop เท่านั้น (ไม่สนใจเส้น ma)

เวลาส่งออเดอร์ขายก็เช่นกันครับ

1. ถ้าเส้น 20 ตัดเส้น 50 ลง เป็นตัวกรองให้ สั่งเฉพาะคำสั่ง ขาย(shot)

2. ถ้าเส้น 10 ตัดเส้น 15 ลง ก็คือ ส่งออเดอร์ ขาย (shot)(ซึ่งตอนข้อ 1. จะยังไม่ส่งออเดอร์ แค่กรองว่า เทรนด์ไหนแน่)

3.ปิดด้วย trailling stop เท่านั้น (ไม่สนใจเส้น ma)

ขอบคุณครับ