ขอแนวคิดและหลักการเขียนอีเอครับ

  • 7 replies
  • 1526 views

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

*

ออฟไลน์ gaothun

  • **
  • 113
  • 0

ขอแนวคิดและหลักการเขียนอีเอครับ

« เมื่อ: 10, พฤษภาคม 2019, 04:16:14 PM »
ผมขอแนวคิดและหลักการเขียนอีเอตัวนี้หน่อยครับ ว่าเขาต้องเช็คค่า เช็คจุดเปิดออร์เดอร์อย่างไร เพื่อไม่ให้ซ้ำกันครับ

แนวคิดก็คือ ไม่สนใจแนวโน้ม เปิด MT4 มาปุ๊บ เข้าออร์เดอร์ บายและเซลพร้อมกันเลยครับ
- หากราคาวิ่งไปทางใดทางหนึ่งทุก ๆ 100 Point จะเปิดออร์เดอร์เพิ่มเป็นคู่ทั้งออร์เดอร์บายและเซล เหมือนการมาติงเกล
- เมื่อไหร่ที่ราคาวิ่งไปจนออร์เดอร์ที่บวก บวกครบ 5 ไม้แล้ว ให้ปิดทั้ง 5 ไม้ และลบไม้ที่ติดลบมากที่สุด (ไม้ตรงข้าม) ออก  1 ไม้
- เมื่อปิดแล้ว ก็จะเหลือออร์เดอร์อยู่ฝั่งติดลบอยู่ฝั่งเดียว หากราคากลับไปที่เดิมก็จะเปิดออร์เดอร์ที่เคยปิดบวกไป เช่น เปิดออร์เดอร์ บาย 5 ไม้ เซล 5 ไม้ เมื่อราคาวิ่งขึ้นไปมันก็จะปิดออร์เดอร์บาย เหลือแต่ออร์เดอร์เซล หากราคาลงมาที่เดิมเราจะเปิดออร์เดอร์บายตรงตำแหน่งออร์เดอร์เซลเดิมได้อย่างไรครับ

ปัญหาก็คือมันจะเช็คราคาอย่างไรเพื่อที่จะเข้าออร์เดอร์ และไม่ซ้ำกับออร์เดอร์เดิมครับ ผมแนบไฟล์รูปมาให้ด้วยนะครับ

Share Topic.


*

ออนไลน์ admin

  • *
  • 72,013
  • 2638

Re: ขอแนวคิดและหลักการเขียนอีเอครับ

« ตอบกลับ #1 เมื่อ: 10, พฤษภาคม 2019, 05:02:02 PM »
เดี๋ยว มีฝ่าย โปรแกรมเมอร มาตอบนะครับ
 (TH)**
"เอาชนะใจตัวเองให้ได้ ก่อนที่จะไปเอาชนะตลาด"

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40

Re: ขอแนวคิดและหลักการเขียนอีเอครับ

« ตอบกลับ #2 เมื่อ: 10, พฤษภาคม 2019, 05:23:53 PM »
ตอน TP Buy เราก็ตั้ง Buy Limit รอไว้เลยไม่ได้เหรอครับ และพอ TP Sell เราก็ตั้ง Sell Limit ที่ราคาไม้ sell เก่า สลับกันไปแบบนี้


 (TH)**

*

ออฟไลน์ gaothun

  • **
  • 113
  • 0

Re: ขอแนวคิดและหลักการเขียนอีเอครับ

« ตอบกลับ #3 เมื่อ: 10, พฤษภาคม 2019, 07:13:02 PM »
ขอบคุณครับ  (TH)** (TH)** (TH)**

*

ออฟไลน์ gaothun

  • **
  • 113
  • 0

Re: ขอแนวคิดและหลักการเขียนอีเอครับ

« ตอบกลับ #4 เมื่อ: 10, พฤษภาคม 2019, 08:21:48 PM »
ผมสงสัยอีกนิดครับตอนนี้ผมเขียนตามหลักการที่ท่านสอนได้แล้ว โดยการเปืด Order Pending ทั้ง buystop และ buylimit SellStop SellLimit
ได้ออร์เดอร์ตามต้องการแล้วครับ แต่ว่าทำอย่างไรผมจะ close ออร์เดอร์ที่กำไรไป 5 ออร์เดอร์ และ ขาดทุนเยอะสุด 1ออร์เดอร์ได้ครับ

ผมส่งโค๊ดที่ผมเขียนมาบ้างแล้วมาด้วยครับ
ท่านช่วยชี้แนะผมด้วยนะครับ
ขอบคุณมากมากครับท่าน (TH)** (TH)** (TH)**




