การเทรดด้วยระบบ

การโค้ดบล็อกสำหรับ 'Counter' ใน MetaTrader 5: วิธีนับและหยุด
MetaTrader5
การโค้ดบล็อกสำหรับ 'Counter' ใน MetaTrader 5: วิธีนับและหยุด

01. นับ 'X' ครั้งและหยุด ขั้นตอนที่ 1 - สร้างตัวแปรเพื่อกำหนด ขีดจำกัดการนับ ซึ่งสามารถใช้เป็น พารามิเตอร์นำเข้า เพื่อทำการปรับแต่งในโค้ดได้เช่นกัน ขั้นตอนที่ 2 - สร้างตัวแปรอีกตัวเพื่อเก็บจำนวนครั้งที่นับได้ (จำนวนครั้งที่ถูกนับ) ขั้นตอนที่ 3 - เมื่อ Counter และ จำนวนที่นับ เท่ากัน นั่นหมายความว่า ถึงเวลาที่จะทำการส่งโค้ดบล็อกที่คุณระบุไว้ ขั้นตอนที่ 4 - เมื่อโค้ดถูกส่งแล้ว อย่าลืม รีเซ็ตค่า Counter ด้วย มิฉะนั้นมันจะนับต่อไปเรื่อย ๆ (ในกรณีนี้) คุณสามารถกำหนดเงื่อนไขการกรองสำหรับบล็อก Counter ได้เช่นกัน เช่น >> "ถ้านี่เป็นจริง ให้นับหนึ่งครั้ง" input int count = 50; // กำหนดขีดจำกัดการนับเป็นพารามิเตอร์นำเข้า int Counter; // ตัวแปรนับ // การเริ่มต้น Expert -------------------- int OnInit() { return(INIT_SUCCEEDED); } // การยกเลิก Expert ------------------- void OnDeinit(const int reason) { } // Expert OnTick -------------------------- void OnTick() { Counter ++; // เพิ่ม 1 ให้กับ Counter ทุกครั้งที่เกิด Tick Comment("Current Count -:", Counter); if(Counter == count) // นับ 'X' ครั้งและส่ง | บล็อกนี้จะถูกประมวลผลเพียงครั้งเดียวต่อการนับ { // โค้ดของคุณอยู่ที่นี่...... Alert(count," ครั้งที่นับแล้ว"); Counter = 0; // รีเซ็ต Counter ที่ท้ายของโค้ดบล็อก. นี่คือสิ่งที่ต้องทำ. } } // สิ้นสุด OnTick ---------------------- 02. ส่ง 'X' ครั้งแล้วรอ 'X' ครั้งแล้วส่ง วิธีนี้สามารถใช้เป็นการรอและส่ง ส่งและรอได้ ขั้นตอนที่ 1 - สร้างตัวแปรเพื่อกำหนด ขีดจำกัดการนับ และ ขีดจำกัดการรอ ซึ่งสามารถใช้เป็น พารามิเตอร์นำเข้า เพื่อทำการปรับแต่งในโค้ดได้เช่นกัน ขั้นตอนที่ 2 - สร้างตัวแปรอีกตัวเพื่อเก็บจำนวนครั้งที่นับได้และจำนวนครั้งที่รอ (จำนวนครั้งที่นับได้และจำนวนครั้งที่รอ) ขั้นตอนที่ 3 - เมื่อ Counter และ จำนวนการนับ เท่ากัน นั่นหมายความว่า ถึงเวลาที่จะส่งโค้ดบล็อกที่คุณระบุไว้ ขั้นตอนที่ 4 - เมื่อ Waiter และ จำนวนที่รอ เท่ากัน นั่นหมายความว่า ถึงเวลาที่จะรอสักครู่ ขั้นตอนที่ 5 - เมื่อถึงขีดจำกัดการรอ อย่าลืม รีเซ็ตค่า Counter และ Waiter ด้วย มิฉะนั้นจะไม่ทำงาน คุณสามารถตั้งค่า เงื่อนไขการกรอง สำหรับบล็อก Counter และ Waiter ได้เช่นกัน เช่น >> "ถ้านี่เป็นจริง รอสักครู่" input int count = 50; // กำหนดขีดจำกัดการนับเป็นพารามิเตอร์นำเข้า input int wait = 50; // กำหนดขีดจำกัดการรอเป็นพารามิเตอร์นำเข้า int Counter; // ตัวแปรนับ ค่าเริ่มต้นคือ "0" int Waiter; // ตัวแปรรอ ค่าเริ่มต้นคือ "0" // การเริ่มต้น Expert -------------------- int OnInit() { return(INIT_SUCCEEDED); } // การยกเลิก Expert ------------------- void OnDeinit(const int reason) { } // Expert OnTick -------------------------- void OnTick() { Comment("Counted Ticks -: ", Counter, "\n", "Waited Ticks -: ", Waiter); if(Counter < count) // ส่ง 'X' ครั้ง { Counter++; // ปรับปรุง Counter // โค้ดของคุณอยู่ที่นี่. } else if(Waiter < wait) // รอ 'X' ครั้ง { Waiter++; // ปรับปรุง Waiter // โค้ดของคุณอยู่ที่นี่. } if(Waiter == wait) // ถึงขีดจำกัดการรอ { Counter = 0; // รีเซ็ต Counter Waiter = 0; // รีเซ็ต Waiter } } // สิ้นสุด OnTick ---------------------- //+------------------------------------------------------------------+ พิเศษ -: คุณสามารถเขียนโค้ด "ส่ง X ครั้งและหยุด" โดยการปรับเปลี่ยนโค้ดข้างต้นโดย ลบบล็อกการรอออก แล้วมันจะนับตามจำนวนที่กำหนดและหยุดทำงานจนกว่าจะมีการรีเซ็ต Counter คุณสามารถรีเซ็ตที่ไหนก็ได้ในโค้ดของคุณหากคุณสร้างตัวแปรเหล่านี้ในระดับโลก (global variables)

2024.04.14
การจัดการการเทรดด้วย Virtual SL TP Pending และ SL Trailing สำหรับ MetaTrader 4
MetaTrader4
การจัดการการเทรดด้วย Virtual SL TP Pending และ SL Trailing สำหรับ MetaTrader 4

