MQL4: 连续两阳/阴买/卖交易系统

一、交易策略

二、系统源码

//+------------------------------------------------------------------+
//|                                                     20180107.mq4 |
//|                                             Copyright 2017,CuiYi |
//|                                                1010333562@qq.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017,CuiYi"
#property link      "1010333562@qq.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
//----------- 外部变量 --------------

extern int MagicNumber = 123;

//----------- 计算现时仓位大小 ----------------------------

int CalculateCurrentOrder(string symbol)
	{
	int buys=0,sells=0;
	for(int i=0;i<OrdersTotal();i=i+1)
		{
		if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)	break;
		if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
			{
			if(OrderType()==OP_BUY) 	buys++;
			if(OrderType()==OP_SELL)	sells++;
			}
		}
	if(buys>0)	return(buys);
	else		return(-sells);
	}

//------------- 计算交易手数 ----------------------------

double lot=NormalizeDouble(AccountBalance()/5000.0,2);

//--------------- 开仓条件 ------------------------------

void CheckForOpen()
	{
	double P1,P2,P3,P4;
	int res;
	
	P1=iOpen("EURUSD",5,0);
	P2=iClose("EURUSD",5,0);
	P3=iOpen("EURUSD",5,1);
	P4=iClose("EURUSD",5,1);
	
	
	if(P2>P1 && P4>P3 && P2>P4)
		{
		res=OrderSend("EURUSD",OP_BUY,lot,Ask,3,0,0,"",MagicNumber,0,Blue);
		return;
		}
	
	if(P2<P1 && P4<P3 && P2<P4)
		{
		res=OrderSend("EURUSD",OP_SELL,lot,Bid,3,0,0,"",MagicNumber,0,Red);
		return;
		}
	}

//------------ 平仓条件 ---------------------------

void CheckForClose()
	{
	double P1,P2,P3,P4;
	
	P1=iOpen("EURUSD",5,0);
	P2=iClose("EURUSD",5,0);
	P3=iOpen("EURUSD",5,1);
	P4=iClose("EURUSD",5,1);
		
	for(int i=0;i<OrdersTotal();i++)
		{
		if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
		if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!="EURUSD") continue;
		
		if(OrderType()==OP_BUY)
			{
			if(P2<P4 || P2<P1)	
			OrderClose(OrderTicket(),lot,Bid,3,White);
			break;
			}
			
		if(OrderType()==OP_SELL)
			{
			if(P2>P4 || P2>P1)	
			OrderClose(OrderTicket(),lot,Bid,3,White);
			break;
			}
		}
	}

//----------- 控制流 ----------------------

void start()
	{
	if(Bars<100 || IsTradeAllowed()==false) return;
	if(CalculateCurrentOrder(Symbol())==0) CheckForOpen();
	else CheckForClose();
	}

转载于:https://my.oschina.net/u/3093769/blog/1604643

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要爬取mql5.com/zh/articles/mt5/page24网站的内容,首先需要分析该网站的反爬机制。 该网站可能会采取以下反爬策略: 1. User-Agent检测:网站会检测请求头中的User-Agent字段,如果User-Agent字段不符合浏览器的标准格式,则会拒绝请求。 2. 频率限制:网站可能会限制同一IP地址的请求频率,如果请求频率过高,则会拒绝请求。 为了解决这些反爬策略,我们可以采取以下措施: 1. 修改User-Agent字段:可以在请求头中添加User-Agent字段,并将其设置为浏览器的标准格式,以此来欺骗网站。 2. 使用代理IP:可以使用代理IP来隐藏真实IP地址,以此来避免频率限制。 3. 随机延时:在发送请求时,可以随机生成一个延时时间,以此来模拟人的行为,避免被网站识别为爬虫。 下面是使用Python代码示例,实现爬取mql5.com/zh/articles/mt5/page24网站内容并分别下载为.md文件: ```python import requests from bs4 import BeautifulSoup import time import random # 设置请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299' } # 设置代理IP proxies = { 'http': 'http://127.0.0.1:1080', 'https': 'http://127.0.0.1:1080' } # 爬取网页内容 def get_content(url): # 设置随机延时 time.sleep(random.uniform(1, 3)) try: response = requests.get(url, headers=headers, proxies=proxies) if response.status_code == 200: return response.text except requests.exceptions.RequestException as e: print(e) # 解析网页内容 def parse_content(html): soup = BeautifulSoup(html, 'html.parser') # 获取文章标题 title = soup.find('h1', class_='article-header__title').get_text() # 获取文章内容 content = soup.find('div', class_='article-body article-body__indent').get_text() # 将文章保存为.md文件 with open(title+'.md', 'w', encoding='utf-8') as f: f.write(content) # 爬取网站内容 def main(): for i in range(1, 25): url = 'https://www.mql5.com/zh/articles/mt5/page{}'.format(i) html = get_content(url) parse_content(html) if __name__ == '__main__': main() ``` 在代码中,我们设置了请求头和代理IP,并且在发送请求时添加了随机延时,以此来应对网站的反爬机制。最后将每个页面的内容保存为.md文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值