//+------------------------------------------------------------------+
//|                                                                                        |
//|                        Copyright  2018 MetaQuotes Software Corp. |
//|                                                                                        |
//+------------------------------------------------------------------+
#property copyright "Copyright ฉ 2017, MetaQuotes Software Corp."
#property link      ""

extern string  EA_Name        = "";
extern int     Pip_pendig     = 100;
extern double  Lots           = 0.1;
extern int     Pips           = 100;



int         slippage = 0;
int         OpenOrders=0, cnt=0;
int         mode=0, myOrderType=0;
double      sl=0, tp=0;
double      BuyPrice=0, SellPrice=0;
double      mylotsi=0;

int      OrderBuy, OrderSell;
double   Order_Profit,DD;
double   LastPriceBuy=0, LastPriceSell=0;
int      result, ticket;
bool     res, tic;

int      order_total;
int      cs = 0;
int      cbl = 0, cbs = 0;
int      csl = 0, css = 0;
double   op_sl, op_ss, op_bl, op_bs;
int      ticket_sl, ticket_ss;
int      ticket_bl, ticket_bs;
double   TicketBuy[200];
double   TicketSell[200];
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
//
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

//------------------------------------------------------------------------------------------------------------------------------
   OrderSell=0;
   OrderBuy=0;
   Order_Profit = 0;
   OpenOrders=0;
   for(cnt=0;cnt<OrdersTotal();cnt++)   
   {
     int result1 = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol()==Symbol())
     {            
          OpenOrders++;
          Order_Profit   = Order_Profit+OrderProfit();
     }
     if (OrderSymbol()==Symbol() && OrderType()==OP_SELL)
     {            
          OrderSell++;
        LastPriceSell= OrderOpenPrice();
        TicketSell[OrderSell] = OrderOpenPrice();
          //Print("Ticket Sell #"+OrderSell+" : "+TicketSell[OrderSell]);
     }
     if (OrderSymbol()==Symbol() && OrderType()==OP_BUY)
     {            
          OrderBuy++;
          LastPriceBuy=OrderOpenPrice();
          TicketBuy[OrderBuy] = OrderOpenPrice();
          //Print("Ticket Buy #"+OrderBuy+" : "+TicketBuy[OrderBuy]);
     }
   }     
//--------------------------------------------------------------------Setting SellLimit Pending-----------------------------------------------
   order_total = OrdersTotal();
   cs = false;
   csl = false;
   css = false;
   cbl = false;
   cbs = false;
   for(int i = order_total; i >= 0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS) == true && OrderSymbol() == Symbol())
      {
         if(OrderType() == OP_SELL)
         {
            cs = true;
         }
         if(OrderType() == OP_SELLLIMIT)
         {
            op_sl = NormalizeDouble(OrderOpenPrice(), Digits);
            ticket_sl = OrderTicket();
            csl = true;
         }
         if(OrderType() == OP_SELLSTOP)
         {
            op_ss = NormalizeDouble(OrderOpenPrice(), Digits);
            ticket_ss = OrderTicket();
            css = true;
         }
         if(OrderType() == OP_BUYLIMIT)
         {
            op_bl = NormalizeDouble(OrderOpenPrice(), Digits);
            ticket_bl = OrderTicket();
            cbl = true;
         }
         if(OrderType() == OP_BUYSTOP)
         {
            op_bs = NormalizeDouble(OrderOpenPrice(), Digits);
            ticket_bs = OrderTicket();
            cbs = true;
         }
      }
   }
     
//-------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------- 
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

//----
   Open_order();
   return(0);
  }
 
void Open_order()
{
   if(cs==false)
   {
      ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,0,"",0,0,clrRed);
      ticket = OrderSend(Symbol(),OP_BUY,Lots,Bid,2,0,0,"",0,0,clrBlue);
   }
   if(csl==false)
   {
      ticket = OrderSend(Symbol(),OP_SELLLIMIT,Lots,LastPriceSell+Pip_pendig*Point,2,0,0,"",0,0,clrRed);
   }
   if(css==false)
   {
      ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,LastPriceSell-Pip_pendig*Point,2,0,0,"",0,0,clrRed);
   }
   if(cbl==false)
   {
      ticket = OrderSend(Symbol(),OP_BUYLIMIT,Lots,LastPriceSell-Pip_pendig*Point,2,0,0,"",0,0,clrBlue);
   }
   if(cbs==false)
   {
      ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,LastPriceSell+Pip_pendig*Point,2,0,0,"",0,0,clrBlue);
   }
}

