ขอถามต่อครับ 2 ฟังก์ชั่นของผมไม่ยอมทำงานครับ ช่วยดูให้หน่อยครับ
โค้ดการตรวจสอบเวลาการเปิดออเดอร์นานเกินกำหนดครับ
โดยตรวจสอบออเดอร์ล่าสุด ว่าเปิดนานเกินที่กำหนดหรือไม่
ถ้านานเกินกว่ากำหนด ให้ไปตรวจสอบว่า Profit ทั้งหมดเป็นบวกมั้ย
ถ้าบวกมากกว่า 0 ให้ปิดออเดอร์ทั้งหมดเลย
ถ้าลบก็ไม่ต้องทำอะไร
เช่น ถ้าเรากำหนด CloseOrderTime = 2
extern int CloseOrderTime = 0;
//+------------------------------------------------------------------+
//| validate Overtime Order to Close ฟังก์ชั้นตรวจสอบเวลา |
//+------------------------------------------------------------------+
int CloseOrderTimeed(){
datetime time1,time2;
int type,timeh1,timeh2;
for(int i=OrdersTotal()-1;i<=0;i--){
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if(OrderSymbol()==Symbol()){
type = OrderType();
if((type==OP_BUY) || (type==OP_SELL)){
time1 = OrderOpenTime();
time2 = TimeCurrent();
time2 = time2-time1;
timeh1 = CloseOrderTime*3600;
timeh2 = TimeHour(time2);
if(timeh2>timeh1){
double profit = AccountProfit();
int cPrice=(CountOrder(OP_BUY)+CountOrder(OP_BUY)-1)*abs;
if(cPrice<0)cPrice=0;
if(profit>cPrice){
//--|||
for(i=OrdersTotal()-1;i<=0;i--){
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if(OrderSymbol()==Symbol()){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
type = OrderType();
if(type==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow);
if(type==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
if(type!=OP_SELL && type!=OP_BUY)OrderDelete(OrderTicket());
}
}
//--|||
}
}
}
}
}
return(0);
}
ฟังก์ชั่น กำหนดความเสี่ยง ถ้ากำหนด 10
ให้ฟังก์ชั่นไปตรวจสอบการขาดทุนเท่าที่เรากำหนด
โดยเอาเงินทุนที่ของเราไปคิด
ถ้าติดลบถึงที่เรากำหนด ก็จะปิดออเดอร์ทั้งหมด
extern double Risk = 0;//10%
//+------------------------------------------------------------------+
//| Calculate Risk |
//+------------------------------------------------------------------+
int RiskOrder(){
Print("RiskOrder() Not: 001");
double profit = AccountProfit();
if(profit<0){
double persen = Risk/100;
int type,wasted = AccountFreeMargin()*persen;
profit = MathAbs(profit);
if(profit>=wasted){
//Close Order
Print("--------------------RiskOrder--------------------------");
for(int i=OrdersTotal()-1;i<=0;i--){
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if(OrderSymbol()==Symbol()){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
type = OrderType();
if(type==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow);
if(type==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
if(type!=OP_SELL && type!=OP_BUY)OrderDelete(OrderTicket());
}
}
}
}
//---- wait for 10 seconds
//Sleep(10000);
return(0);
}