Open Forex4you Account

Server รัน EA 1000 / ปี

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

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

admin

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

if((ma50>ma20) ==  ((ma15>ma10) && (ma10>=Bid) ))

ลองเปลี่ยนเงื่อนไขเป็นแบบนี้ดูครับ


gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #16 on: ธันวาคม 08, 2010, 12:20:46 am »
ขอบคุณอีกครั้งครับผม

ได้ผลยังไงจะรีบแจ้งครับ

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #17 on: ธันวาคม 08, 2010, 10:40:33 am »
แจ้งผลครับผม

ตอนนี้การส่งคำสั่ง ซื้อ ขาย ทำงานได้ปกติแล้วครับ

ทว่า trailling stop นั้น เมื่อมันอยู่เหนื่อค่าเปิดออเดอร์แล้ว มันควรจะเปลี่ยน stop loss ให้สูงขึ้นไม่ใช่หรือครับ

แต่ดูเหมือนตัวยังจะยังไม่เปลี่ยนครับผม

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #18 on: ธันวาคม 08, 2010, 11:58:45 am »
ยืนยันครับผม

ตอนนี้คำสั่งเปิดออเดอร์ ซื้อ ขายทำงานปกติ

โดยใช้คำสั่งเป็น

if((ma20>ma50)==(ma10>ma15)) กับ if((ma50>ma20)==(ma15>ma10)) เท่านั้นครับ

ส่วน trailling stop นั้นยังคงมีปัญหาตรงที่

ปกติ ถ้าตั้ง trailling stop ไว้ที่ 10 แล้วเปิดออเดอร์ ซื้อ ที่ 110

stoploss ตั้งที่ 20 แล้ว

ask = 110

stoploss=20 (คือ 90)

trailling stop =10(คือ 100)

trailling stop จะต้องตั้งค่าใหม่ให้ stoploss เป็น 100

แต่ปัญหาอยู่ที่ ตอนที่

ask =100 trailling stop จะต้องไม่ทำงาน คือ stoploss จะยังคงอยู่ที่ 100 เท่าเดิม (ซึ่งคือปิดออเดอร์)

แต่ตอนนี้มันดันปรับลงตามมาด้วย เป็น 90 และลงอีก ก็ปรับอีก :o

เลยแทนที่จะได้กำไร กลับขาดทุนแทน  ;D ;D

ควรปรับยังไงดีครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนด้วยครับ
« Reply #19 on: ธันวาคม 08, 2010, 12:35:44 pm »
ขอรายละเอียด ชนิด order ที่ tralilng ทำงานผิดพลาดแล้วขอ code ทั้งหมดที่คุณไปปรับแก้แล้วมาดูด้วยครับ

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #20 on: ธันวาคม 08, 2010, 02:31:17 pm »
นี่คือตัวที่ทำ backtest เลยครับ bass มาจาก firstea ที่ท่าน admin ทำไว้นั่นแหละครับ

เพราะยังอ่านค่าตัวอื่น ๆ ไม่ออก 555 ;D

ไม่ได้ทำอะไรนอกจากตัด ค่า ask/bid ออกจากคำสั่งส่งออเดอร์ ซื้อ/ขาย ครับ ;D


extern int trailingStop = 50;
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)==(ma10>ma15))
                {   
               
                   if(ma10>ma15)
                     {     
                 
                        ticket=OrderSend(Symbol(),OP_BUY,0.5,Ask,3,Bid-Point*150,Ask+Point*100,"firstea",0,0,Green);
                        OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                      }
                     
                      return (0);
                 }
     
          if((ma50>ma20)==(ma15>ma10))
                 {
     
                    ticket=OrderSend(Symbol(),OP_SELL,0.5,Bid,3,Ask+Point*150,Bid-Point*100,"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);
  }

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: รบกวนด้วยครับ
« Reply #21 on: ธันวาคม 08, 2010, 05:06:46 pm »
น่าจะได้แล้วนะ แนกำ เดิมมันหายไปบรรทัดหนึ่ง Trilling stop เลยทำงานมั่ว

extern int trailingStop = 50;
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)==(ma10>ma15))
                {   
               
                   if(ma10>ma15)
                     {     
                 
                        ticket=OrderSend(Symbol(),OP_BUY,0.5,Ask,3,Bid-Point*150,Ask+Point*100,"firstea",0,0,Green);
                        OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                      }
                     
                      return (0);
                 }
     
          if((ma50>ma20)==(ma15>ma10))
                 {
     
                    ticket=OrderSend(Symbol(),OP_SELL,0.5,Bid,3,Ask+Point*150,Bid-Point*100,"firstea",0,0,Red);
                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                 
                 }
   }
   
   
       if(total==1)
       {
        OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
     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);
                        }
                     }
                 }
             }
           if(OrderType() == OP_SELL)
             {
               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 #22 on: ธันวาคม 08, 2010, 05:10:10 pm »
อ้าว งั้นผมคงมั่วหายไปเองแหละครับ

ต้องขอโทษด้วยครับ

และก็ขอบคุณมาก ๆ ครับ ประสบการ์ณนี้ก็ช่วยให้ผมรู้เรื่อง ea ขึ้นมาอีกเยอะทีเดียวครับผม

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #23 on: ธันวาคม 08, 2010, 11:06:49 pm »
ยืนยันผลการทำงานปกติดีแล้วครับผม

 ;D ;D ;D ;D ;D

ทีนี้ก็จะเริ่มทำการตรวจสอบค่าที่เหมาะสม เพื่อใช้เป็นเลขาช่วยเทรดล่ะครับทีนี้

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #24 on: ธันวาคม 09, 2010, 01:21:39 am »
if((ma20>ma50)==(ma10>ma15))
                {   
               
                  if(ma10>ma15)
                     {     
                 
                        ticket=OrderSend(Symbol(),OP_BUY,0.5,Ask,3,Bid-Point*150,Ask+Point*100,"firstea",0,0,Green);
                        OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                      }
                     
                      return (0);
                 }

     
          if((ma50>ma20)==(ma15>ma10))
                 {
     
                    ticket=OrderSend(Symbol(),OP_SELL,0.5,Bid,3,Ask+Point*150,Bid-Point*100,"firstea",0,0,Red);
                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                 
                 }
   }


