2 Star 5 Fork 4

航耍耍/mql4

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
暴风雨.mq4 4.49 KB
一键复制 编辑 原始数据 按行查看 历史
航耍耍 提交于 2021-11-09 08:24 . 123123123123
double FirstLots=0.1;
extern double MaxOrderNum=50;
extern double GivenPointClose=100;
extern double AimPointCloseAll=100;
extern int Slippage = 3;
extern int MagicNumber = 888888;
extern int MaxLots=20;
static int RecordTime;
static bool done=false;
int init() {
ObjectCreate("comment_label", OBJ_LABEL, 0, 0, 0);
ObjectSet("comment_label", OBJPROP_XDISTANCE, 50);
ObjectSet("comment_label", OBJPROP_YDISTANCE, 20);
ObjectSetText("comment_label", "紅之匯【暴風雨系統】辭黛", 20, "Arial", Red);
return (0);
}
int deinit() {
ObjectDelete("comment_label");
return (0);
}
int start() {
double HighIn4 = iHigh(Symbol(), 0, iHighest(Symbol(), 0, MODE_HIGH, 20, 1));
double LowIn4 = iLow(Symbol(), 0, iLowest(Symbol(), 0, MODE_LOW, 20, 1));
double HighIn2 = iHigh(Symbol(), 0, iHighest(Symbol(), 0, MODE_HIGH, 20, 1));
double LowIn2 = iLow(Symbol(), 0, iLowest(Symbol(), 0, MODE_LOW, 20, 1));
if (AccountFreeMargin() <= 100.0) {
Alert("No money!");
return (0);
}
if(GetTotalProfit()>AimPointCloseAll*Point*100000*FirstLots){
CloseAllOrder();
}
if(OrdersTotal()>=MaxOrderNum){
CloseAllGivenWinSell();
CloseAllGivenWinBuy();
}
if(Time[0]!=RecordTime){
RecordTime=Time[0];
done=false;
}
if (Bid < LowIn4 && done==false && OrdersTotal()<MaxOrderNum && AccountFreeMargin()>100){
MoneyManagement();
OrderSend(Symbol(), OP_BUY, FirstLots, NormalizeDouble(Ask, Digits),
Slippage, 0, 0, "Order Buy", MagicNumber, 0, Blue);
done=true;
}else if (Ask > HighIn4 && done==false && OrdersTotal()<MaxOrderNum && AccountFreeMargin()>100){
MoneyManagement();
OrderSend(Symbol(), OP_SELL, FirstLots, NormalizeDouble(Bid, Digits),
Slippage, 0, 0, "Order Sell", MagicNumber, 0, Red);
done=true;
}
if (Bid < LowIn2){
CloseAllWinSell();
}else if (Ask > HighIn2){
CloseAllWinBuy();
}
return (0);
}
void CloseAllOrder(){
bool SucceedClose = FALSE;
for (int j= OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(j,SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY)
OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), Slippage, Blue);
else if(OrderType()==OP_SELL)
OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slippage, Red);
}
}
double GetTotalProfit(){
double TotalProfit=0;
for (int j= OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(j,SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY || OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber)
TotalProfit += OrderProfit();
}
return (TotalProfit);
}
void CloseAllWinSell(){
bool SucceedClose = FALSE;
for (int j= OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(j,SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber && OrderProfit()>0)
SucceedClose=OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits),
Slippage, Red);
}
}
void CloseAllWinBuy(){
bool SucceedClose = FALSE;
for (int j= OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(j,SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber && OrderProfit()>0)
SucceedClose=OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits),
Slippage, Blue);
}
}
void CloseAllGivenWinSell(){
bool SucceedClose = FALSE;
for (int j= OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(j,SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber && OrderProfit()>GivenPointClose*Point*100000*FirstLots)
SucceedClose=OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits),
Slippage, Red);
}
}
void CloseAllGivenWinBuy(){
bool SucceedClose = FALSE;
for (int j= OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(j,SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber && OrderProfit()>GivenPointClose*Point*100000*FirstLots)
SucceedClose=OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits),
Slippage, Blue);
}
}
void MoneyManagement(){
if(AccountEquity()<100000){
FirstLots=0.1;
}else{
int times = AccountEquity()/50000;
FirstLots=0.1*times;
if(FirstLots>MaxLots)
FirstLots=MaxLots;
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/hangyejiadao_581/mql4.git
git@gitee.com:hangyejiadao_581/mql4.git
hangyejiadao_581
mql4
mql4
master

搜索帮助