MT4开仓平仓自动截图脚本指标-汇有钱途

MT4开仓平仓自动截图脚本指标

开仓平仓自动截图指标非常实用,在记录交易日志和回顾分析过往交易时能节省很多工作。

这个指标在你开仓时自动截图,在图上标注进场点位。平仓时又进行一次截图,图中标注你的进场点位和平仓点位。截图过程不会产生任何干扰和影响你当前工作的行为。

具体使用方法是把这个指标插入到一个交易标的即可,例如欧元/美元的主图上。只需在某个货币对上使用这个指标,然后无论你交易任何一个品种,它都会自动截图。

截图保存的路径是:数据文件夹\MQL4\Files\ScreenShots,每个货币对和交易对象的截图都会存放在单独的文件夹里。图片以gif的格式保存,可以使用windows自带的“画图”工具来查看,如果你双击图片,默认会使用ie浏览器来打开。

使用这个自动截图指标一定要把你使用的模版名称改名为defaul(默认的意思),每个货币对以及交易对象的都要这个名称为defaul的模版如果你使用其他名称的模版,指标也会自动截图,但截图默认为柱状图,而不是大多数喜欢用的K线(蜡烛)图。下图就是默认的截图,密密麻麻的的不方便事后分析,而且不方便记录交易日志。

下图是使用defaul模版的截图,就非常清晰直观了,SELL ENTRY是进场做空点位,如果是买进则标注BUY ENTRY;平仓点位标注SELL EXIT,如果是做多交易平仓则标注BUY EXIT。进场点位用绿色虚线表示,平仓点位用红色虚线表示。你可以在截图空白处记录交易日志。对于本次交易,我的简要分析是太晚介入交易导致了失败。

有了这个指标,你完全不必再用其他文本文档来写交易日志,直接在截图上记录你的分析和心得,得失在什么地方,如何改进等。

指标的简单设置,默认截图是15分钟主图,根据你的模版来选择时间范围,你在1小时图上交易就选择1小时,其他时间框架同理。截图大小是1280*720。如果你使用屏幕较小的笔记本电脑,觉得截图尺寸太大,发邮件到987045327@qq.com,把你想要的尺寸告诉我,我更改后发指标给你。文末给出指标的源代码,加粗的数字就是截图大小,你可以随意更改。

指标下载:fxfulScreenShot.mq4自动截图指标

指标源代码:

//+------------------------------------------------------------------+
//| fxfulScreenShots.mq4 |
//| 汇有钱途 |
//| www.fxful.com |
//+------------------------------------------------------------------+
#property copyright "汇有钱途"
#property link " www.fxful.com"
#property version "1.00"
#property strict
#property indicator_chart_window

//+------------------------------------------------------------------+
#include <Arrays\ArrayInt.mqh>
#include <ChartObjects\ChartObjectsLines.mqh>

class ScreenShot
{
private:
CArrayInt m_list;
bool m_init;
int m_magic;
//string m_folder;
//int m_orders_total;
int m_period;
public:
ScreenShot(int magic_number,int period): m_init(false),
m_magic(magic_number),
//m_folder("screenshots\\"+Symbol()+"\\"),
//m_orders_total(-1),
m_period(period)
{}
void OnInit()
{
m_list.Clear();
m_init = false;
}

void Refresh()
{
if(!m_init)
{
Init();
return;
}
// check for new entries
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS)&& OrderType() < 2 &&(m_magic==0|| m_magic==OrderMagicNumber()))
{
if(m_list.SearchLinear(OrderTicket()) < 0)
{
m_list.Add(OrderTicket());
string folder = "screenshots\\"+OrderSymbol()+"\\";
string name = folder+OrderSymbol()+"_"+string(OrderTicket())+"_ENTRY.gif";
long chart = ChartOpen(OrderSymbol(),m_period);
CChartObjectHLine line;
line.Create(chart,"__templine__",0,OrderOpenPrice());
line.Style(STYLE_DASHDOTDOT);
line.Description("ENTRY");
line.Color(clrGreen);
ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true);
ChartScreenShot(chart,name,1280,720);
ChartClose(chart);
}
}
}
// check for new exits
for(int i=m_list.Total()-1;i>=0;i--)
{
bool found = false;
for(int j=0;j<OrdersTotal();j++)
{
if(OrderSelect(j,SELECT_BY_POS) && OrderTicket() == m_list[i])
{
found = true;
break;
}
}
if(!found)
{
string folder = "screenshots\\";
CChartObjectHLine entry,exit;
long chart = 0;
if(OrderSelect(m_list[i],SELECT_BY_TICKET) && OrderType() <2)
{
string type = OrderType() == OP_BUY ? "BUY" : "SELL";
chart = ChartOpen(OrderSymbol(),m_period);
folder = "screenshots\\"+OrderSymbol()+"\\";
exit.Create(chart,"__templine__",0,OrderClosePrice());
exit.Style(STYLE_DASHDOTDOT);
exit.Description(type+" EXIT");
entry.Create(chart,"__entrytempline__",0,OrderOpenPrice());
entry.Style(STYLE_DASHDOTDOT);
entry.Description(type+" ENTRY");
entry.Color(clrGreen);
ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true);
string name = folder+OrderSymbol()+"_"+string(m_list[i])+"_EXIT.gif";
ChartScreenShot(chart,name,1280,720);
ChartClose(chart);
}
m_list.Delete(i);
}
}
}
protected: void Init()
{
m_init=true;
m_list.Clear();
for(int i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS) && (m_magic==0|| m_magic==OrderMagicNumber()))
m_list.Add(OrderTicket());
}
};
//+------------------------------------------------------------------+
//--- global vars
input int magic = 0;
input ENUM_TIMEFRAMES chart_period = PERIOD_M15;
ScreenShot screen_shot(magic,chart_period);
//---
//+------------------------------------------------------------------+
int OnInit()
{
EventSetTimer(1);
screen_shot.OnInit();
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
screen_shot.Refresh();
Comment("外汇交易分析网 www.fxful.com");
return(rates_total);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
screen_shot.OnInit();
EventKillTimer();
}

void OnTimer()
{
screen_shot.Refresh();
}

本文由 汇有钱途 作者:admin 发表,其版权均为 汇有钱途 所有,文章内容系作者个人观点,不代表 汇有钱途 对观点赞同或支持。如需转载,请注明文章来源。

发表评论