คืออยากถามว่า ทำไมคำสั่ง ตรงที่เป็นสีแดง เป็นคำสั่งเปิดออเดอร์ ซื้อ

แต่ว่าส่วนที่เป็นสีเขียว ที่เป็นคำสั่งเปิดออเดอร์ ขาย มันไม่ต้องมีส่วนสีแดงล่ะครับ แล้วมีผลอะไรหรือเปล่าครับผม

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #25 on: ธันวาคม 09, 2010, 01:33:02 am »
เอ่อ มันทำให้ไม่ส่งออเดอร์ ขาย หรือเปล่าครับผม

รุ้สึกว่ามันจะเป็นอีกครับ แต่ยังไม่ยืนยันนะครับ ขอตรวจสอบอีกที (หลาย ๆ ทีก่อน)ครับ

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #26 on: ธันวาคม 09, 2010, 01:44:28 am »
แกไขได้แล้วครับผม

ตอนแรกส่งแต่ออเดอร์ ซื้อ จริง ๆ ด้วย

แต่พอเปลี่ยนส่วนที่เป็น สีแดง แล้วทำไมส่งได้ก็ไม่รู้ครับ

if((ma20>ma50)==(ma10>ma15))
                {  
              
                   if(ma10>ma15)
                     {    
                
                        ticket=OrderSend(Symbol(),OP_BUY,0.5,Ask,3,Bid-Point*1000,Ask+Point*5000,"firstea",0,0,Green);
                        OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                      }
                    
                      return (0);
                 }
    
          if((ma20<ma50)==(ma10<ma15))
                 {    
                    ticket=OrderSend(Symbol(),OP_SELL,0.5,Bid,3,Ask+Point*1000,Bid-Point*5000,"firstea",0,0,Red);
                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                
                 }
   }
« Last Edit: ธันวาคม 09, 2010, 01:52:18 am by gagoi »

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #27 on: ธันวาคม 13, 2010, 01:18:39 pm »
ขอสอบถามครับ

ถ้าเราจะปรับให้มันเปิด 2 หรือมากกว่า 1 ออเดอร์ ปรับตัวไหนครับ

ขอบคุณมากครับ

Brandy

  • Newbie
  • *
  • Posts: 33
  • เทรดเดอร์อิสระ
    • digitalskycapital.com
Re: รบกวนด้วยครับ
« Reply #28 on: ธันวาคม 13, 2010, 07:33:21 pm »
ขอโทษครับ อยากได้อีเอตัวนี้ไปทดสอบน่ะครับ ทดลองเขียนเองไม่ค่อยเวิค แต่หลักการคล้ายๆกับของผม รบกวนถ้าได้ขอรายละเอียดการเปิดออเดอร์คร่าวๆหน่อยก็ดีครับ

ถ้าได้ส่งที่ yainarak@hotmail.com ชอบใช้อีเอหลักการไม่ซับซ้อนครับ แต่สามารถปรับค่าเลือกใช้ได้ (จะทดสอบเงินจริงให้เลยครับ)

gagoi

  • Jr. Member
  • **
  • Posts: 62
Re: รบกวนด้วยครับ
« Reply #29 on: ธันวาคม 13, 2010, 10:40:26 pm »
ได้ครับผม ยินดีครับ  ;D

เดี๋ยวผมทำการอัพโหลดไว้ให้ครับ แต่ว่าผมยังไม่ได้หาค่าเฉพาะเลยนะครับ

ตั้งใจว่าเมื่อทดลองได้คุณสมบัติต่าง ๆ พอใจแล้ว จะหาค่าที่เหมาะสม กับคู่เงิน ระยะเวลา

แล้วค่อยเอามาส่งคืนน่ะครับ งั้นก็รบกวนช่วยกันเลยนะครับ ขอบคุณครับ ;D