ผู้เขียน หัวข้อ: ขอคำแนะนำเรื่องโคดครับท่านแอด  (อ่าน 202 ครั้ง)

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

ออฟไลน์ dechatorn

  • Newbie
  • *
  • กระทู้: 2
    • ดูรายละเอียด
ขอคำแนะนำเรื่องโคดครับท่านแอด
« เมื่อ: มกราคม 23, 2018, 09:09:53 AM »
จะรบกวนขอคำชี้แนะโคดทีครับ ท่านแอดสุดเทพ
มีตัวอย่างโคด ปิดทุกออเดอร์ เมื่อเราสั่งปิด ไหมครับ
เช่น เปิด UJ ไว้ 10 ออเดอร์  เมื่อเราสั่งปิดคู่ UJ 1 ออเดอร์ก็ให้ EA ปิดออเดอร์ที่เป็น UJ ทั้งหมดเลย  แบบนี้ทำได้ไหมครับ
ขอควา่มกรุณาด้วยครับท่านเทพ

ออฟไลน์ admin

  • Administrator
  • Full Member
  • *****
  • กระทู้: 183
  • i ma forex trader
    • ดูรายละเอียด
Re: ขอคำแนะนำเรื่องโคดครับท่านแอด
« ตอบกลับ #1 เมื่อ: มกราคม 26, 2018, 03:41:15 PM »

ยังไม่ได้ลองนะครับ




โค๊ด: [Select]
//+------------------------------------------------------------------+
//|                                                 Close1forAll.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
#property strict

int state=0;

int cnts[6];
int old_cnts[6];
input int MagicNumebr=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(1);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   terminal();
   if(cnts[OP_BUY]!=old_cnts[OP_BUY])
     {
      //execute close all buy orders
      state=100;
     }

   if(cnts[OP_SELL]!=old_cnts[OP_SELL])
     {
      //execute close all buy orders
      state=200;
     }
   switch(state)
     {
      case 0 :
         Comment("doing nothing");
         break;
      case 100 :
         CloseALL(OP_BUY,Symbol(),MagicNumebr);
         if(cnts[OP_BUY]==0)
            state=0;
         break;
      case 200 :
         CloseALL(OP_SELL,Symbol(),MagicNumebr);
         if(cnts[OP_SELL]==0)
            state=0;
         break;

      default:
         break;
     }
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
//transfer order count to old_cnts
   ArrayCopy(old_cnts,cnts);

  }
//+------------------------------------------------------------------+
void terminal()
  {
   ArrayInitialize(cnts,0);
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderMagicNumber()==MagicNumebr && OrderSymbol()==Symbol())
           {
            //cnts[OrderType()]=0;
            cnts[OrderType()]++;
           }
        }
     }
  }
//+------------------------------------------------------------------+
void CloseALL(int type,string usymb,int magick)
  {
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderMagicNumber()==magick && OrderSymbol()==usymb && OrderType()==type)
           {
            //cnts[OrderType()]=0;
            switch(OrderType())
              {
               case OP_BUY :
                 {
                  int del=OrderClose(OrderTicket(),OrderLots(),Bid,10);
                  break;
                 }
               case OP_SELL:
                 {
                  int del=OrderClose(OrderTicket(),OrderLots(),Ask,10);
                  break;
                 }
               case OP_BUYLIMIT:
               case OP_BUYSTOP:
               case OP_SELLLIMIT:
               case OP_SELLSTOP:
                 {
                  bool del=OrderDelete(OrderTicket());
                  break;
                 }
               default:
                  break;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+

ออฟไลน์ admin

  • Administrator
  • Full Member
  • *****
  • กระทู้: 183
  • i ma forex trader
    • ดูรายละเอียด
Re: ขอคำแนะนำเรื่องโคดครับท่านแอด
« ตอบกลับ #2 เมื่อ: มกราคม 26, 2018, 03:42:58 PM »
ลืมแนบไฟล์