กองทุน SPDR GOLD SHARES
ถือทองก่อนหน้า
ถือทองล่าสุด
0.00
*หน่วยตัน / ราคาอ้างอิงล่าสุดจากสมาคมค้าทองคำ
สถิติกองทุน SPDR
ราคาทองคำแท่ง 96.5%
ราคาอ้างอิงล่าสุดจากสมาคมค้าทองคำ
ครั้งที่
ราคาก่อนหน้า
ราคาล่าสุด
0
(หน่วย บาท*) / อัปเดตล่าสุดเมื่อวันที่ 13 ก.ค. 2566 เวลา 13:04 น.
สถิติราคาทองคำ ไทย

รบกวนผู้รู้ อยากแก้ไข code การเข้าออเดอร์ ครับ รบกวนด้วยนะครับ

  • 3 replies
  • 1,937 views
รบกวนผู้รู้ครับ ผมมือใหม่เรื่อง EA พอดีลองสร้างใน mql5 wizard แบบที่ใส่สำเร็จเลย โดยใช้ Signals of the Oscillator MACD เป็นตัวกำหนดเข้าออเดอร์ แต่ผมเข้าไปดูเงื่อนไขในการเข้าออเดอร์ ในการเวบ https://www.mql5.com/en/docs/standardlibrary/expertclasses/csignal/signal_macd
ซึ่งผมทดลองรันแล้วก็ตรง แต่ผมอยากตัดเงื่อนไขในการเข้าออเดอร์บางตัว แต่ผมหาใน code ไม่เจอครับ เลยขอรบกวนผู้รู้ช้วยหน่อยครับ

//+------------------------------------------------------------------+
//|                                                 test macd v2.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalMACD.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingMA.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title            ="test macd v2"; // Document name
ulong                    Expert_MagicNumber      =20508;          //
bool                     Expert_EveryTick        =false;          //
//--- inputs for main signal
input int                Signal_ThresholdOpen    =10;             // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose   =10;             // Signal threshold value to close [0...100]
input double             Signal_PriceLevel       =0.0;            // Price level to execute a deal
input double             Signal_StopLevel        =50.0;           // Stop Loss level (in points)
input double             Signal_TakeLevel        =50.0;           // Take Profit level (in points)
input int                Signal_Expiration       =4;              // Expiration of pending orders (in bars)
input int                Signal_MACD_PeriodFast  =12;             // MACD(12,24,9,PRICE_CLOSE) Period of fast EMA
input int                Signal_MACD_PeriodSlow  =24;             // MACD(12,24,9,PRICE_CLOSE) Period of slow EMA
input int                Signal_MACD_PeriodSignal=9;              // MACD(12,24,9,PRICE_CLOSE) Period of averaging of difference
input ENUM_APPLIED_PRICE Signal_MACD_Applied     =PRICE_CLOSE;    // MACD(12,24,9,PRICE_CLOSE) Prices series
input double             Signal_MACD_Weight      =0.1;            // MACD(12,24,9,PRICE_CLOSE) Weight [0...1.0]
//--- inputs for trailing
input int                Trailing_MA_Period      =12;             // Period of MA
input int                Trailing_MA_Shift       =5;              // Shift of MA
input ENUM_MA_METHOD     Trailing_MA_Method      =MODE_SMA;       // Method of averaging
input ENUM_APPLIED_PRICE Trailing_MA_Applied     =PRICE_CLOSE;    // Prices series
//--- inputs for money
input double             Money_FixLot_Percent    =10.0;           // Percent
input double             Money_FixLot_Lots       =0.01;           // Fixed volume
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalMACD
   CSignalMACD *filter0=new CSignalMACD;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodFast(Signal_MACD_PeriodFast);
   filter0.PeriodSlow(Signal_MACD_PeriodSlow);
   filter0.PeriodSignal(Signal_MACD_PeriodSignal);
   filter0.Applied(Signal_MACD_Applied);
   filter0.Weight(Signal_MACD_Weight);
//--- Creation of trailing object
   CTrailingMA *trailing=new CTrailingMA;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set trailing parameters
   trailing.Period(Trailing_MA_Period);
   trailing.Shift(Trailing_MA_Shift);
   trailing.Method(Trailing_MA_Method);
   trailing.Applied(Trailing_MA_Applied);
//--- Creation of money object
   CMoneyFixedLot *money=new CMoneyFixedLot;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set money parameters
   money.Percent(Money_FixLot_Percent);
   money.Lots(Money_FixLot_Lots);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

ไม่รู้อธิบายเข้าใจหรือป่าวนะ


ตัดเงื่อนไขอะไรครับ

ลองอ่าน  article นี้ไม่รู้ว่าช่วยได้หรือเปล่านะ

https://www.mql5.com/en/articles/2540

https://www.mql5.com/en/docs/standardlibrary/expertclasses/expertbaseclasses/cexpertsignal

ลองดูตัวอย่างอันนี้
https://www.mql5.com/en/code/262

เดาว่าน่าจะใช้  Wizard เหมือนกันนะครับแล้วเอามาแก้ไข


อ้างจาก: forcebewithyou ที่ 03, ตุลาคม  2020, 11:18:03 PM

ตัดเงื่อนไขอะไรครับ

ลองอ่าน  article นี้ไม่รู้ว่าช่วยได้หรือเปล่านะ

https://www.mql5.com/en/articles/2540

https://www.mql5.com/en/docs/standardlibrary/expertclasses/expertbaseclasses/cexpertsignal

ลองดูตัวอย่างอันนี้
https://www.mql5.com/en/code/262

เดาว่าน่าจะใช้  Wizard เหมือนกันนะครับแล้วเอามาแก้ไข

ขอบคุณมากครับ
อยากให้แค่ เส้น Main ตัดกับเส้น Signal แล้วเข้าออร์เดอร์อ่ะครับ แค่นั้นครับ
นอกนั้นไม่เอา แต่ดันหา Code ไม่เจอครับ ไม่รู้ว่าคือบรรทัดไหน

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


ลองดูไฟล์  Examples/MACD/MACD Sample.mq5    น่าจะเอามาแก้ไขให้ตรงกับที่ต้องการง่ายกว่านะครับ