สวัสดีเพื่อนๆ นักเทรดทุกคนครับ วันนี้เราจะมาพูดถึง Virtual_SL_TP_Pending_with_SL_Trailing.mq4 ที่ออกแบบมาเพื่อช่วยในการจัดการการเทรดของเรา โดยการตั้งค่า Stop Loss และ Take Profit แบบเสมือน รวมถึงการสร้างคำสั่งรอดำเนินการเสมือนด้วยฟีเจอร์ Trailing Stop Loss ที่เลือกได้ครับ มาดูรายละเอียดของสคริปต์กันครับ: ลิขสิทธิ์และลิงค์: แจ้งข้อมูลลิขสิทธิ์และลิงค์ไปยังเว็บไซต์ของผู้สร้าง เวอร์ชัน: ระบุเวอร์ชันของสคริปต์ คำอธิบาย: ให้ข้อมูลเกี่ยวกับสคริปต์ รวมถึงอีเมลของผู้สร้าง รายละเอียดทรัพย์สินทางปัญญา และคำเตือนในการใช้ซอฟต์แวร์ว่าใช้ที่ความเสี่ยงของตัวเอง พารามิเตอร์นำเข้า: ตัวแปรภายนอกที่ช่วยให้ผู้ใช้ปรับแต่งการทำงานของ EA ได้แก่: StopLossPoints: Stop Loss เริ่มต้นในหน่วยจุด TakeProfitPoints: Take Profit เริ่มต้นในหน่วยจุด SpreadThreshold: ขีดจำกัด spread สำหรับ Stop Loss/Take Profit เสมือนในหน่วยจุด TrailingStopPoints: Trailing Stop ในหน่วยจุดสำหรับคำสั่งรอดำเนินการเสมือน EnableTrailing: ตัวเลือกในการเปิดหรือปิดการใช้งาน trailing stop ตัวแปรทั่วโลก: ตัวแปรที่ใช้ทั่วทั้งสคริปต์เพื่อเก็บข้อมูลเกี่ยวกับ spread เริ่มต้น, Stop Loss เสมือน, Take Profit เสมือน และราคาคำสั่งรอดำเนินการ ฟังก์ชันการเริ่มต้น (OnInit): เริ่มต้นการทำงานของ EA เมื่อแนบกับกราฟ มันจะคำนวณ Stop Loss เสมือน, Take Profit และราคาคำสั่งรอดำเนินการตามพารามิเตอร์นำเข้าครับ ฟังก์ชัน Tick (OnTick): จะถูกเรียกใช้เมื่อมีการเคลื่อนไหวของราคา มันจะตรวจสอบว่า spread เพิ่มขึ้นเกินขีดจำกัดหรือไม่ และปรับ Stop Loss เสมือน, Take Profit และราคาคำสั่งรอดำเนินการให้เหมาะสม นอกจากนี้ยังตรวจสอบว่าราคาเข้าใกล้ Stop Loss เสมือนหรือ Take Profit และปิดตำแหน่ง หากเปิดใช้งาน trailing stop และราคาถึงราคาคำสั่งรอดำเนินการ มันจะวางคำสั่งรอดำเนินการเสมือนด้วย trailing stop loss ฟังก์ชันปิดตำแหน่ง (ClosePosition): ปิดตำแหน่งเมื่อราคาถึง Stop Loss เสมือนหรือ Take Profit ฟังก์ชันวางคำสั่งรอดำเนินการ (PlacePendingOrder): วางคำสั่งรอดำเนินการเสมือนด้วย trailing stop loss หากเปิดใช้งาน EA นี้เป็นวิธีที่ยืดหยุ่นในการจัดการการเทรดโดยใช้ระดับเสมือนและฟีเจอร์ trailing stop เพื่อช่วยให้เราอัตโนมัติในกระบวนการจัดการการเทรดใน MetaTrader 4 ครับ

2024.04.10
ปิดตำแหน่งคู่เงินแบบง่ายด้วย Close Basket Pairs v1 สำหรับ MetaTrader 4
MetaTrader4
ปิดตำแหน่งคู่เงินแบบง่ายด้วย Close Basket Pairs v1 สำหรับ MetaTrader 4

วันนี้เรามีเครื่องมือดีๆ ที่จะช่วยให้การซื้อขายของเพื่อนๆ ง่ายขึ้น นั่นคือสคริปต์ MQL4 ที่ชื่อว่า Close Basket Pairs ซึ่งถูกออกแบบมาเพื่อปิดตำแหน่งสำหรับกลุ่มคู่เงินตามเกณฑ์กำไรและขาดทุนที่กำหนดไว้ ชื่อสคริปต์คือ CloseBasketPairs.mq4 ลิขสิทธิ์โดย MetaQuotes Software Corp. ในปี 2024 มีลิงค์ไปยังเว็บไซต์ของ MetaQuotes เวอร์ชันของสคริปต์คือ 1.01 ผู้เขียนคือ persinaru@gmail.com สคริปต์นี้ได้รับอนุญาตภายใต้ IP 2024 - เป็นโอเพ่นซอร์สฟรี จุดประสงค์หลักคือการปิดตำแหน่งของกลุ่มคู่เงินเมื่อถึงเกณฑ์กำไรหรือขาดทุนที่ตั้งไว้ ควรใช้สคริปต์ด้วยความระมัดระวัง ผู้สร้างไม่รับผิดชอบต่อความเสียหายใดๆ ที่อาจเกิดขึ้น ในสคริปต์นี้จะมีการกำหนดคู่เงินในกลุ่มและประเภทคำสั่งต่างๆ พร้อมทั้งเกณฑ์กำไรและขาดทุน จากนั้นมันจะวนลูปผ่านตำแหน่งที่เปิดอยู่และตรวจสอบว่ามีการจับคู่กับคู่เงินในกลุ่มที่กำหนดไว้หรือไม่ หากตำแหน่งใดตรงตามเงื่อนไข (กำไรเกินเกณฑ์หรือขาดทุนเกินเกณฑ์) สคริปต์จะทำการปิดตำแหน่งนั้นทันที นอกจากนี้ยังมีฟังก์ชันสำหรับการเริ่มต้นและการจัดการเหตุการณ์ tick ที่ช่วยให้การทำงานของสคริปต์เป็นไปอย่างราบรื่น โดยฟังก์ชัน PrintStrategyInfo() จะใช้ในการพิมพ์ข้อมูลเกี่ยวกับกลยุทธ์

2024.04.10
กลยุทธ์การเทรดตามแนวโน้มง่ายๆ สำหรับการซื้อขายใน MetaTrader 4
MetaTrader4
กลยุทธ์การเทรดตามแนวโน้มง่ายๆ สำหรับการซื้อขายใน MetaTrader 4

