Open Forex4you Account

Server รัน EA 1000 / ปี

สั่งชื้อคู่มือการโปรแรกม MQL4

Author Topic: การสร้างปุ่ม สำหรับส่งคำสั่ง  (Read 23305 times)

veronika

  • Newbie
  • *
  • Posts: 44
การสร้างปุ่ม สำหรับส่งคำสั่ง
« on: สิงหาคม 02, 2014, 07:30:20 pm »
ตามหัวข้อเลยครับ อยากจะสร้างปุ่มสำหรับส่งคำสั่ง เพื่อเป็น Guide line สำหรับ งานต่อยอดน่ะครับ
เช่น ปุ่มกด สั่งซื้อ ปุ่มกดสั่งขาย ปุ่มปิด order ปุ่ม modify
พอจะมีตัวอย่าง code คร่าวๆมั้ยครับ แบบที่ไม่ต้องไปดึง dll ของคนอื่น แต่ดึงเฉพาะส่วนที่เป็นของระบบก็พอ
ตัวอย่างก็ประมาณนี้ครับ



ขอบคุณครับ
« Last Edit: สิงหาคม 02, 2014, 11:13:32 pm by veronika »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386

veronika

  • Newbie
  • *
  • Posts: 44
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #2 on: สิงหาคม 03, 2014, 04:05:36 am »
ขอบคุณครับ เดี๋ยวจะลองเอาไปทดสอบดู ถ้าได้ผลแล้วจะมา update เรื่อยๆนะครับ

veronika

  • Newbie
  • *
  • Posts: 44
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #3 on: สิงหาคม 12, 2014, 11:02:31 pm »
มีคำถามครับ admin
อย่างถ้าผมจะสร้างปุ่ม ที่กดแล้ว ให้มันทำงานเหมือน hot key นี่ต้องทำยังไงครับ
เช่น กดเมาส์ที่ปุ่ม a มีค่าเท่ากับกด f7 ที่ keyboard

veronika

  • Newbie
  • *
  • Posts: 44
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #4 on: สิงหาคม 15, 2014, 04:53:26 pm »
สวัสดีครับ
คือผมต้องการให้ตัวเลขของ OrderType แสดงแต่ 3 ตัวหลังน่ะครับ
ควรเขียนยังไงครับ อันนี้เป็น code ที่ผมเขียนออกมา มันแสดงหมดเลย เลยทำให้มันเป็นแบบในรูปครับ

Code: [Select]
string Type;
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
   
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
     if(OrderType()==0)Type="Buy";
      if(OrderType()==1)Type="Sell";
      ObjectCreate("Order"+OrderTicket(),OBJ_LABEL,0,0,0);
   ObjectSet("Order"+OrderTicket(),OBJPROP_HIDDEN,true);
   ObjectSet("Order"+OrderTicket(),OBJPROP_XDISTANCE,25);
   ObjectSet("Order"+OrderTicket(),OBJPROP_YDISTANCE,185+(i*18));
   ObjectSet("Order"+OrderTicket(),OBJPROP_SELECTABLE,false);
   ObjectSetText("Order"+OrderTicket(),OrderTicket()+" | "+Type+" | "+OrderLots()+" | "+OrderProfit(),10,"Times New Roman",clrWhiteSmoke);
รูปครับ


อยากให้ตัว Ticket แสดงผลเป็นแบบ "..123" แค่นี้พอครับ
ขอบคุณครับ

ps.ถ้าได้คำตอบข้างบนด้วยก็ขอบคุณมากๆครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #5 on: สิงหาคม 15, 2014, 11:36:26 pm »
สวัสดีครับ
คือผมต้องการให้ตัวเลขของ OrderType แสดงแต่ 3 ตัวหลังน่ะครับ
ควรเขียนยังไงครับ อันนี้เป็น code ที่ผมเขียนออกมา มันแสดงหมดเลย เลยทำให้มันเป็นแบบในรูปครับ

Code: [Select]
string Type;
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
   
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
     if(OrderType()==0)Type="Buy";
      if(OrderType()==1)Type="Sell";
      ObjectCreate("Order"+OrderTicket(),OBJ_LABEL,0,0,0);
   ObjectSet("Order"+OrderTicket(),OBJPROP_HIDDEN,true);
   ObjectSet("Order"+OrderTicket(),OBJPROP_XDISTANCE,25);
   ObjectSet("Order"+OrderTicket(),OBJPROP_YDISTANCE,185+(i*18));
   ObjectSet("Order"+OrderTicket(),OBJPROP_SELECTABLE,false);
   ObjectSetText("Order"+OrderTicket(),OrderTicket()+" | "+Type+" | "+OrderLots()+" | "+OrderProfit(),10,"Times New Roman",clrWhiteSmoke);
รูปครับ


อยากให้ตัว Ticket แสดงผลเป็นแบบ "..123" แค่นี้พอครับ
ขอบคุณครับ

