Forex Thai EA

กรุณา เข้าสู่ระบบ หรือ สมัครสมาชิก.

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
การค้นหาขั้นสูง  

ข่าว:

เราจะรวยได้ด้วยบอท

หน้า: 1 ... 8 9 [10]
 91 
 เมื่อ: ตุลาคม 10, 2017, 01:49:11 PM 
เริ่มโดย urza - กระทู้ล่าสุด โดย admin
อ่า อันนี้ตอบไม่ได้จริงๆครับ
พอใช้ tickstory แล้วผมไม่เคยเจอเลยครับ

 92 
 เมื่อ: ตุลาคม 10, 2017, 01:48:42 PM 
เริ่มโดย urza - กระทู้ล่าสุด โดย admin
อ้างถึง
คือ อยากเขียนให้ เมื่อ equity มากกว่า balance เมื่อเริ่มต้น ตาม % ที่ตั้งไว้

แล้วให้ปิด order ทั้งหมด แล้วเริ่มเล่นใหม่ ด้วย balance ใหม่ ไม่ทราบว่า จะต้องเติมอย่างไร ครับ

โดย code ที่เขียน เป็นดังนี้ครับ

ผมแนะนำให้ทำ state machine ครับ

โค๊ด: [Select]
input InpGain=0.02;   //2%
int statecloseall=0;
double PercentGain=0;

PercentGain=AccountEquity()/AccountBalance()-1;
switch statecloseall:
{
case 0:
if(PercentGain>InpGain)
//statecloseall=100;//เปลี่ยนสถานะเพื่อทำการปิดเดอร์อีกครั้ง
break;
case 100:
//  .. do for loop closing order here...

 if(order_count()==0) statecloseall=0;//เปลี่ยนสถานะกลับไปเป็น 0 เริ่มต้นอีกครั้ง
break;

}

รูปแบบนี้จำทำการ lock ให้ for loop close order ให้หมด จริงๆ จนกว่าจะไม่มีออเดอร์เหลือ แล้วค่อยหยุด

ถ้าเอาไปใช้ลอยๆ ถ้า server ทำงานช้าก็จะปิดแค่ออเดอร์สองออเดอร์ ทำให้ equity เปลี่ยน ไม่ได้เกินกว่าค่าที่เรากำหนดไว้ พอปิดไปนิดหน่อยก็เลิกทำ เพราะว่า equity gain ไม่ถึง

ถ้าใช้ state machine ก็กำหนด ไปเลยว่า
state=0. เช็คว่ากำไรเกิน%หรือไม่ ถ้าใช่ให้ปิดออเดอร์ state=100
state=100. ไล่ปิดออเดอร์ไปเรื่อยๆ มี delay บ้างอะไรบ้างก็ยังทำงานไปเรื่อยๆ จนไม่เหลือออเดอร์ค้าง ก็เปลี่ยน state ไป =0


จากนั้นก็เริ่มใหม่

ลองทำดูครับ เอาไป adapt ได้หลายอย่าง
รับรองว่าไม่เหลืออะไรค้าง ทำงานได้สมบูรณื

 93 
 เมื่อ: ตุลาคม 10, 2017, 01:34:11 PM 
เริ่มโดย urza - กระทู้ล่าสุด โดย admin




โค๊ด: [Select]
if(Bid - OrderStopLoss() > 20*Point)
ลองเพิ่มว่า

โค๊ด: [Select]
double newsl=Bid-20*Point;
if(Bid - OrderStopLoss() > 20*Point && newsl!=OrderStopLoss())

ทำทั้งสองฝั่ง buy และ sell

เข้าใจว่าเจอ error modify error =1 คือ sl ที่จะโมดิฟายเข้าไปไม่ได้เปลี่ยนไปจากค่าเดิม


แก้เพิ่มอีกนิดว่าให้ new stop loss มากกว่า OrderStoploss() ปัจจุบัน สำหรับออเดอร์ buy
แก้เพิ่มอีกนิดว่าให้ new stop loss น้อยกว่า OrderStoploss() ปัจจุบัน สำหรับออเดอร์ sell
จะได้ค่า sloploss ที่วิ่งไปในทางเดียว และไม่ถอยกลับเมื่อ bid/ask ถอยลง


โค๊ด: [Select]
double newsl=Bid-20*Point;
if(Bid - OrderStopLoss() > 20*Point && newsl>OrderStopLoss())

 94 
 เมื่อ: ตุลาคม 08, 2017, 10:03:03 PM 
เริ่มโดย urza - กระทู้ล่าสุด โดย urza
void movetrailingstop()
{
   for(int i = OrdersTotal()-1;i>=0;i--)
   {
      keep = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber() == Greenred)
      {
         if(OrderProfit() > 0)
         {
            if(OrderType() == OP_BUY)
              {
               if(Bid - OrderOpenPrice() > 20*Point)
                  {
                     keep = OrderModify(OrderTicket(),OrderOpenPrice(),Bid-20*Point,OrderTakeProfit(),0,0);
                  }
               {
                  if(Bid - OrderStopLoss() > 20*Point)
                  {
                     keep = OrderModify(OrderTicket(),OrderOpenPrice(),Bid-20*Point,OrderTakeProfit(),0,0);
                  }
               }
            } 
            if(OrderType() == OP_SELL)
            { 
               if(OrderOpenPrice() - Ask > 20*Point)
               {
                  if(OrderStopLoss() == 0)
                  { 
                     if(OrderOpenPrice() > Ask + 20*Point)
                     {
                        keep = OrderModify(OrderTicket(),OrderOpenPrice(),Ask+20*Point,OrderTakeProfit(),0,0);
                     }
                  }
                  if(OrderStopLoss() > Ask + 20*Point)
                  {
                     keep = OrderModify(OrderTicket(),OrderOpenPrice(),Ask+20*Point,OrderTakeProfit(),0,0);
                  }
               }
            }
         }
      }
   }
}