วันนี้เรามาพูดถึง กลยุทธ์การเทรดตามแนวโน้ม ที่ง่ายและมีประสิทธิภาพ สำหรับการซื้อขายใน MetaTrader 4 (MT4) กันนะครับ ซึ่งกลยุทธ์นี้จะช่วยให้คุณสามารถดำเนินการซื้อขายอัตโนมัติตามเงื่อนไขที่กำหนดไว้ได้อย่างมีระเบียบ มาดูกันว่ามีอะไรบ้าง: การเริ่มต้นใช้งาน: สคริปต์นี้จะเริ่มต้นและแสดงข้อความเมื่อเริ่มต้นใช้งานสำเร็จ การยกเลิกใช้งาน: เมื่อสคริปต์ถูกยกเลิกใช้งาน จะมีการแสดงข้อความแจ้งเตือน ฟังก์ชั่น OnTick: ฟังก์ชั่นนี้จะทำงานทุกครั้งที่มีการเปลี่ยนแปลงราคาในตลาด a. รีเซ็ตตัวแปรติดตามตำแหน่ง: สคริปต์จะรีเซ็ตตัวแปรที่ใช้ติดตามตำแหน่งซื้อและขายที่เปิดอยู่ b. ตรวจสอบคำสั่งที่เปิดอยู่: จะทำการวนลูปตรวจสอบคำสั่งทั้งหมดเพื่อดูว่ามีตำแหน่งซื้อหรือขายที่เปิดอยู่หรือไม่ c. เปิดตำแหน่งซื้อ: หากไม่มีตำแหน่งซื้อเปิดอยู่และตั้งค่า OpenBuyPosition เป็นจริง สคริปต์จะพยายามเปิดตำแหน่งซื้อตามราคาประมูลในปัจจุบัน พร้อมตั้งค่า stop loss และ take profit สำหรับคำสั่งซื้อ d. เปิดตำแหน่งขาย: หากไม่มีตำแหน่งขายเปิดอยู่และตั้งค่า OpenSellPosition เป็นจริง สคริปต์จะพยายามเปิดตำแหน่งขายตามราคาขายในปัจจุบัน พร้อมตั้งค่า stop loss และ take profit สำหรับคำสั่งขาย e. ตรวจสอบคำสั่งที่ปิดไปแล้ว: จะมีการตรวจสอบว่ามีคำสั่งใดที่ถูกปิดแล้ว ถ้าคำสั่งซื้อหรือขายปิดด้วยกำไร จะทำการรีเซ็ตธงตำแหน่งที่เกี่ยวข้อง พารามิเตอร์นำเข้า: สคริปต์นี้มีพารามิเตอร์ที่ให้คุณกำหนดขนาดล็อต, stop loss, take profit และธงสำหรับควบคุมการเปิดตำแหน่งซื้อหรือขาย ข้อควรระวัง: สคริปต์นี้มีการเตือนผู้ใช้ให้ใช้งานด้วยความระมัดระวังและไม่รับผิดชอบต่อความเสียหายหรือการสูญเสียที่อาจเกิดขึ้น โดยรวมแล้ว สคริปต์นี้มีจุดประสงค์เพื่อช่วยให้การดำเนินการซื้อขายเป็นไปอย่างอัตโนมัติ ตามกลยุทธ์การเทรดตามแนวโน้มอย่างต่อเนื่อง ช่วยให้ผู้ใช้สามารถปรับแต่งพารามิเตอร์ต่างๆ เช่น ขนาดล็อตและทิศทางการเทรดได้ตามต้องการ อย่างไรก็ตาม ผู้ใช้ควรมีความระมัดระวังและทำการทดสอบอย่างละเอียดก่อนที่จะนำไปใช้งานในสภาวะการเทรดจริง

2024.04.10
การใช้งาน Trailing Stop ใน MetaTrader 5 สำหรับเทรดเดอร์
MetaTrader5
การใช้งาน Trailing Stop ใน MetaTrader 5 สำหรับเทรดเดอร์

โค้ดนี้สามารถนำไปใช้ได้ทั้งกรณีที่ใช้ Stop Loss หรือไม่ใช้ก็ได้ ความต้องการเบื้องต้นคุณต้องเพิ่ม "Trade.mqh" เพื่อเข้าถึง CTrade class ที่ช่วยให้คุณจัดการกับตำแหน่งและคำสั่งได้#include <Trade\Trade.mqh> // <<------------------------------------------ เพิ่ม "Trade.mqh" เพื่อเข้าถึง CTrade Classคุณต้องตั้งค่าพารามิเตอร์ input เพื่อปรับระยะห่างของ Trailing ตามต้องการ ซึ่งไม่จำเป็นต้องทำ แต่สะดวกดีinput double Traling_Step = 3.0;คุณต้องประกาศตัวแปรสำหรับ CTrade class โดยตั้งชื่อได้ตามใจ แต่ควรตั้งชื่อหลังจาก OnInit event handler จากนั้นคุณต้องสร้าง if statement เพื่อตรวจสอบว่ามีตำแหน่งใด ๆ ที่กำลังเปิดอยู่หรือไม่ โดยเรียกใช้ฟังก์ชัน Check_TrailingStop(); สำหรับ ทุก ๆ tick ซึ่งสำคัญมากเพราะ EA ต้องทำงานได้อย่างราบรื่น ควรวาง statement นี้ไว้ที่ ด้านบนของ OnTick event handler เพื่อทำงานได้อย่างถูกต้อง//+------------------------------------------------------------------+ //| ฟังก์ชันเริ่มต้นของ Expert | //+------------------------------------------------------------------+ int OnInit() { //--- สร้าง timer EventSetTimer(60); //--- return(INIT_SUCCEEDED); } CTrade trade; // <<------------------------------------------ ประกาศ class "CTrade" คุณสามารถเปลี่ยน "trade" เป็นชื่ออื่นได้void OnTick() { if(PositionsTotal() > 0) { // เรียกใช้งานฟังก์ชัน trailing stop สำหรับทุก tick ถ้ามีตำแหน่งที่เปิดอยู่ Check_TralingStop(); } } คุณต้องประกาศฟังก์ชันที่กำหนดเองชื่อ Check_TrailingStop(); (ในที่นี้ Check_TrailingStop สามารถตั้งชื่ออะไรก็ได้) เพื่อทำงานที่เหลือ ฟังก์ชันนี้จะวนผ่าน ตำแหน่งที่เปิดทั้งหมด และปรับ Trailing ตามระยะที่คุณต้องการvoid Check_TralingStop() { int totalPositions = PositionsTotal(); for(int count = 0; count < totalPositions; count++) { ulong TicketNo = PositionGetTicket(count); // รับหมายเลข Ticket ของตำแหน่งโดยใช้ 'index' ของตำแหน่ง if(PositionSelectByTicket(TicketNo)) { // เลือกตำแหน่งตามหมายเลข Ticket (เราก็เลือกหมายเลข Ticket แล้ว) if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) { // ตรวจสอบประเภทตำแหน่ง double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); // <<-------------------รับ Stop Loss ปัจจุบันของตำแหน่ง double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(bidPrice - (Traling_Step * Point()), _Digits); if(stopLoss < openPrice) { // ไม่มี Stop Loss เป็นจริง if(bidPrice > openPrice && trailingLevel > openPrice) { // ทำงานเพียงครั้งเดียวต่อแต่ละตำแหน่ง กำหนด SL แรก trade.PositionModify(ticket, trailingLevel, takeProfit); } if(bidPrice > openPrice && trailingLevel > stopLoss) { // ตรวจสอบว่าระดับ Trailing สูงกว่าระดับก่อนหน้า trade.PositionModify(ticket, trailingLevel, takeProfit); } } } if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) { double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); double askPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(askPrice + (Traling_Step * Point()), _Digits); if(stopLoss < openPrice) { if(askPrice < openPrice && trailingLevel < openPrice) { // ทำงานเพียงครั้งเดียวต่อแต่ละตำแหน่ง กำหนด SL แรก trade.PositionModify(ticket, trailingLevel, takeProfit); } if(askPrice < openPrice && trailingLevel < stopLoss) { // ตรวจสอบว่าระดับ Trailing สูงกว่าระดับก่อนหน้า trade.PositionModify(ticket, trailingLevel, takeProfit); } } } } } }         

2024.04.05
โค้ดง่าย ๆ สำหรับตรวจจับ New Bar หรือ New Candle ใน MetaTrader 5
MetaTrader5
โค้ดง่าย ๆ สำหรับตรวจจับ New Bar หรือ New Candle ใน MetaTrader 5

วันนี้เรามาพูดถึงโค้ดที่ช่วยให้เราสามารถ ตรวจจับ New Bar หรือ New Candle ได้อย่างง่ายดายกันนะครับ หลักการทำงานของโค้ดนี้ค่อนข้างเรียบง่าย โดยโค้ดจะเก็บ เวลาของ Bar/Candle ก่อนหน้า และทำการเพิ่ม 60 วินาที (ซึ่งเท่ากับ 1 นาที) เพื่อหาค่า เวลาปิดของ Bar/Candle ปัจจุบัน ครับ เมื่อไหร่ก็ตามที่ เวลาปัจจุบัน = เวลาปิดของ Bar/Candle ปัจจุบัน นั่นหมายความว่า Bar ใหม่ได้ถูกสร้างขึ้นแล้ว ในโค้ดนี้ เราจะใช้ตัวแปร NewBarReceived ซึ่งเป็นตัวแปรประเภท bool เพื่อหลีกเลี่ยงการเรียกใช้โค้ดนี้หลายครั้ง คือตัวโค้ดนี้จะถูกเรียกใช้เพียงครั้งเดียวต่อ Bar/Candle เท่านั้น สำหรับ Comment(); และ PlaySound("ok.wav"); เราใช้เพื่อตรวจสอบความถูกต้องของโค้ด หากไม่ต้องการก็สามารถลบออกได้ และเมื่อเวลาปัจจุบันมากกว่าเวลาปิดของ Candle ปัจจุบัน ตัวแปร NewBarReceived จะถูกรีเซ็ตกลับเป็น false เพื่อตรวจสอบการเปิด Bar ถัดไป (ดูที่คอมเมนต์ในโค้ดได้เลย) //+------------------------------------------------------------------+ //|                                               New Bar Detect.mq5 | //|                                                  by H A T Lakmal | //|                                           https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarReceived = false; // Flag สำหรับควบคุม //+------------------------------------------------------------------+ //| ฟังก์ชันเริ่มต้น Expert                                   | //+------------------------------------------------------------------+ int OnInit()   { //--- สร้าง Timer    EventSetTimer(60); //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ //| ฟังก์ชันยุติ Expert                                   | //+------------------------------------------------------------------+ void OnDeinit(const int reason)   { //--- ทำลาย Timer    EventKillTimer();   } //+------------------------------------------------------------------+ //| ฟังก์ชัน Tick Expert                                             | //+------------------------------------------------------------------+ void OnTick()   {    datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1);    datetime TimeCurrentClose = TimePreviousBar + 60; // เวลาปิดของ Bar ปัจจุบัน    datetime Time_Current = TimeCurrent();    if(Time_Current == TimeCurrentClose && NewBarReceived == false)      {       PlaySound("ok.wav");   // เพื่อตรวจสอบการทำงาน       NewBarReceived = true; // อัพเดท Flag เพื่อหลีกเลี่ยงการเรียกใช้หลายครั้ง       // โค้ดของคุณที่นี่ ----- (ทำอะไรบางอย่าง)      }    else       if(Time_Current > TimeCurrentClose)         {          NewBarReceived = false; // รีเซ็ต Flag สำหรับเปิด Bar ถัดไป          // โค้ดของคุณที่นี่ ----- (ทำอะไรบางอย่าง)         }    Comment(" " +  " " +  "เวลาของ Bar ปัจจุบัน -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +            " " + "เวลาปิดปัจจุบัน -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +            " " + "เวลาปัจจุบัน -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + " " +" " + "Bar ใหม่ที่ได้รับ -: " + NewBarReceived); // เพื่อตรวจสอบการคำนวณ   } //+------------------------------------------------------------------+ //| ฟังก์ชัน Timer                                                   | //+------------------------------------------------------------------+ void OnTimer()   { //---   } //+------------------------------------------------------------------+ //| ฟังก์ชัน Trade                                                   | //+------------------------------------------------------------------+ void OnTrade()   { //---   } //+------------------------------------------------------------------+ //| ฟังก์ชัน ChartEvent                                              | //+------------------------------------------------------------------+ void OnChartEvent(const int id,                   const long &lparam,                   const double &dparam,                   const string &sparam)   { //---   } //+------------------------------------------------------------------+  

2024.04.05
ปิดการซื้อขายเมื่อมีกำไรหรือขาดทุนในสกุลเงินบัญชี | Expert Advisor สำหรับ MetaTrader 4
MetaTrader4
ปิดการซื้อขายเมื่อมีกำไรหรือขาดทุนในสกุลเงินบัญชี | Expert Advisor สำหรับ MetaTrader 4

ในบทความนี้เราจะพูดถึงการใช้งาน Expert Advisor ที่ช่วยในการปิดการซื้อขายเมื่อมีกำไรหรือขาดทุนในสกุลเงินบัญชี ซึ่งเป็นเครื่องมือที่สำคัญสำหรับเทรดเดอร์ในตลาด Forex //+------------------------------------------------------------------------------------------------------------------------------+ //| อัปเดตใหม่ใน Close_on_PROFIT_or_LOSS_inAccont_Currency_V2: //| //|1. การจัดการข้อผิดพลาด: โค้ดนี้ได้รวมการจัดการข้อผิดพลาดเพื่อจัดการกับสถานการณ์ที่ไม่สามารถปิดหรือลบคำสั่งได้ //|2. การปรับปรุงโค้ด: โค้ดถูกปรับให้มีประสิทธิภาพมากขึ้นเพื่อลดการทำซ้ำและเพิ่มความอ่านง่าย //|3. ประสิทธิภาพ: ลบลูปหรือการคำนวณที่ไม่จำเป็นออก //|4. เคลียร์วัตถุในกราฟทั้งหมดเมื่อ EA หยุดทำงาน //+------------------------------------------------------------------------------------------------------------------------------+ หากตั้งค่า EA เป็น 0 จะไม่มีการทำงานใดๆ สำหรับ Positive_Closure_in_Account_Currency จะต้องสูงกว่าจำนวน Equity ปัจจุบัน มิฉะนั้นการซื้อขายจะถูกดำเนินการทันที ตัวอย่าง: หาก Equity เป็น 55,000$ และตั้งค่า Positive_Closure_in_Account_Currency เป็น 55,500$ เพื่อทำกำไร 500$ Positive_Closure_in_Account_Currency > 0 && < 55,000$ = การดำเนินการทันที ในกรณีของ Negative_Closure_in_Account_Currency จะต้องต่ำกว่าจำนวน Equity ปัจจุบัน มิฉะนั้นการซื้อขายจะถูกดำเนินการทันที ตัวอย่าง: หาก Equity เป็น 55,000$ และตั้งค่า Negative_Closure_in_Account_Currency เป็น 54,500$ เพื่อทำให้ขาดทุนเพียง 500$ Negative_Closure_in_Account_Currency < 55,000$ = การดำเนินการทันที การเกิดสเปรดที่สูงอาจหลีกเลี่ยงได้โดยการลดจำนวนสเปรด แต่ตลาดจะมีการเคลื่อนไหวตามที่มันต้องการ และอาจเกิดกำไรหรือขาดทุนที่สูงขึ้นได้ หากตั้งค่าสเปรดต่ำกว่าค่ามาตรฐานสำหรับคู่เงินที่เทรด จะทำให้ตำแหน่งนั้นไม่ถูกดำเนินการ คำเตือน: ใช้ซอฟต์แวร์นี้ที่คุณรับความเสี่ยงเอง ตลาด Forex มีความผันผวนสูง! #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.01" #property description "persinaru@gmail.com" #property description "IP 2024 - open source ฟรี" #property description "EA นี้ปิดการซื้อขายทั้งหมดเมื่อมีกำไรหรือขาดทุนที่คำนวณในสกุลเงินบัญชี" #property description "คำเตือน: ใช้ซอฟต์แวร์นี้ที่คุณรับความเสี่ยงเอง" #property description "ผู้สร้างสคริปต์นี้ไม่สามารถรับผิดชอบต่อความเสียหายหรือการสูญเสียใดๆ" #property strict #property show_inputs extern string Closures = "EA ปิดการซื้อขายทั้งหมดและคำสั่งค้างเมื่อมีกำไรหรือขาดทุนถึงจุดที่กำหนด โดยคำนวณในสกุลเงินบัญชี."; extern int Positive_Closure_in_Account_Currency = 0; extern int Negative_Closure_in_Account_Currency = 0; extern int Spread = 10;