//+------------------------------------------------------------------+//
« แก้ไขครั้งสุดท้าย: 11, พฤษภาคม 2019, 09:57:46 AM โดย iRuler »

*

ออฟไลน์ forcebewithyou

  • ****
  • 2,416
  • 79
  • Green PIPs Be With You

Re: ขอแนวคิดและหลักการเขียนอีเอครับ

« ตอบกลับ #5 เมื่อ: 10, พฤษภาคม 2019, 10:25:06 PM »

ต้องให้ท่าน iRuler วิเคราะห์โค๊ดดูละครับ

อื่นๆ วิธีปิด order ลองเอาอีเอพวก Close Trade พวกที่เป็น Close at profits มาแกะดูครับ น่าจะได้ไอเดีย และแนวทางการเขียน code ดู

https://www.mql5.com/en/code/10597
https://www.forexfactory.com/showthread.php?t=235952


เทรดแนวนี้ ประมาณนี้หรือเปล่าครับ  เห็นมีในเว็บ MQL5  สุดยอดแหล่ง code

https://www.mql5.com/en/forum/181078

https://www.youtube.com/watch?v=TwldsB0mOmI


คีย์เวิร์ด google น่าจะลองใช้ forward martingale ดูครับ เป็นการเบิ้ลทบเพิ่มในขามือขึ้น มีอีเอแนวๆ นี้อยู่หลายตัวนะในเว็บ FF

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40

Re: ขอแนวคิดและหลักการเขียนอีเอครับ

« ตอบกลับ #6 เมื่อ: 11, พฤษภาคม 2019, 10:07:30 AM »
ต้องเช็ค order ที่ปิด (*tp) ล่าสุดว่าเป็น buy หรือ sell ถ้าเป็น buy ก็วนลูปปิด order ที่เป็น buy 5 order ถูกไหมครับ
จากนั้นวนลูป order ที่เป็น sell เช็คว่า OrderProfit() น้อยที่สุดคือ OrderTicket เลขอะไร ได้แล้วก็ OrderClose() order นั้น

*จะรู้ได้อย่างไรว่า order นั้นปิดโดยการ tp? ก็ OrderClosePrice()== OrderTakeProfit() ครับ แต่มันไม่ตรงกันเสมอเพราะอาจจะมี slippage เข้ามา บวก/ลบ ด้วย
ทุกทีผมจะเช็คที่ OrderCommend() แทนครับ ส่วนมาก Order จะ TP หรือ SL มันจะมีข้อความ "[tp] หรือ "[sl]" อยู่ใน commend ครับ

ลองไปงมๆ ดูก่อนนะครับ ช่วงนี้ผมยังไม่ว่างพอจะลงโค้ด  (TH)**

*

ออฟไลน์ forcebewithyou

  • ****
  • 2,416
  • 79
  • Green PIPs Be With You

Re: ขอแนวคิดและหลักการเขียนอีเอครับ

« ตอบกลับ #7 เมื่อ: 11, พฤษภาคม 2019, 11:12:13 AM »
ต้องเช็ค order ที่ปิด (*tp) ล่าสุดว่าเป็น buy หรือ sell ถ้าเป็น buy ก็วนลูปปิด order ที่เป็น buy 5 order ถูกไหมครับ
จากนั้นวนลูป order ที่เป็น sell เช็คว่า OrderProfit() น้อยที่สุดคือ OrderTicket เลขอะไร ได้แล้วก็ OrderClose() order นั้น

*จะรู้ได้อย่างไรว่า order นั้นปิดโดยการ tp? ก็ OrderClosePrice()== OrderTakeProfit() ครับ แต่มันไม่ตรงกันเสมอเพราะอาจจะมี slippage เข้ามา บวก/ลบ ด้วย
ทุกทีผมจะเช็คที่ OrderCommend() แทนครับ ส่วนมาก Order จะ TP หรือ SL มันจะมีข้อความ "[tp] หรือ "[sl]" อยู่ใน commend ครับ

ลองไปงมๆ ดูก่อนนะครับ ช่วงนี้ผมยังไม่ว่างพอจะลงโค้ด  (TH)**

ท่าน iRuler ทำโปรแกรมอะรไรเป็นหลักครับ  MQL4 MQL5 อย่างเดียวเลยเหรอครับ

หรือว่าเป็น DEV เดฟ php + mysql , C++,C#  ครับท่าน


Tags: