[Nhờ Vả] Cần sửa code giúp

[Nhờ Vả] Cần sửa code giúp

[Nhờ Vả] Cần sửa code giúp

linhlinh

Active Member
67
41
chào các Bác trong diễn đàn
Bác nào sửa giúp em code này để nó chỉ thực hiện 1 giao dịch trên 1 nến (với bất kỳ khung thời gian )
Em cảm ơn .
Chúc các bác kiếm thật nhiều pipipipipppppppppssssssss.......

extern int MagicNumber=10001;
extern double Lots =0.1;
extern double StopLoss=5;
extern double TakeProfit=2;
extern int TrailingStop=0;
extern int Slippage=2;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+

int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if( TotalOrdersCount()==0 )

{
int result=0;
if(xx) Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA Bid_Ask",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
if(zz) // Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA Bid_Ask",MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
}
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;
}
return (result);
}
 

Giới thiệu sách Trading hay
Thực Hành Phân tích Fibonacci

Tác giả sách là cựu trader quản lý quỹ kiêm học giả CMT. Sách đoạt giải và được xuất bản bởi Bloomberg Press. Sách khái quát từ cơ bản đến chuyên sâu về FIbonacci Trading
chào các Bác trong diễn đàn
Bác nào sửa giúp em code này để nó chỉ thực hiện 1 giao dịch trên 1 nến (với bất kỳ khung thời gian )
Em cảm ơn .
Chúc các bác kiếm thật nhiều pipipipipppppppppssssssss.......

extern int MagicNumber=10001;
extern double Lots =0.1;
extern double StopLoss=5;
extern double TakeProfit=2;
extern int TrailingStop=0;
extern int Slippage=2;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+

int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if( TotalOrdersCount()==0 )

{
int result=0;
if(xx) Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA Bid_Ask",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
if(zz) // Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA Bid_Ask",MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
}
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;
}
return (result);
}
Bạn chỉ cần đặt giá trị là if(open) là được,nếu bạn để nến là close thì 1 cây nến nó sẽ vào nhiều lần..
 
Code này chưa có logic xử lý điều kiện vào lệnh nên yêu cầu hỗ trợ của bạn sẽ gây ra lỗi khác khi bạn ráp điều kiện vào lệnh vô code đó nha.

Để làm được theo như kỳ vọng của bạn thì tạo thêm 1 biến để chứa giá trị cây nến mà bạn vào lệnh cuối cùng (theo phút là chắc nhất) và trong điều kiện vào lệnh thì bạn kiểm tra thêm điều kiện này là ok.

Nếu bạn biết code chút chút thì mò tài liệu hướng dẫn của MQL4 là ra hà, cách lấy giá trị phút của cây nến. Ngược lại bạn không biết code thì đặt hàng luôn cho người khác code, đừng ráng code mà đốt tiền vì không kiểm soát hết logic thực thi của EA.
 
Bác thêm đoạn code này trước các lệnh BUY/ SELL nhé

//--- go trading only for first tiks of new bar
if(Volume[0]>1) return;
//--- get orders
while(IsTradeContextBusy())
Sleep(100);
 

BÌNH LUẬN MỚI NHẤT

  • Mạc An trong Phân tích Forex - Vàng - Hàng hóa 342 Xem / 16 Trả lời
  • captainfx trong Chuyện bên lề 740 Xem / 1 Trả lời
  • DuongHuy trong Phân tích Forex - Vàng - Hàng hóa 179 Xem / 6 Trả lời
  • TraderLC trong Hội Trader giao dịch Quỹ 2,242 Xem / 32 Trả lời
  • AdBlock Detected

    We get it, advertisements are annoying!

    Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

    Back
    Bên trên