2024.03.25
การตั้งค่า Trailing Stop Loss สำหรับ MetaTrader 4 ที่คุณต้องรู้
MetaTrader4
การตั้งค่า Trailing Stop Loss สำหรับ MetaTrader 4 ที่คุณต้องรู้

สวัสดีครับเพื่อนๆ เทรดเดอร์ทุกคน! วันนี้เราจะมาพูดถึงการตั้งค่า Trailing Stop Loss สำหรับ MetaTrader 4 กันนะครับ ซึ่งเป็นเครื่องมือที่ช่วยให้เราจัดการความเสี่ยงได้อย่างมีประสิทธิภาพมากขึ้น อย่างแรกเลย Trailing Stop Loss คืออะไร? มันเป็นการตั้งค่าที่ช่วยป้องกันกำไรของเราไม่ให้ลดลง โดยจะเลื่อนตำแหน่งหยุดขาดทุนตามราคาที่เราเปิดไว้ ซึ่งเหมาะมากสำหรับการเทรดในตลาดที่มีความผันผวนสูง ตัวอย่างโค้ดการตั้งค่า Trailing Stop Loss ที่เราจะพูดถึงวันนี้เป็นเพียงแค่แนวทางให้เพื่อนๆ นำไปปรับใช้ตามความเหมาะสมของแต่ละคนครับ: void OnTick() { double trailingStop = 100; // ระยะห่างที่ต้องการ double currentPrice = Bid; // ราคาตลาดปัจจุบัน if (OrderSelect(0, SELECT_BY_POS) && OrderType() == OP_BUY) { double stopLoss = OrderStopLoss(); if (currentPrice - stopLoss > trailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), currentPrice - trailingStop, 0, 0, CLR_NONE); } }} หมายเหตุ: อย่าลืมว่าตัวอย่างนี้เป็นเพียงโค้ดพื้นฐานสำหรับโปรแกรมเมอร์ที่ต้องการแนวทางในการพัฒนา Expert Advisor ของตัวเองครับ หวังว่าบทความนี้จะเป็นประโยชน์สำหรับเพื่อนๆ ในการพัฒนาและปรับใช้กลยุทธ์การเทรดของคุณนะครับ! ถ้ามีคำถามหรือต้องการแชร์ประสบการณ์ สามารถคอมเมนต์ด้านล่างได้เลยครับ!

2024.03.23
เรียนรู้การเทรดด้วย Neural Networks ใน MQL5: คู่มือสำหรับเทรดเดอร์
MetaTrader5
เรียนรู้การเทรดด้วย Neural Networks ใน MQL5: คู่มือสำหรับเทรดเดอร์

ทำความรู้จักกับหนังสือ "Neural Networks for Algorithmic Trading with MQL5" หนังสือ "Neural Networks for Algorithmic Trading with MQL5" เป็นคู่มือที่คุณไม่ควรพลาดในการเรียนรู้วิธีการใช้ Machine Learning และ Neural Networks ในการเทรด สำหรับเทรดเดอร์ที่สนใจสร้างกลยุทธ์การเทรดด้วยเทคนิคปัญญาประดิษฐ์ขั้นสูง เนื้อหาภายในหนังสือ หนังสือเล่มนี้ประกอบไปด้วย 7 บทที่ครอบคลุมทุกสิ่งที่คุณต้องรู้เพื่อเริ่มต้นกับ Neural Networks และนำไปใช้ใน Robot เทรดของคุณใน MQL5 โดยมีคำอธิบายที่เข้าใจง่าย คุณจะได้เรียนรู้พื้นฐานของ Machine Learning และค้นพบประเภทต่างๆ ของ Neural Networks เช่น Convolutional และ Recurrent Models รวมถึงโซลูชันที่ซับซ้อนยิ่งขึ้นและ Attention Mechanisms ตัวอย่างการใช้งานจริง เพื่อช่วยให้คุณนำโซลูชันเหล่านี้ไปใช้ใน Robot เทรดของคุณใน MQL5 หนังสือเล่มนี้มีตัวอย่างการใช้งานจริงมากมาย นอกจากนี้ ยังสำรวจวิธีการต่างๆ ในการปรับปรุงการรวมโมเดล เช่น Batch Normalization และ Dropout การฝึก Neural Networks ผู้เขียนยังได้ให้คำแนะนำที่เป็นประโยชน์เกี่ยวกับการฝึก Neural Networks และการฝังเข้าไปในกลยุทธ์การเทรดของคุณ คุณจะได้เรียนรู้วิธีการสร้าง Expert Advisors เพื่อทดสอบประสิทธิภาพของโมเดลที่ฝึกแล้วบนข้อมูลใหม่ ทำให้คุณสามารถประเมินศักยภาพในตลาดการเงินจริงได้ ทำไมต้องอ่านหนังสือเล่มนี้? "Neural Networks for Algorithmic Trading with MQL5" ไม่ใช่แค่หนังสือเล่มหนึ่ง แต่เป็นคู่มือที่ช่วยให้คุณสามารถนำเทคนิคการตัดสินใจขั้นสูงไปใช้ในอัลกอริธึมการเทรดของคุณและมีโอกาสพัฒนาผลลัพธ์ทางการเงินของคุณ เริ่มเรียนรู้ความสามารถขั้นสูงของ Machine Learning วันนี้และยกระดับการเทรดของคุณไปอีกขั้น!

2024.02.29
ซื้อขายปิดออเดอร์ด้วย EA มือใหม่ - เครื่องมือจำเป็นสำหรับ MetaTrader 4
MetaTrader4
ซื้อขายปิดออเดอร์ด้วย EA มือใหม่ - เครื่องมือจำเป็นสำหรับ MetaTrader 4

สวัสดีครับเพื่อนๆ นักเทรดทุกคน! วันนี้เราจะมาพูดถึง EA ที่ชื่อว่า Buy Sell Close ซึ่งเหมาะสำหรับนักเทรดมือใหม่ที่ต้องการเริ่มต้นเรียนรู้การซื้อขายในตลาด Forex โดย EA ตัวนี้สามารถใช้ในการทดสอบแบ็คเทสในโหมดภาพได้ รวมถึงสามารถใช้งานในตลาดจริงได้ด้วยครับคุณสามารถฝึกทักษะการเทรดของตัวเองได้จากการแบ็คเทส โดยใช้ EA นี้ให้เป็นประโยชน์EA ตัวนี้มีฟังก์ชันการทำงานที่ช่วยให้คุณสามารถควบคุมการซื้อขายได้อย่างสะดวก ไม่ว่าจะเป็นการหยุดชั่วคราวหรือปรับความเร็วในการรีวิวแบ็คเทสเพื่อให้คุณได้ฝึกฝนการเทรดอย่างเต็มที่การทำงานของ EA:ปุ่ม [Lots]: หลังจากกล่องกรอกข้อมูล คุณสามารถปรับจำนวนล็อตได้ตามต้องการปุ่ม [BUY]: กดปุ่มนี้เพื่อเปิดออเดอร์ซื้อเพิ่มขึ้นอีก 1 ออเดอร์ปุ่ม [SELL]: กดปุ่มนี้เพื่อเปิดออเดอร์ขายตามจำนวนล็อตที่กำหนดปุ่ม [SL Modify TP]: ใช้ในการปรับ Stop Loss และ Take Profit โดยจะปรับออเดอร์ทั้งหมดตามราคาปัจจุบันปุ่ม [Close All Buy]: กดเพื่อปิดออเดอร์ซื้อทั้งหมดปุ่ม [Close All Sell]: กดเพื่อปิดออเดอร์ขายทั้งหมดปุ่ม [Close All Orders]: กดเพื่อปิดออเดอร์ทั้งหมดนอกจากนี้ ด้านขวาของหน้าจอจะแสดงข้อมูลเกี่ยวกับออเดอร์ที่เปิดอยู่และผลกำไรต่างๆคำอธิบายพารามิเตอร์:MM: ใช้การจัดการความเสี่ยงอัตโนมัติเพื่อคำนวณจำนวนล็อตเริ่มต้นRisk: ถ้าบalance มีค่า 10,000 จะใช้ 0.2 lotsLots: จำนวนล็อตคงที่ถ้า MM เป็น FALSE จะใช้จำนวนล็อตนี้SL: Stoploss ตั้งต้นไว้ที่ 250 จุดTP: TakeProfit ตั้งต้นไว้ที่ 500 จุดคุณสามารถฝึกระบบการเทรดของตัวเองได้อย่างเต็มที่ ขอบคุณทุกคนที่ติดตามนะครับ!

2024.02.29
KA-Gold Bot MT5: ระบบเทรดทองคำที่คุณไม่ควรพลาด!
MetaTrader5
KA-Gold Bot MT5: ระบบเทรดทองคำที่คุณไม่ควรพลาด!

ในยุคนี้ ถ้าพูดถึงการเทรดทองคำ บอกเลยว่า KA-Gold Bot MT5 ถือเป็นเครื่องมือที่น่าสนใจไม่น้อย! มาเริ่มทำความรู้จักกันหน่อยดีกว่า ทำไมต้องเลือก KA-Gold Bot? หลายคนอาจจะสงสัยว่า ทำไมต้องใช้ KA-Gold Bot ในการเทรด? นี่คือเหตุผลบางประการที่ทำให้มันโดดเด่น: การวิเคราะห์ที่แม่นยำ: ด้วยการใช้ข้อมูลทางเทคนิคและสถิติ ทำให้ KA-Gold Bot สามารถคาดการณ์ทิศทางราคาทองคำได้อย่างมีประสิทธิภาพ ใช้งานง่าย: ไม่ต้องเป็นโปรก็สามารถตั้งค่าและใช้งานได้ง่าย ๆ การสนับสนุนที่ดี: มีการให้คำปรึกษาและช่วยเหลือตลอด 24 ชั่วโมง ดูวิดีโอการใช้งาน หากคุณอยากเห็นการทำงานของ KA-Gold Bot แบบชัดเจน สามารถดูได้ที่ลิงก์นี้: ไม่ว่าคุณจะเป็นเทรดเดอร์หน้าใหม่หรือมือเก๋า KA-Gold Bot MT5 อาจจะเป็นเพื่อนคู่คิดที่ช่วยเพิ่มโอกาสในการทำกำไรของคุณได้! อย่าลืมทดลองใช้งานดูนะครับ

2024.02.20
การคำนวณ Drawdown ใน MT4: คู่มือสำหรับเทรดเดอร์
MetaTrader4
การคำนวณ Drawdown ใน MT4: คู่มือสำหรับเทรดเดอร์

สวัสดีครับเพื่อนๆ เทรดเดอร์ทุกคน! วันนี้เราจะมาพูดถึงการคำนวณ Drawdown ในโปรแกรม MetaTrader 4 หรือ MT4 กันนะครับ การคำนวณ Drawdown จะขึ้นอยู่กับ หมายเลขเวทย์ และ สัญลักษณ์ ที่เราเลือก ถ้าหากว่าเพื่อนๆ ไม่ต้องการคำนวณ Drawdown ของบัญชีทั้งหมด ก็สามารถเอาตัวกรองหมายเลขเวทย์และตัวกรองสัญลักษณ์ออกจากโค้ดได้เลยครับ หมายเลขเวทย์ (Magic Number): ใช้สำหรับระบุการทำงานของ Expert Advisor ของเรา สัญลักษณ์ (Symbol): คือคู่เงินที่เรากำลังเทรดอยู่ หวังว่าข้อมูลนี้จะเป็นประโยชน์สำหรับเพื่อนๆ เทรดเดอร์นะครับ! หากมีคำถามหรือข้อสงสัย สามารถคอมเมนต์ถามกันได้เลย!

2024.02.14
การทดสอบดัชนี - ระบบเทรดสำหรับ MetaTrader 5
MetaTrader5
การทดสอบดัชนี - ระบบเทรดสำหรับ MetaTrader 5

วันนี้เราจะมาพูดถึงระบบเทรดที่ทำงานเฉพาะการเปิดออเดอร์ซื้อ (Buy) เท่านั้น โดยไม่ใช้ Stop Loss (SL) และ Take Profit (TP) ซึ่งสำหรับนักเทรดบางคนอาจมองว่าเป็นวิธีการที่เสี่ยง แต่ก็มีผู้ที่ได้ผลลัพธ์ที่น่าพอใจจากการใช้ระบบนี้ การตั้งค่าระบบ: ---------- ข้อมูลทั่วไป ---------- คอมเมนต์ เริ่มการเทรด สิ้นสุดการเทรด ปิดออเดอร์ ---------- การจัดการความเสี่ยงและเงิน ---------- ล็อต (Lots) จำนวนออเดอร์ที่เปิดได้สำหรับแต่ละสัญลักษณ์ ขีดจำกัดจำนวนการซื้อขายต่อวันสำหรับแต่ละสัญลักษณ์ การทดสอบนี้ได้ดำเนินการโดยใช้การตั้งค่าเริ่มต้น โดยใช้บัญชีที่มีเงิน 10,000 ดอลลาร์ และมีเลเวอเรจ 100 ซึ่งสัญลักษณ์ที่ใช้ในการทดสอบคือ US30

2024.02.12
การตั้งค่าขนาดล็อตและจำนวนคำสั่งสำหรับกลยุทธ์กริดและมาร์ติงเกลใน MetaTrader 4
MetaTrader4
การตั้งค่าขนาดล็อตและจำนวนคำสั่งสำหรับกลยุทธ์กริดและมาร์ติงเกลใน MetaTrader 4

การตั้งค่าขนาดล็อตและจำนวนการเทรดสำหรับกลยุทธ์เช่นกริดและมาร์ติงเกลนั้นสำคัญมากครับ เรามักจะถามเกี่ยวกับสิ่งที่เกิดขึ้นในประวัติของสัญลักษณ์ในช่วงโซนราคา และ ราคากระเด้งกี่ครั้ง ระหว่างสองราคาของช่วงโซน!? นี่คือสิ่งที่ผมเรียกว่า "Bounce Number" ซึ่งสามารถคำนวณได้จากการวิเคราะห์สถิติของประวัติสัญลักษณ์ใด ๆ จากตลาด เพื่อให้ชัดเจนมากขึ้น มาดูภาพที่ 1 กันครับ ภาพที่ 1: คำนิยามของ Bounce Number, เป้าหมายและการใช้งาน ภาพแสดงให้เห็นว่าการเคลื่อนไหวของราคาสร้างสถิติของเครื่องมือ Bounce Number อย่างไร นอกจากนี้เพื่อให้เครื่องมือทำงานได้อย่างราบรื่น ผมได้สร้างเป็น Expert Advisor (EA) โดยใช้ฟังก์ชัน Sleep ซึ่งช่วยป้องกันการล่มของกราฟเนื่องจากจำนวนเทียนที่สูงในข้อมูลนำเข้าของเครื่องมือ อีกภาพหนึ่ง (ภาพที่ 2) แสดงโครงสร้างกราฟิกของเครื่องมือและความหมายของวัตถุในนั้น ภาพที่ 2: สถิติ Bounce Number การใช้งานเครื่องมือ: จากภาพที่ 2 หากเราตั้งค่า ความสูงครึ่งช่องกระเด้ง ไว้ที่ 600 จุด: จะมี Bounce Number จำนวน 6 ตั้งแต่ 1 ถึง 6 สำหรับสัญลักษณ์นี้Bounce Number 2 หมายถึงราคาเริ่มจากกลางช่องกระเด้ง (ความสูง 2 * 600 = 1200 จุด) และเคลื่อนไหวขึ้นลงโดยกระทบเส้นสีแดง 1 ครั้งและเส้นสีน้ำเงิน 1 ครั้งก่อนที่จะถึง TP = 1200 จุดสำหรับ Bounce Number 5 หมายถึงราคาเริ่มจากจุดกลางช่องและกระทบเส้นสีแดง 2 ครั้งและเส้นสีน้ำเงิน 3 ครั้ง หรือ 3 ครั้งสีแดงและ 2 ครั้งสีน้ำเงิน แล้วจึงถึง TP = 1200 จุด เราจะไม่มี Bounce Number 7 ซึ่งหมายความว่าไม่มีการกระเด้ง 7 ครั้งระหว่างเส้นสีแดงและสีน้ำเงิน (ด้วยระยะห่าง 1200 จุด) ในประวัติทั้งหมดที่เลือกในข้อมูลนำเข้าของเครื่องมือ หากเลือกข้อมูลประวัติที่มากขึ้น (จำนวนเทียนที่มองย้อนกลับสูงสุด) โอกาสที่จะพบ 7 Bounce จะเพิ่มขึ้น แต่จากที่เห็น โอกาสที่จะได้ 6 Bounce คือ 22 จาก 9020 รายการในราคาที่ถึง TP สิ่งที่อยู่ในข้อมูลนำเข้าของเครื่องมือ: – จำนวนเทียนที่มองย้อนกลับสูงสุด: เช่นเดียวกับเครื่องมือการสแกนอื่น ๆ ให้ระวังจำนวนที่ตั้งค่าสำหรับช่องนี้ อย่าเพิ่มมันอย่างมากเพื่อหลีกเลี่ยงการล่มในหน่วยความจำ– Time-Frame: Time-Frame ของเทียนที่เราต้องการใช้ในการหาการกระเด้งจากขอบของช่องและการสัมผัสของเส้น TP ใช้ Time-Frame ที่ต่ำกว่าสำหรับช่องที่แคบ หากไม่แน่ใจว่าควรตั้งค่าอะไร แนะนำให้ใช้ Time-Frame M1– ความสูงครึ่งช่องกระเด้ง: ระยะห่างของเส้นสีเขียวจากเส้นสีแดงและสีน้ำเงิน เป็นจุด– สีพื้นหลังกราฟ– สีของกราฟแท่ง 1/กราฟแท่ง 2: เพื่อทำให้กราฟสถิติสวยงามขึ้น– สีของเซลล์นับ– สีของเซลล์หมายเลขกระเด้ง– สีของแถบโหลด: ขณะคำนวณ แถบโหลดนี้จะช่วยให้ผู้ใช้ทราบว่าเครื่องมือทำงานอยู่หรือไม่ และความเร็วในการคำนวณเป็นอย่างไร – ปุ่มที่เพิ่มขึ้นเพื่อเริ่มต้นและป้อนจำนวนเทียนประวัติจากหน้าจอ

2024.01.12
SymbolSyncEA - ระบบเทรดที่ช่วยซิงค์สัญลักษณ์ใน MetaTrader 5
MetaTrader5
SymbolSyncEA - ระบบเทรดที่ช่วยซิงค์สัญลักษณ์ใน MetaTrader 5

หากคุณเป็นเทรดเดอร์ที่ใช้ MetaTrader 5 อยู่แล้วล่ะก็ คุณอาจจะเคยเจอกับปัญหาการซิงค์สัญลักษณ์ต่าง ๆ ในกราฟ ซึ่งอาจทำให้การวิเคราะห์หรือการเทรดของคุณไม่ต่อเนื่องและไม่สะดวกเท่าที่ควร วันนี้เราขอแนะนำ SymbolSyncEA ที่จะช่วยให้คุณซิงค์ทุกสัญลักษณ์ในกราฟไปยังสัญลักษณ์ของกราฟที่ EA นี้ติดตั้งอยู่ ไม่ว่าจะมีการเปลี่ยนแปลงสัญลักษณ์ใด ๆ EA จะทำงานโดยอัตโนมัติ ช่วยให้คุณไม่พลาดข้อมูลสำคัญและสามารถตัดสินใจได้อย่างรวดเร็ว เหมาะสำหรับเทรดเดอร์ที่ต้องการความสะดวกสบายและมีประสิทธิภาพในการเทรด ด้วย SymbolSyncEA คุณจะพบว่าการเทรดของคุณมีความเป็นระบบมากยิ่งขึ้น

2024.01.09
การแจ้งเตือนเสียงเชื่อมต่อและตัดการเชื่อมต่อสำหรับ MetaTrader 5
MetaTrader5
การแจ้งเตือนเสียงเชื่อมต่อและตัดการเชื่อมต่อสำหรับ MetaTrader 5

สวัสดีเพื่อนๆ เทรดเดอร์ทุกคน! วันนี้เราจะมาพูดถึง การแจ้งเตือนเสียงเชื่อมต่อและตัดการเชื่อมต่อ ใน MetaTrader 5 ซึ่งเป็นเครื่องมือที่ช่วยให้เรารู้สถานะการเชื่อมต่อได้ง่ายมากขึ้น การใช้งานก็ง่ายมาก เพียงแค่เพิ่มไฟล์เสียง .wav ลงในโฟลเดอร์ MQL5\Files\Sounds ของคุณ จากนั้นก็สามารถคัดลอกโค้ดและคอมไพล์ EA Utility ได้เลย โดยไฟล์ที่แนบมามีบรรทัดคอมเมนต์อธิบายการใช้งานด้วยนะ //+------------------------------------------------------------------+ //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Disconnect_Sound_Alert.mq5 | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright 2024, Rajesh Kumar Nait | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;https://www.mql5.com/en/users/rajeshnait/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, Rajesh Kumar Nait" #property link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"https://www.mql5.com/en/users/rajeshnait/seller" #property version&nbsp;&nbsp; "1.00" #include &lt;Trade/TerminalInfo.mqh&gt; bool&nbsp;&nbsp;&nbsp;&nbsp; first&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = true; bool&nbsp;&nbsp;&nbsp;&nbsp; Now_IsConnected&nbsp;&nbsp; = false; bool&nbsp;&nbsp;&nbsp;&nbsp; Pre_IsConnected&nbsp;&nbsp; = true; datetime Connect_Start = 0, Connect_Stop = 0; CTerminalInfo terminalInfo; //--- Sound files #resource "\\Files\\Sounds\\CONNECTED.wav" #resource "\\Files\\Sounds\\DISCONNECTED.wav" //+------------------------------------------------------------------+ //| Expert initialization function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int OnInit() &nbsp;&nbsp;{ //--- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResetLastError(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ( !IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pre_IsConnected = Now_IsConnected; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Now_IsConnected = terminalInfo.IsConnected(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pre_IsConnected = !Now_IsConnected; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( Now_IsConnected != Pre_IsConnected ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( Now_IsConnected ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Start = TimeLocal(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!PlaySound("::Files\\Sounds\\DISCONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print("Error: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PlaySound("::Files\\Sounds\\CONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Error: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Stop = TimeLocal(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!PlaySound("::Files\\Sounds\\CONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print("Error: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PlaySound("::Files\\Sounds\\DISCONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Error: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; first = false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(1000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} //--- &nbsp;&nbsp; return(INIT_SUCCEEDED); &nbsp;&nbsp;} //+------------------------------------------------------------------+

2024.01.08
เครื่องมือ MQL5 ขั้นสูงสำหรับนักเทรด – ส่วนที่ 7
MetaTrader5
เครื่องมือ MQL5 ขั้นสูงสำหรับนักเทรด – ส่วนที่ 7

ส่วนที่ 7. เครื่องมือ MQL5 ขั้นสูง "ส่วนที่ 7. เครื่องมือ MQL5 ขั้นสูง" ในหนังสือ "โปรแกรม MQL5 สำหรับนักเทรด" จะพูดถึงความสามารถขั้นสูงของ MQL5 API ซึ่งจะมีประโยชน์เมื่อพัฒนาโปรแกรมสำหรับ MetaTrader 5 โดยเฉพาะอย่างยิ่งการใช้งานสัญลักษณ์การเงินที่กำหนดเอง เหตุการณ์จากปฏิทินเศรษฐกิจที่มีอยู่ และเทคโนโลยีทั่วไป เช่น เครือข่าย ฐานข้อมูล และการเข้ารหัส ส่วนนี้จะครอบคลุมถึงไลบรารี - โปรแกรมประเภทพิเศษที่ให้ API ที่พร้อมใช้งานสำหรับเชื่อมต่อกับโปรแกรม MQL อื่น ๆ นอกจากนี้ยังพูดถึงความเป็นไปได้ในการพัฒนาซอฟต์แวร์แพ็กเกจและการรวมโปรแกรมที่เชื่อมโยงกันอย่างมีเหตุผลเข้าเป็นโครงการเดียว สุดท้ายนี้ ส่วนนี้จะนำเสนอการรวมเข้ากับซอฟต์แวร์อื่น ๆ รวมถึง Python เราจะเริ่มต้นด้วยการศึกษาแหล่งข้อมูล ซึ่งเป็นไฟล์ประเภทใดก็ได้ที่สามารถฝังอยู่ในโค้ดโปรแกรม แหล่งข้อมูลอาจประกอบด้วย: องค์ประกอบมัลติมีเดีย การตั้งค่าที่ "ยาก" จากโปรแกรมภายนอก โปรแกรม MQL5 อื่น ๆ ในรูปแบบคอมไพล์ สภาพแวดล้อมการพัฒนา MQL5 อนุญาตให้รวมข้อมูลแอปพลิเคชัน อาร์เรย์ รูปภาพ เสียง และฟอนต์ในไฟล์ต้นฉบับ ทำให้โปรแกรมเป็นผลิตภัณฑ์ที่มีความสมบูรณ์และสะดวกสำหรับผู้ใช้ปลายทาง จะมีการให้ความสำคัญกับทรัพยากรกราฟิกที่มีรูปภาพแบบแรสเตอร์ในรูปแบบ BMP: คุณจะได้เรียนรู้วิธีการสร้าง แก้ไข และแสดงผลอย่างไดนามิกบนกราฟ เราจะสรุปส่วนสุดท้ายของหนังสือโดยการศึกษาเกี่ยวกับการรวม OpenCL ใน MQL5 OpenCL เป็นมาตรฐานเปิดสำหรับการเขียนโปรแกรมขนานในระบบที่มีหลายโปรเซสเซอร์ รวมถึงกราฟิกการ์ด (GPUs) และหน่วยประมวลผลกลาง (CPUs) ซึ่งช่วยเร่งความเร็วในการทำงานที่ต้องใช้การคำนวณมาก หากอัลกอริธึมสามารถทำให้เป็นขนานได้ เช่น การฝึกอบรมเครือข่ายประสาท การแปลงฟูริเยร์ และการแก้ระบบสมการ การใช้ OpenCL ในโปรแกรม MQL ต้องการไดรเวอร์พิเศษจากผู้ผลิตและการสนับสนุนเวอร์ชัน OpenCL 1.1 ขึ้นไป การมีการ์ดกราฟิกไม่จำเป็นต้องมี เนื่องจากหน่วยประมวลผลกลางสามารถใช้สำหรับการคำนวณขนานได้เช่นกัน.

2023.12.16
แรก ก่อนหน้า 2 3 4 5 6 7 8 9 10 11 12 ถัดไป สุดท้าย