void on tick ()
...........................
...........................
...........................

movetrailingstop()

if(............)
..............
..............
..............


บางครั้ง มันปิดติดลบ ครับ ไม่ทราบว่าเพราะอะไร

พอ run backtest แล้ว บางที มันขึ้น error ว่า

OrderModify error ด้วยครับ ไม่ทราบว่า เกี่ยวกันด้วยป่าวครับ

และอีกส่วนนึง

คือ อยากเขียนให้ เมื่อ equity มากกว่า balance เมื่อเริ่มต้น ตาม % ที่ตั้งไว้

แล้วให้ปิด order ทั้งหมด แล้วเริ่มเล่นใหม่ ด้วย balance ใหม่ ไม่ทราบว่า จะต้องเติมอย่างไร ครับ

โดย code ที่เขียน เป็นดังนี้ครับ

....................................................
....................................................
....................................................
....................................................
....................................................

extern double BalanceStart = 100000;

....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................

     movetrailingstop();
      if((AccountEquity()-BalanceStart) > (BalanceStart*1.2))
           for(int i = OrdersTotal()-1; i >= 0;i--)
               {if(OrderSymbol() == Symbol())
                  {if(OrderSelect(i,SELECT_BY_POS)==true)
                     {if(OrderType()==OP_BUY)
                        {keep = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0,0);}
                     {if(OrderType()==OP_SELL)
                        {keep = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,0);} 
                     {if(OrderType()==OP_SELLSTOP)
                        {keep = OrderDelete(OrderTicket());} 
                     {if(OrderType()==OP_BUYSTOP)
                        {keep = OrderDelete(OrderTicket());}}}}}}
               } 

ไม่รู้ว่าจะต้องคืนค่า BalanceStart  ยังไง สามารถใช้ return (BalanceStart) ไปเลยได้หรือไม่ครับ??

ขอบคุณล่วงหน้าครับ

 95 
 เมื่อ: ตุลาคม 08, 2017, 02:55:45 PM 
เริ่มโดย urza - กระทู้ล่าสุด โดย urza
ลอง log in เข้าบัญชี อื่นแล้ว ก็ยังเป็นครับ

แต่ยังไม่ได้ลองลบโปรแกรมแล้ว load ทุกอย่างใหม่

 96 
 เมื่อ: ตุลาคม 06, 2017, 08:05:58 AM 
เริ่มโดย admin - กระทู้ล่าสุด โดย admin
ที่มา. https://www.mql5.com/en/market/product/23647
Author:  Aleksandr Praslov
Published: 20 June 2017
Current version: 1.40

ฟรีจาก mql5

หมายเหตุก่อนใช้ต้องปรับได้ allow web request ก่อน

 97 
 เมื่อ: ตุลาคม 03, 2017, 10:06:00 PM 
เริ่มโดย urza - กระทู้ล่าสุด โดย admin
ลองแก้ ตามที่ ท่าน admin แนะนำแล้ว แต่ก็ยังเป็นเหมือนเดิมครับ เลยลองลด วันที่ backtest ลง

ข้ามตรงที่ error ไป ก็หายครับ เพียงแต่ วันที่ backtest กลับไปมันน้อยไปหน่อย

อยากแก้ให้หายไม่รู้ต้องทำไง ล้าง history ที่ load มา แล้ว download history มาใหม่ จะหายป่าวหว่า - -"

ลองเปลี่ยน account ที่ใช้เทสจะช่วยไหมครับ?

 98 
 เมื่อ: ตุลาคม 03, 2017, 07:55:16 PM 
เริ่มโดย urza - กระทู้ล่าสุด โดย urza
ลองแก้ ตามที่ ท่าน admin แนะนำแล้ว แต่ก็ยังเป็นเหมือนเดิมครับ เลยลองลด วันที่ backtest ลง

ข้ามตรงที่ error ไป ก็หายครับ เพียงแต่ วันที่ backtest กลับไปมันน้อยไปหน่อย

อยากแก้ให้หายไม่รู้ต้องทำไง ล้าง history ที่ load มา แล้ว download history มาใหม่ จะหายป่าวหว่า - -"

 99 
 เมื่อ: ตุลาคม 01, 2017, 09:57:51 PM 
เริ่มโดย admin - กระทู้ล่าสุด โดย admin
33.24

 100 
 เมื่อ: ตุลาคม 01, 2017, 09:57:19 PM 
เริ่มโดย admin - กระทู้ล่าสุด โดย admin
18.86

หน้า: 1 ... 8 9 [10]

หน้านี้ถูกสร้างขึ้นภายในเวลา 0.098 วินาที กับ 18 คำสั่ง