กองทุน SPDR Gold Shares

ประจำวันที่

เวลา ครั้งที่ ก่อนหน้า ถือล่าสุด เปลี่ยนแปลง
- - - - -
รวมวันนี้-
เดือนนี้ - : 
ปีนี้  : 
*หน่วยตัน
*อ้างอิงจาก SPDR Gold Share

ราคาทองตามประกาศสมาคมค้าทองคำ

ประจำวันที่ ครั้งที่ เวลา น.

ชนิดทองคำ รับซื้อ ขายออก
ทองคำแท่ง 96.5% - -
ทองรูปพรรณ 96.5% - -
รวมวันนี้-
เปลี่ยนแปลงล่าสุด-
*หน่วยเงินบาท
*ราคาอ้างอิงล่าสุดจากสมาคมค้าทองคำ

เปิดออเดอร์2ออเดอร์ ถ้าเอากำไรทั้ง2ออเดอร์มาบวกกันเกิน1แล้วให้ปิดออเดอร์ทั้งสอง

  • 4 replies
  • 2,329 views
ขอคำแนะนำหน่อยครับว่าจะเอากำไรทั้งสองออเดอร์มาบวกกันยังไง

   for(cnt=0;cnt<OrdersTotal();cnt++)   
   {
     result = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol()==Symbol() )
     {            
          Profit += OrderProfit();
           }
   }

อ้างจาก: gaothun ที่ 13, มิถุนายน  2019, 12:10:03 PM
   for(cnt=0;cnt<OrdersTotal();cnt++)   
   {
     result = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol()==Symbol() )
     {            
          Profit += OrderProfit();
           }
   }

extern string sym1 = "" ;
extern string sym2 = "" ;
extern double lot = 1;

int OnInit()
  {
//---
  if (OrderSend(sym1,OP_BUY,lot,MarketInfo(sym1,MODE_ASK),0,0,0,NULL,1,0,clrGreen));
  else Print("OrderSent Eror Code : ",GetLastError());
  if (OrderSend(sym2,OP_BUY,lot,MarketInfo(sym2,MODE_ASK),0,0,0,NULL,2,0,clrBlue));
  else Print("OrderSent Eror Code : ",GetLastError());
 
//---
   return (INIT_SUCCEEDED);
 
  }

ต้องเขียนต่อยังไงหรอครับ ถ้าจะเอากำไรทั้งสองอันมาบวกกัน ถ้าเกิน1 ให้ปิดทั้งสองออเดอร์

extern string sym1 = "" ;
extern string sym2 = "" ;
extern double lot = 1;
double Profit;
int mode;
int result;
int ticket;

int OnInit()
  {
//---
   Profit=0;
   for(int cnt=0;cnt<OrdersTotal();cnt++)   
   {
     result = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol()==Symbol() )
     {           
          Profit += OrderProfit();
      }
   }
   if(Profit>1)
  {
     for(cnt=OrdersTotal();cnt>=0;cnt--)
     {
        result = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
          mode=OrderType();
        if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
        {
         if (mode==OP_SELL){ticket =  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,clrCrimson); }
         if (mode==OP_BUY) {ticket =  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,clrIndigo); }
        }
     }
  }


  if (OrderSend(sym1,OP_BUY,lot,MarketInfo(sym1,MODE_ASK),0,0,0,NULL,1,0,clrGreen));
  else Print("OrderSent Eror Code : ",GetLastError());
  if (OrderSend(sym2,OP_BUY,lot,MarketInfo(sym2,MODE_ASK),0,0,0,NULL,2,0,clrBlue));
  else Print("OrderSent Eror Code : ",GetLastError());
 
//---
   return (INIT_SUCCEEDED);
 
  }

อ้างจาก: gaothun ที่ 13, มิถุนายน  2019, 04:21:39 PM
extern string sym1 = "" ;
extern string sym2 = "" ;
extern double lot = 1;
double Profit;
int mode;
int result;
int ticket;

int OnInit()
  {
//---
   Profit=0;
   for(int cnt=0;cnt<OrdersTotal();cnt++)   
   {
     result = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol()==Symbol() )
     {           
          Profit += OrderProfit();
      }
   }
   if(Profit>1)
  {
     for(cnt=OrdersTotal();cnt>=0;cnt--)
     {
        result = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
          mode=OrderType();
        if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
        {
         if (mode==OP_SELL){ticket =  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,clrCrimson); }
         if (mode==OP_BUY) {ticket =  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,clrIndigo); }
        }
     }
  }


  if (OrderSend(sym1,OP_BUY,lot,MarketInfo(sym1,MODE_ASK),0,0,0,NULL,1,0,clrGreen));
  else Print("OrderSent Eror Code : ",GetLastError());
  if (OrderSend(sym2,OP_BUY,lot,MarketInfo(sym2,MODE_ASK),0,0,0,NULL,2,0,clrBlue));
  else Print("OrderSent Eror Code : ",GetLastError());
 
//---
   return (INIT_SUCCEEDED);
 
  }

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