ps.ถ้าได้คำตอบข้างบนด้วยก็ขอบคุณมากๆครับ
ใช้
double  NormalizeDouble(
   double  value,      // normalized number
   int     digits      // number of digits after decimal point
   );

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #6 on: สิงหาคม 15, 2014, 11:41:54 pm »
มีคำถามครับ admin
อย่างถ้าผมจะสร้างปุ่ม ที่กดแล้ว ให้มันทำงานเหมือน hot key นี่ต้องทำยังไงครับ
เช่น กดเมาส์ที่ปุ่ม a มีค่าเท่ากับกด f7 ที่ keyboard
ไม่น่าจะทำได้นะครับ เพราะ hot key ตามปกติโปรแรกมตัวใดตัวหนึ่งจะมี hot key ได้ต้อง map message กับ Form นั่นตอนสร้างโปรแกรม ส่วน CHARTEVENT_KEYDOWN ถึงจะจับค่า a ได้แต่จะส่ง key message ไปที่ MT4 ยังไงนี้อ่ะสิครับ

veronika

  • Newbie
  • *
  • Posts: 44
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #7 on: สิงหาคม 16, 2014, 06:48:27 pm »
มีคำถามครับ admin
อย่างถ้าผมจะสร้างปุ่ม ที่กดแล้ว ให้มันทำงานเหมือน hot key นี่ต้องทำยังไงครับ
เช่น กดเมาส์ที่ปุ่ม a มีค่าเท่ากับกด f7 ที่ keyboard
ไม่น่าจะทำได้นะครับ เพราะ hot key ตามปกติโปรแรกมตัวใดตัวหนึ่งจะมี hot key ได้ต้อง map message กับ Form นั่นตอนสร้างโปรแกรม ส่วน CHARTEVENT_KEYDOWN ถึงจะจับค่า a ได้แต่จะส่ง key message ไปที่ MT4 ยังไงนี้อ่ะสิครับ
งั้นแบบนี้จะได้มั้ยครับ?
Code: [Select]
if(id==CHARTEVENT_OBJECT_CLICK) {
 if(clickedChartObject=="ButtonA"){
id=CHARTEVENT_KEYDOWN
.
.
.
}
}
แล้วให้มันส่ง F7 แทน

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #8 on: สิงหาคม 16, 2014, 09:51:51 pm »
คุณต้องลองทำดูครับ แต่ค่า Key ที่รับได้น่าจะเป็น ascii นะครับ แต่ปัญหามันอยู่ตรงที่คุณจะส่งค่า F7 ให้ Form ของ Mt4 ผ่านทางไหนอ่ะครับ

veronika

  • Newbie
  • *
  • Posts: 44
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #9 on: กันยายน 01, 2014, 10:12:37 am »
ตอนนี้ต้องใช้ให้กด F7 เอาครับ ลองดูแล้วไม่ได้ผล  :-[

ขอความช่วยเหลือเพิ่มเติมครับ
ตอนนี้ อยากจะทราบผลกำไร Profit ของ  Order ที่ปิดไปแล้ว
แยกออกตามเงื่อนไข คือ

วันนี้
เมื่อวาน
สัปห์ดานี้
เดือนนี้

ตอนนี้ได้ แบบเดือน กับ เมื่อวานแล้ว
มีปัญหาคือ วันนี้ order แรกมันไม่เอามารวม  :-[
ส่วนของสัปห์ดานี่ อยากได้ตัวอย่างหน่อยครับ

ขอบคุณครับ
ps อ่อ ถ้าได้แล้ว จะเอามาแชร์นะครับ

Edit : ของวันนี้ได้แล้วครับ
Code: [Select]
int i;
   double ProfitDay,ProfitDay1,ProfitDay2,SumProfits;
   SumProfits = 0;
//----  
      for(i=OrdersHistoryTotal();i>=0;i--){
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
            if((TimeDay(OrderCloseTime())==TimeDay(TimeCurrent()))&&(TimeMonth(OrderCloseTime())==TimeMonth(TimeCurrent()))&&(TimeYear(OrderCloseTime())==TimeYear(TimeCurrent()))){
               ProfitDay = OrderProfit();
               ProfitDay1 = OrderCommission();
               ProfitDay2 = OrderSwap();
               SumProfits =  SumProfits+ProfitDay+ProfitDay1+ProfitDay2;
            }
            
         }
      }
เหลือของสัปห์ดา
« Last Edit: กันยายน 01, 2014, 11:06:40 am by veronika »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: การสร้างปุ่ม สำหรับส่งคำสั่ง
« Reply #10 on: กันยายน 01, 2014, 12:03:36 pm »
ที่คุณติดเรื่อง week เพราะมันไม่มีฟังก์ชั่นสำเร็จรูป คุณก็กำหนดวันลงไปสิครับว่าเราจะให้เริ่มวันค้นหา Order ที่ปิดตั้งแต่วันนี้ย้อนหลังลงไปถึงวันอาทติย์ แล้วใช่ If กรองถ้า Order ใดเข้าเงื่อนไขก็ให้แสดงผผลหรือจะนำค่าไปใช่งานอะไรก้แล้วแต่คุณ