2 Star 5 Fork 4

航耍耍/mql4

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Hunter Scalper1.10_源码 - 副本.mq4 27.01 KB
一键复制 编辑 原始数据 按行查看 历史
航耍耍 提交于 2021-11-09 08:24 . 123123123123
//EA交易 => ...\MT4\MQL4\Experts
#property copyright "Copyright 2018,Zhu Feng"
#property link "QQ 297385640"
#property version "1.10"
#property strict
#property description "愛が理解できない \nQQ:297385640\n \n适用于EURAUD/EURCHF/USDCHF等货币对15分钟周期;请在ICMarket/TickMill/Pepperstone ECN账户中使用该EA\n \nPS:实盘使用前请先进行回测或模拟以了解其风险"
//------------------
extern double MaxSpread=4 ; //最大允许点差
extern double MaxSlippage=1 ; //最大允许滑点
extern string TradingSettings="以下时间为平台时间" ; //时间参数
extern int HourStart=22 ; //开始时间
extern int HourEnd=1 ; //关闭时间
extern double Lots=0.01 ; //固定手数
extern bool UseRisk=true ; //自动手数
extern double MaxRisk=2 ; //最大风险
extern int StopLoss=30 ; //止损点数
extern int TakeProfit=10 ; //止盈点数
string zong_1_st = "Hunter Scalper";
double zong_2_do = 1.0;
bool zong_3_bo = false;
string zong_4_st = "\n";
int zong_5_in = 4;
int zong_6_in = 0;
int zong_7_in = 0;
double zong_8_do = 1.0;
int zong_9_in = 0;
int zong_10_in = 0;
int zong_11_in = 0;
datetime zong_12_da = 0;
#import "stdlib.ex4"
string ErrorDescription( int mu_0_in);
#import
int init()
{
zong_5_in = Digits() ;
zong_8_do = MaxRisk ;
HideTestIndicators(true);
Comment("");
return(0);
}
//init <<==-------- --------
int start()
{
int lin_in_1;
int lin_in_2;
int lin_in_3;
int lin_in_4;
if ( TimeCurrent() > D'2018.12.31 12' )
{
//Alert("发现新版本,请联系作者更新");
//ExpertRemove();
}
if ( Bars < 10 )
{
Comment("Not enough bars");
return(0);
}
if ( zong_3_bo == true )
{
//Comment("EA Terminated.");
//return(0);
}
if ( ( zong_5_in == 3 || zong_5_in == 5 ) )
{
zong_2_do = 10.0 ;
}
if ( !(Ask>=iBands(NULL,0,20,2.0,0,4,2,0)) && !(iATR(NULL,0,14,0)>=zong_2_do * 15.0 * Point()) )
{
TimeMinute(TimeCurrent());
if ( ( ( HourStart < HourEnd && TimeHour(TimeCurrent()) >= HourStart && TimeHour(TimeCurrent()) < HourEnd ) || (HourStart > HourEnd && (TimeHour(TimeCurrent()) < HourEnd || TimeHour(TimeCurrent()) >= HourStart)) ) )
{
lin_in_1 = 0;
for (lin_in_2 = OrdersTotal() - 1 ; lin_in_2 >= 0 ; lin_in_2 = lin_in_2 - 1)
{
if ( OrderSelect(lin_in_2,SELECT_BY_POS,MODE_TRADES) )
{
if ( OrderSymbol() == Symbol() && OrderMagicNumber() == 1 )
{
lin_in_1 = lin_in_1 + 1;
}}
else
{
Print("OrderSend() error - ",ErrorDescription(GetLastError()));
}
}
if ( lin_in_1 < 1 )
{
if ( UseRisk == false )
{
lizong_11();
}
if ( UseRisk == true )
{
lizong_9();
}}}}
if ( !(Bid<=iBands(NULL,0,20,2.0,0,4,1,0)) && !(iATR(NULL,0,14,0)>=zong_2_do * 15.0 * Point()) )
{
TimeMinute(TimeCurrent());
if ( ( ( HourStart < HourEnd && TimeHour(TimeCurrent()) >= HourStart && TimeHour(TimeCurrent()) < HourEnd ) || (HourStart > HourEnd && (TimeHour(TimeCurrent()) < HourEnd || TimeHour(TimeCurrent()) >= HourStart)) ) )
{
lin_in_3 = 0;
for (lin_in_4 = OrdersTotal() - 1 ; lin_in_4 >= 0 ; lin_in_4 = lin_in_4 - 1)
{
if ( OrderSelect(lin_in_4,SELECT_BY_POS,MODE_TRADES) )
{
if ( OrderSymbol() == Symbol() && OrderMagicNumber() == 2 )
{
lin_in_3 = lin_in_3 + 1;
}}
else
{
Print("OrderSend() error - ",ErrorDescription(GetLastError()));
}
}
if ( lin_in_3 < 1 )
{
if ( UseRisk == false )
{
lizong_12();
}
if ( UseRisk == true )
{
lizong_10();
}}}}
lizong_7();
lizong_8();
return(0);
}
//start <<==-------- --------
int deinit()
{
return(0);
}
//deinit <<==-------- --------
void lizong_7()
{
int zi_1_in_si30si2[30][2];
int zi_2_in;
int zi_3_in;
int zi_4_in;
//----- -----
if ( Ask>=iMA(NULL,0,20,0,MODE_SMA,PRICE_MEDIAN,0) )
{
return;
}
if ( Ask - Bid<=MaxSpread * zong_2_do * Point() )
{
zi_2_in = OrdersTotal() ;
zi_3_in = 0 ;
for (zi_4_in = 0 ; zi_4_in < zi_2_in ; zi_4_in = zi_4_in + 1)
{
if ( ( OrderSelect(zi_4_in,SELECT_BY_POS,MODE_TRADES) && (OrderType() != 1 || OrderSymbol() != Symbol() || OrderMagicNumber() != 2) ) ) continue;
zi_1_in_si30si2[zi_3_in][0] = OrderOpenTime();
zi_1_in_si30si2[zi_3_in][1] = OrderTicket();
zi_3_in = zi_3_in + 1;
}
if ( zi_3_in > 1 )
{
ArrayResize(zi_1_in_si30si2,zi_3_in,0);
ArraySort(zi_1_in_si30si2,0,0,1);
}
for (zi_4_in = 0 ; zi_4_in < zi_3_in ; zi_4_in = zi_4_in + 1)
{
if ( OrderSelect(zi_1_in_si30si2[zi_4_in][1],SELECT_BY_TICKET,MODE_TRADES) != true || OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),MaxSlippage,Red) != false ) continue;
Print("OrderClose() error - ",ErrorDescription(GetLastError()));
}
}
}
//lizong_7 <<==-------- --------
void lizong_8()
{
int zi_1_in_si30si2[30][2];
int zi_2_in;
int zi_3_in;
int zi_4_in;
//----- -----
if ( Bid<=iMA(NULL,0,20,0,MODE_SMA,PRICE_MEDIAN,0) )
{
return;
}
if ( Ask - Bid<=MaxSpread * zong_2_do * Point() )
{
zi_2_in = OrdersTotal() ;
zi_3_in = 0 ;
for (zi_4_in = 0 ; zi_4_in < zi_2_in ; zi_4_in = zi_4_in + 1)
{
if ( ( OrderSelect(zi_4_in,SELECT_BY_POS,MODE_TRADES) && (OrderType() != 0 || OrderSymbol() != Symbol() || OrderMagicNumber() != 1) ) ) continue;
zi_1_in_si30si2[zi_3_in][0] = OrderOpenTime();
zi_1_in_si30si2[zi_3_in][1] = OrderTicket();
zi_3_in = zi_3_in + 1;
}
if ( zi_3_in > 1 )
{
ArrayResize(zi_1_in_si30si2,zi_3_in,0);
ArraySort(zi_1_in_si30si2,0,0,1);
}
for (zi_4_in = 0 ; zi_4_in < zi_3_in ; zi_4_in = zi_4_in + 1)
{
if ( OrderSelect(zi_1_in_si30si2[zi_4_in][1],SELECT_BY_TICKET,MODE_TRADES) != true || OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),MaxSlippage,Red) != false ) continue;
Print("OrderClose() error - ",ErrorDescription(GetLastError()));
}
}
}
//lizong_8 <<==-------- --------
void lizong_9()
{
double zi_1_do;
double zi_2_do;
double zi_3_do;
double zi_4_do;
double zi_5_do;
double zi_6_do;
int zi_7_in;
double zi_8_do;
double zi_9_do;
int zi_10_in;
bool zi_11_bo;
//----- -----
datetime lin_da_1;
datetime lin_da_2;
int lin_in_3;
lin_da_1 = TimeCurrent();
lin_da_2 = 0;
if ( OrdersHistoryTotal() > 0 )
{
for (lin_in_3 = OrdersHistoryTotal() - 1 ; lin_in_3 >= 0 ; lin_in_3=lin_in_3 - 1)
{
if ( OrderSelect(lin_in_3,SELECT_BY_POS,MODE_HISTORY) == true && OrderSymbol() == Symbol() && ( OrderMagicNumber() == 1 || OrderMagicNumber() == 2 ) )
{
if ( !(OrderProfit()<0.0) ) break;
lin_da_2 = OrderCloseTime();
break;
}
}
}
else
{
lin_da_2 = -3600;
}
if ( lin_da_1 < lin_da_2 + 3600 || Ask - Bid>MaxSpread * zong_2_do * Point() ) return;
zi_1_do = MarketInfo(Symbol(),15) ;
zi_2_do = 1000.0 ;
zi_3_do = AccountFreeMargin() / 100.0 * zong_8_do ;
if ( StopLoss == 0 )
{
Print("OrderSend() error - stoploss can not be zero");
}
zi_4_do = zi_3_do / StopLoss / zong_2_do ;
zi_5_do = 0.001 ;
zi_6_do = MarketInfo(Symbol(),23) ;
zi_7_in = 0 ;
while (zi_6_do<1.0)
{
zi_6_do = zi_6_do * MathPow(10.0,zi_7_in) ;
zi_7_in = zi_7_in + 1;
}
zi_5_do = NormalizeDouble(zi_4_do,zi_7_in - 1) ;
if ( zi_5_do<MarketInfo(Symbol(),23) )
{
zi_5_do = MarketInfo(Symbol(),23) ;
}
if ( zi_5_do>MarketInfo(Symbol(),25) )
{
zi_5_do = MarketInfo(Symbol(),25) ;
}
zi_8_do = Ask - StopLoss * zong_2_do * Point() ;
if ( StopLoss == 0 )
{
zi_8_do = 0.0 ;
}
zi_9_do = TakeProfit * zong_2_do * Point() + Ask ;
if ( TakeProfit == 0 )
{
zi_9_do = 0.0 ;
}
zi_10_in = -1 ;
zi_10_in = OrderSend(Symbol(),OP_BUY,zi_5_do,Ask,MaxSlippage,0.0,0.0,zong_1_st,1,0,Blue) ;
if ( zi_10_in > -1 )
{
if ( OrderSelect(zi_10_in,SELECT_BY_TICKET,MODE_TRADES) )
{
zi_11_bo = OrderModify(OrderTicket(),OrderOpenPrice(),zi_8_do,zi_9_do,0,Blue) ;
}
if ( zi_11_bo != false ) return;
Print("OrderModify() error - ",ErrorDescription(GetLastError()));
return;
}
Print("OrderSend() error - ",ErrorDescription(GetLastError()));
}
//lizong_9 <<==-------- --------
void lizong_10()
{
double zi_1_do;
double zi_2_do;
double zi_3_do;
double zi_4_do;
double zi_5_do;
double zi_6_do;
int zi_7_in;
double zi_8_do;
double zi_9_do;
int zi_10_in;
bool zi_11_bo;
//----- -----
datetime lin_da_1;
datetime lin_da_2;
int lin_in_3;
lin_da_1 = TimeCurrent();
lin_da_2 = 0;
if ( OrdersHistoryTotal() > 0 )
{
for (lin_in_3 = OrdersHistoryTotal() - 1 ; lin_in_3 >= 0 ; lin_in_3=lin_in_3 - 1)
{
if ( OrderSelect(lin_in_3,SELECT_BY_POS,MODE_HISTORY) == true && OrderSymbol() == Symbol() && ( OrderMagicNumber() == 1 || OrderMagicNumber() == 2 ) )
{
if ( !(OrderProfit()<0.0) ) break;
lin_da_2 = OrderCloseTime();
break;
}
}
}
else
{
lin_da_2 = -3600;
}
if ( lin_da_1 < lin_da_2 + 3600 || Ask - Bid>MaxSpread * zong_2_do * Point() ) return;
zi_1_do = MarketInfo(Symbol(),15) ;
zi_2_do = 1000.0 ;
zi_3_do = AccountFreeMargin() / 100.0 * zong_8_do ;
if ( StopLoss == 0 )
{
Print("OrderSend() error - stoploss can not be zero");
}
zi_4_do = zi_3_do / StopLoss / zong_2_do ;
zi_5_do = 0.001 ;
zi_6_do = MarketInfo(Symbol(),23) ;
zi_7_in = 0 ;
while (zi_6_do<1.0)
{
zi_6_do = zi_6_do * MathPow(10.0,zi_7_in) ;
zi_7_in = zi_7_in + 1;
}
zi_5_do = NormalizeDouble(zi_4_do,zi_7_in - 1) ;
if ( zi_5_do<MarketInfo(Symbol(),23) )
{
zi_5_do = MarketInfo(Symbol(),23) ;
}
if ( zi_5_do>MarketInfo(Symbol(),25) )
{
zi_5_do = MarketInfo(Symbol(),25) ;
}
zi_8_do = StopLoss * zong_2_do * Point() + Bid ;
if ( StopLoss == 0 )
{
zi_8_do = 0.0 ;
}
zi_9_do = Bid - TakeProfit * zong_2_do * Point() ;
if ( TakeProfit == 0 )
{
zi_9_do = 0.0 ;
}
zi_10_in = -1 ;
zi_10_in = OrderSend(Symbol(),OP_SELL,zi_5_do,Bid,MaxSlippage,0.0,0.0,zong_1_st,2,0,Red) ;
if ( zi_10_in > -1 )
{
if ( OrderSelect(zi_10_in,SELECT_BY_TICKET,MODE_TRADES) )
{
zi_11_bo = OrderModify(OrderTicket(),OrderOpenPrice(),zi_8_do,zi_9_do,0,Red) ;
}
if ( zi_11_bo != false ) return;
Print("OrderModify() error - ",ErrorDescription(GetLastError()));
return;
}
Print("OrderSend() error - ",ErrorDescription(GetLastError()));
}
//lizong_10 <<==-------- --------
void lizong_11()
{
double zi_1_do;
double zi_2_do;
int zi_3_in;
bool zi_4_bo;
//----- -----
datetime lin_da_1;
datetime lin_da_2;
int lin_in_3;
lin_da_1 = TimeCurrent();
lin_da_2 = 0;
if ( OrdersHistoryTotal() > 0 )
{
for (lin_in_3 = OrdersHistoryTotal() - 1 ; lin_in_3 >= 0 ; lin_in_3=lin_in_3 - 1)
{
if ( OrderSelect(lin_in_3,SELECT_BY_POS,MODE_HISTORY) == true && OrderSymbol() == Symbol() && ( OrderMagicNumber() == 1 || OrderMagicNumber() == 2 ) )
{
if ( !(OrderProfit()<0.0) ) break;
lin_da_2 = OrderCloseTime();
break;
}
}
}
else
{
lin_da_2 = -3600;
}
if ( lin_da_1 < lin_da_2 + 3600 || Ask - Bid>MaxSpread * zong_2_do * Point() ) return;
zi_1_do = Ask - StopLoss * zong_2_do * Point() ;
if ( StopLoss == 0 )
{
zi_1_do = 0.0 ;
}
zi_2_do = TakeProfit * zong_2_do * Point() + Ask ;
if ( TakeProfit == 0 )
{
zi_2_do = 0.0 ;
}
zi_3_in = -1 ;
zi_3_in = OrderSend(Symbol(),OP_BUY,Lots,Ask,MaxSlippage,0.0,0.0,zong_1_st,1,0,Blue) ;
if ( zi_3_in > -1 )
{
if ( OrderSelect(zi_3_in,SELECT_BY_TICKET,MODE_TRADES) )
{
zi_4_bo = OrderModify(OrderTicket(),OrderOpenPrice(),zi_1_do,zi_2_do,0,Blue) ;
}
if ( zi_4_bo != false ) return;
Print("OrderModify() error - ",ErrorDescription(GetLastError()));
return;
}
Print("OrderSend() error - ",ErrorDescription(GetLastError()));
}
//lizong_11 <<==-------- --------
void lizong_12()
{
double zi_1_do;
double zi_2_do;
int zi_3_in;
bool zi_4_bo;
//----- -----
datetime lin_da_1;
datetime lin_da_2;
int lin_in_3;
lin_da_1 = TimeCurrent();
lin_da_2 = 0;
if ( OrdersHistoryTotal() > 0 )
{
for (lin_in_3 = OrdersHistoryTotal() - 1 ; lin_in_3 >= 0 ; lin_in_3=lin_in_3 - 1)
{
if ( OrderSelect(lin_in_3,SELECT_BY_POS,MODE_HISTORY) == true && OrderSymbol() == Symbol() && ( OrderMagicNumber() == 1 || OrderMagicNumber() == 2 ) )
{
if ( !(OrderProfit()<0.0) ) break;
lin_da_2 = OrderCloseTime();
break;
}
}
}
else
{
lin_da_2 = -3600;
}
if ( lin_da_1 < lin_da_2 + 3600 || Ask - Bid>MaxSpread * zong_2_do * Point() ) return;
zi_1_do = StopLoss * zong_2_do * Point() + Bid ;
if ( StopLoss == 0 )
{
zi_1_do = 0.0 ;
}
zi_2_do = Bid - TakeProfit * zong_2_do * Point() ;
if ( TakeProfit == 0 )
{
zi_2_do = 0.0 ;
}
zi_3_in = -1 ;
zi_3_in = OrderSend(Symbol(),OP_SELL,Lots,Bid,MaxSlippage,0.0,0.0,zong_1_st,2,0,Red) ;
if ( zi_3_in > -1 )
{
if ( OrderSelect(zi_3_in,SELECT_BY_TICKET,MODE_TRADES) )
{
zi_4_bo = OrderModify(OrderTicket(),OrderOpenPrice(),zi_1_do,zi_2_do,0,Red) ;
}
if ( zi_4_bo != false ) return;
Print("OrderModify() error - ",ErrorDescription(GetLastError()));
return;
}
Print("OrderSend() error - ",ErrorDescription(GetLastError()));
}
//<<==lizong_12 <<==
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/hangyejiadao_581/mql4.git
git@gitee.com:hangyejiadao_581/mql4.git
hangyejiadao_581
mql4
mql4
master

搜索帮助