发表于:2010-07-25 00:47只看该作者
2楼
这个有点意思,能说详细点吗?
韬客社区www.talkfx.co
3楼
登录MT4后打开"工具\MQ语言编辑器,打开ATR指标,将下文替代原来的文本,另存为balance,编译。
然后从自定义指标中寻找balance。
//+------------------------------------------------------------------+
//| ATR.mq4 |
//| Copyright ?2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int AtrPeriod=14;
//---- buffers
double Balance;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 1 additional buffer used for counting.
IndicatorBuffers(1);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Balance);
//---- name for DataWindow and indicator subwindow label
short_name="Balance";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
SetIndexDrawBegin(0,AtrPeriod);
IndicatorDigits(Digits-2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Average True Range |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
//----
if(Bars<=AtrPeriod) return(0);
//---- initial zero
if(counted_bars<1)
for(i=1;i<=AtrPeriod;i++) Balance[Bars-i]=0.0;
//----
Balance[0]=AccountBalance();
i=0;
//
while(i<100)
{
//当日统计
//
double profit=0;
//
for(int j=HistoryTotal()-1;j>=0;j--) //由近而远
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==false) break;
//
int shift=iBarShift(Symbol(),PERIOD_D1,OrderCloseTime());
//
if(shift>i) break;
if(shift==i && OrderProfit()<0.76*Balance) profit+=OrderProfit();
}
//
Balance[i+1]=Balance-profit;
//
if(j<=0) break;
i++;
}
//
return(0);
}
//+------------------------------------------------------------------+
[ 本帖最后由 macro 于 2010-7-25 11:17 编辑 ]
5楼
对于“一周一决”的中长线投资者,可将 int shift=iBarShift(Symbol(),PERIOD_D1,OrderCloseTime());
中的PERIOD_D1改为PERIOD_W1
或改为Period(),则按K线周期决算。
[ 本帖最后由 macro 于 2010-7-25 10:47 编辑 ]
韬客社区www.talkfx.co
发表于:2010-07-25 03:01只看该作者
6楼
我记得mt里面有自带,自己生成的曲线
在资金账户一栏
韬客社区www.talkfx.co
7楼
//当日统计
//
double profit=0;
//
for(int j=HistoryTotal()-1;j>=0;j--) //由近而远
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==false) break;
//
int shift=iBarShift(Symbol(),PERIOD_D1,OrderCloseTime());
//
if(shift>i) break;
if(shift==i && OrderProfit()<0.76*Balance) profit+=OrderProfit();
}
奇怪,这一段丢掉了几个字符,怎么也加不上去:
if(shift==i && OrderProfit()<0.76*Balance) profit+=OrderProfit();
0.76*Balance
[i]
[ 本帖最后由 macro 于 2010-7-25 11:14 编辑 ]
韬客社区www.talkfx.co
发表于:2010-07-25 03:16只看该作者
8楼
代码里有两处Balance,
数组变量不能这样用的,编译通不过,应
为
Balance[0]
或别的数组元素
?
。
------------------------------------------------------------------------------------------ if(shift==i && OrderProfit()<0.76*Balance
) profit+=OrderProfit(); } // Balance[i+1]=Balance
-profit; // ------------------------------------------------------------------------------------------ 由于论坛的原因,拷贝粘贴后几乎每行都有论坛自动添进乱码,费了好大的劲来修改它。 如果在软件讨论区,就可以直接上传文件。
数组变量不能这样用的,编译通不过,应
为
Balance[0]
或别的数组元素
?
。
------------------------------------------------------------------------------------------ if(shift==i && OrderProfit()<0.76*Balance
) profit+=OrderProfit(); } // Balance[i+1]=Balance
-profit; // ------------------------------------------------------------------------------------------ 由于论坛的原因,拷贝粘贴后几乎每行都有论坛自动添进乱码,费了好大的劲来修改它。 如果在软件讨论区,就可以直接上传文件。
看年线,设损赢,玄孙去收银。
发表于:2010-07-25 03:18只看该作者
9楼
是 Balance[.i.] ? (去掉.)
看年线,设损赢,玄孙去收银。
发表于:2010-07-25 03:23只看该作者
10楼
成功了。谢谢。
[ 本帖最后由 挖金者 于 2010-7-25 11:27 编辑 ]Balance_Indicator.png
看年线,设损赢,玄孙去收银。
发表于:2010-07-25 03:56只看该作者
12楼
看年线,设损赢,玄孙去收银。
发表于:2010-07-25 12:09只看该作者
13楼
韬客社区www.talkfx.co