Please help me

Indicators coded by community members
Message
Author
gaoxuewu
Posts: 2
Joined: Tue Oct 14, 2014 9:53 am

Please help me

#1 Postby gaoxuewu » Tue Oct 14, 2014 10:27 am

This is a MT4 indicator, please help me to translate into Forex Tester 2 indicators. Thank you sincerely!



//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2012, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "鱼儿编程 QQ:276687220"
#property link"http://babelfish.taobao.com/"
#property indicator_chart_window
input double 判断间隔点数=10;
input string 左位置识别名称="A";
input string 右位置识别名称="B";
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum JSFS
{
算柱子数目=1,算交易量=2
};
input JSFS 计算方式=1;
input double 柱子数放大缩小倍数=1;
input double 交易量放大缩小倍数=0.5;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum WZSB
{
显示靠左=1,显示靠中=3,显示靠右=2
};
input WZSB 显示位置=1;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum DSXS
{
左单边=1,右单边=2,左右双边=3
};
input DSXS 显示方式=3;

input int 文字距离1=5;
input int 文字距离2=3;
input double 字体位置比例=0.8;
input double 字体间隔比例=0.02;
input int 字体大小=10;
input color 字体颜色=clrWhite;
input double 竖矩形高度=8;
input color 竖矩形颜色=clrBlue;

input color 色块颜色1=clrRed;
input color 色块颜色2=clrYellow;
input color 色块颜色3=clrBlue;

input color 色块颜色4=clrCadetBlue;
input color 色块颜色5=clrDarkOrchid;
input color 色块颜色6=clrYellowGreen;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
IndicatorShortName("20140823 TB woaililincun");
IndicatorDigits(Digits+1);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//----

for(int i=ObjectsTotal();i>=0;i--)
{
if(
StringFind(ObjectName(i),"开始位置",0)==0
|| StringFind(ObjectName(i),"结束位置",0)==0
|| StringFind(ObjectName(i),"20140823",0)==0
)
{
ObjectDelete(ObjectName(i));
i=ObjectsTotal();
}
}
//----
}
//+------------------------------------------------------------------+
//| 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[])
{
//---

for(int ix=0;ix<100;ix++)
if(ObjectFind(左位置识别名称+ix)!=-1)
{
int 开始位置=iBarShift(Symbol(),0,ObjectGet(左位置识别名称+ix,OBJPROP_TIME1));
if(ObjectFind(右位置识别名称+ix)==-1)
int 结束位置=0;
else
结束位置=iBarShift(Symbol(),0,ObjectGet(右位置识别名称+ix,OBJPROP_TIME1));

double 交易量=0;
for(int ixxx=WindowFirstVisibleBar();ixxx>=0;ixxx--)
交易量+=Volume[ixxx];

if(交易量!=0)
double 交易量放大缩小倍数X=WindowFirstVisibleBar()/交易量*交易量放大缩小倍数;

double 趋势空间=MathAbs(Close[结束位置]-Open[开始位置]);

if(显示位置==1)
int 初始位置=开始位置;
if(显示位置==2)
初始位置=结束位置;
if(显示位置==3)
初始位置=(开始位置+结束位置)/2;


if(
(ObjectFind("开始位置"+ix)==-1 || Time[开始位置]!=ObjectGet("开始位置"+ix,OBJPROP_TIME1))
|| (ObjectFind("结束位置"+ix)==-1 || Time[结束位置]!=ObjectGet("结束位置"+ix,OBJPROP_TIME1))
)
for(double ixx2=WindowPriceMin(0);ixx2<=WindowPriceMax(0);ixx2=ixx2+判断间隔点数*Point)
{
int 阴=0,阳=0,阴上影=0,阴下影=0,阳上影=0,阳下影=0,总=0,总上影=0,总下影=0;
double 阴交易量=0,阳交易量=0,阴上影交易量=0,阴下影交易量=0,阳上影交易量=0,阳下影交易量=0,总交易量=0,总上影交易量=0,总下影交易量=0;

for(int ixx=开始位置;ixx>=结束位置;ixx--)
{
if(Close[ixx]>=Open[ixx])
{
if(MathMin(Close[ixx],Open[ixx])<=ixx2 && MathMax(Close[ixx],Open[ixx])>=ixx2)
阳++;
if(High[ixx]>=ixx2 && MathMax(Close[ixx],Open[ixx])<=ixx2)
阳上影++;
if(Low[ixx]<=ixx2 && MathMin(Close[ixx],Open[ixx])>=ixx2)
阳下影++;
if(MathMin(Close[ixx],Open[ixx])<=ixx2 && MathMax(Close[ixx],Open[ixx])>=ixx2)
阳交易量=阳交易量+Volume[ixx];
if(High[ixx]>=ixx2 && MathMax(Close[ixx],Open[ixx])<=ixx2)
阳上影交易量=阳上影交易量+Volume[ixx];
if(Low[ixx]<=ixx2 && MathMin(Close[ixx],Open[ixx])>=ixx2)
阳下影交易量=阳下影交易量+Volume[ixx];
}
else
{
if(MathMin(Close[ixx],Open[ixx])<=ixx2 && MathMax(Close[ixx],Open[ixx])>=ixx2)
阴++;
if(High[ixx]>=ixx2 && MathMax(Close[ixx],Open[ixx])<=ixx2)
阴上影++;
if(Low[ixx]<=ixx2 && MathMin(Close[ixx],Open[ixx])>=ixx2)
阴下影++;
if(MathMin(Close[ixx],Open[ixx])<=ixx2 && MathMax(Close[ixx],Open[ixx])>=ixx2)
阴交易量=阴交易量+Volume[ixx];
if(High[ixx]>=ixx2 && MathMax(Close[ixx],Open[ixx])<=ixx2)
阴上影交易量=阴上影交易量+Volume[ixx];
if(Low[ixx]<=ixx2 && MathMin(Close[ixx],Open[ixx])>=ixx2)
阴下影交易量=阴下影交易量+Volume[ixx];
}
}

总=阳+阴;
总上影=阳上影+阴上影;
总下影=阳下影+阴下影;
总交易量=阳交易量+阴交易量;
总上影交易量=阳上影交易量+阴上影交易量;
总下影交易量=阳下影交易量+阴下影交易量;

if(计算方式==1)
{
总=总*柱子数放大缩小倍数;
总上影=总上影*柱子数放大缩小倍数;
总下影=总下影*柱子数放大缩小倍数;
阴=阴*柱子数放大缩小倍数;
阳=阳*柱子数放大缩小倍数;
阴上影=阴上影*柱子数放大缩小倍数;
阴下影=阴下影*柱子数放大缩小倍数;
阳上影=阳上影*柱子数放大缩小倍数;
阳下影=阳下影*柱子数放大缩小倍数;
}

if(计算方式==2)
{
总交易量=总交易量;
总上影交易量=总上影交易量;
总下影交易量=总下影交易量;
阴交易量=阴交易量;
阳交易量=阳交易量;
阴上影交易量=阴上影交易量;
阴下影交易量=阴下影交易量;
阳上影交易量=阳上影交易量;
阳下影交易量=阳下影交易量;
}

if(计算方式==1)
{
if(显示方式==1)
{

画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置+总,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置+总,初始位置+总+总上影,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置+总+总上影,初始位置+总+总上影+总下影,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);
}

if(显示方式==2)
{

画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置-总,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置-总,初始位置-总-总上影,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置-总-总上影,初始位置-总-总上影-总下影,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);
}

if(显示方式==3)
{
画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置+阳,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置+阳,初始位置+阳+阳上影,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置+阳+阳上影,初始位置+阳+阳上影+阳下影,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);

画矩形("20140823-12X"+ix+"X"+ixx2,0,初始位置,初始位置-阴,ixx2,ixx2+判断间隔点数*Point,色块颜色4,1);
画矩形("20140823-22X"+ix+"X"+ixx2,0,初始位置-阴,初始位置-阴-阴上影,ixx2,ixx2+判断间隔点数*Point,色块颜色5,1);
画矩形("20140823-32X"+ix+"X"+ixx2,0,初始位置-阴-阴上影,初始位置-阴-阴上影-阴下影,ixx2,ixx2+判断间隔点数*Point,色块颜色6,1);
}
}

if(计算方式==2)
{
if(显示方式==1)
{
画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置+总交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置+总交易量*交易量放大缩小倍数X,初始位置+总交易量*交易量放大缩小倍数X+总上影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置+总交易量*交易量放大缩小倍数X+总上影交易量*交易量放大缩小倍数X,初始位置+总交易量*交易量放大缩小倍数X+总上影交易量*交易量放大缩小倍数X+总下影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);
}

if(显示方式==2)
{
画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置-总交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置-总交易量*交易量放大缩小倍数X,初始位置-总交易量*交易量放大缩小倍数X-总上影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置-总交易量*交易量放大缩小倍数X-总上影交易量*交易量放大缩小倍数X,初始位置-总交易量*交易量放大缩小倍数X-总上影交易量*交易量放大缩小倍数X-总下影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);
}

if(显示方式==3)
{
画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置+阳交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置+阳交易量*交易量放大缩小倍数X,初始位置+阳交易量*交易量放大缩小倍数X+阳上影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置+阳交易量*交易量放大缩小倍数X+阳上影交易量*交易量放大缩小倍数X,初始位置+阳交易量*交易量放大缩小倍数X+阳上影交易量*交易量放大缩小倍数X+阳下影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);

画矩形("20140823-12X"+ix+"X"+ixx2,0,初始位置,初始位置-阴交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色4,1);
画矩形("20140823-22X"+ix+"X"+ixx2,0,初始位置-阴交易量*交易量放大缩小倍数X,初始位置-阴交易量*交易量放大缩小倍数X-阴上影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色5,1);
画矩形("20140823-32X"+ix+"X"+ixx2,0,初始位置-阴交易量*交易量放大缩小倍数X-阴上影交易量*交易量放大缩小倍数X,初始位置-阴交易量*交易量放大缩小倍数X-阴上影交易量*交易量放大缩小倍数X-阴下影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色6,1);
}
}
}

double 阳X=0,阴X=0;
double 阳空间X=0,阴空间X=0;
for(int ixp=开始位置;ixp>=结束位置;ixp--)
{
if(Close[ixp]>=Open[ixp])
{
阳X++;
阳空间X+=(Close[ixp]-Open[ixp])/Point;
}
else
{
阴X++;
阴空间X+=(-Close[ixp]+Open[ixp])/Point;
}
}

竖行画("趋势空间"+DoubleToStr(趋势空间/Point,0),初始位置,4+"X"+ix+"X");
竖行画("阳柱"+阳X+"支",初始位置+文字距离1+文字距离2,5+"X"+ix+"X");
竖行画("空间"+阳空间X,初始位置+文字距离1,6+"X"+ix+"X");
竖行画("阴柱"+阴X+"支",初始位置-文字距离1,7+"X"+ix+"X");
竖行画("空间"+阴空间X,初始位置-文字距离1-文字距离2,8+"X"+ix+"X");

if(MathMax(MathMax(阳空间X,阴空间X),趋势空间/Point)!=0)
if(MathMax(阳X,阴X)!=0)
{
double 上下=WindowPriceMax(0)-WindowPriceMin(0);
画矩形("20140823-9X"+ix,0,初始位置+1,初始位置-1,上下*字体位置比例+WindowPriceMin(0),
上下*字体位置比例+WindowPriceMin(0)+趋势空间/Point/MathMax(MathMax(阳空间X,阴空间X),趋势空间/Point)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

画矩形("20140823-10X"+ix,0,初始位置+文字距离1+文字距离2+1,初始位置+文字距离1+文字距离2-1,上下*字体位置比例+WindowPriceMin(0),
上下*字体位置比例+WindowPriceMin(0)+阳X/MathMax(阳X,阴X)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

画矩形("20140823-11X"+ix,0,初始位置+文字距离1+1,初始位置+文字距离1-1,上下*字体位置比例+WindowPriceMin(0),
上下*字体位置比例+WindowPriceMin(0)+阳空间X/MathMax(MathMax(阳空间X,阴空间X),趋势空间/Point)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

画矩形("20140823-12X"+ix,0,初始位置-文字距离1+1,初始位置-文字距离1-1,上下*字体位置比例+WindowPriceMin(0),
上下*字体位置比例+WindowPriceMin(0)+阴X/MathMax(阳X,阴X)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

画矩形("20140823-13X"+ix,0,初始位置-文字距离1-文字距离2+1,初始位置-文字距离1-文字距离2-1,上下*字体位置比例+WindowPriceMin(0),
上下*字体位置比例+WindowPriceMin(0)+阴空间X/MathMax(MathMax(阳空间X,阴空间X),趋势空间/Point)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);
}

laber0("开始位置"+ix,0,0,Time[开始位置],0,0,0,0);
laber0("结束位置"+ix,0,0,Time[结束位置],0,0,0,0);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
void 竖行画(string 内容X,int 位置,string 区分)
{
string 内容=内容X;
string 内容拆分[100];

for(int ix=0;ix<=30;ix++)
内容拆分[ix]="";

for(int ixp=0;ixp<StringLen(内容);ixp++)
{
内容拆分[ixp]=StringSubstr(内容,ixp,1);
}

double 上下=WindowPriceMax(0)-WindowPriceMin(0);

for(int ixp2=StringLen(内容)+10;ixp2>=0;ixp2--)
{
if(位置>=0)
datetime timexx=Time[位置];
else
timexx=Time[0]-位置*Period()*60;
laber0("20140823-"+区分+"X"+ixp2,内容拆分[StringLen(内容)-ixp2],字体颜色,timexx,上下*字体位置比例+WindowPriceMin(0)+ixp2*上下*字体间隔比例,字体大小,ANCHOR_UPPER,0);
}

}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void laber0(string name,string txt,color 颜色,datetime 时间,double 价位,int 字体大小,int 定位,int 窗口)
{
ObjectDelete(name);
ObjectCreate(name,OBJ_TEXT,窗口,时间,价位);
ObjectSetText(name,txt,字体大小,"Times New Roman",颜色);
ObjectSetInteger(0,name,OBJPROP_ANCHOR,定位);
//ObjectSetDouble(0,name,OBJPROP_ANGLE,90);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void 画矩形(string 名称,int 窗口,int 时间1,int 时间2,double 价位1,double 价位2,color 颜色,int 标识码)
{
if(时间1>=0)
时间1=Time[时间1];
else
时间1=Time[0]-时间1*Period()*60;

if(时间2>=0)
时间2=Time[时间2];
else
时间2=Time[0]-时间2*Period()*60;

if(ObjectFind(名称+标识码)==-1)
{
ObjectDelete(名称+标识码);
ObjectCreate(名称+标识码,OBJ_RECTANGLE,窗口,时间1,价位1,时间2,价位2);
ObjectSet(名称+标识码,OBJPROP_COLOR,颜色);
}

if(ObjectGet(名称+标识码,OBJPROP_TIME1)!=时间1)
ObjectSet(名称+标识码,OBJPROP_TIME1,时间1);
if(ObjectGet(名称+标识码,OBJPROP_TIME2)!=时间2)
ObjectSet(名称+标识码,OBJPROP_TIME2,时间2);
if(ObjectGet(名称+标识码,OBJPROP_PRICE1)!=价位1)
ObjectSet(名称+标识码,OBJPROP_PRICE1,价位1);
if(ObjectGet(名称+标识码,OBJPROP_PRICE2)!=价位2)
ObjectSet(名称+标识码,OBJPROP_PRICE2,价位2);
}
//+------------------------------------------------------------------+

gaoxuewu
Posts: 2
Joined: Tue Oct 14, 2014 9:53 am

Re: Please help me

#2 Postby gaoxuewu » Wed Oct 15, 2014 5:41 am

How no one listen to my request this help? So, Can I pay about $60. If there is, please quote.

lilincun
Posts: 2
Joined: Thu Sep 04, 2014 9:33 am

Re: Please help me

#3 Postby lilincun » Thu Dec 11, 2014 8:16 am

Which Mr Ken help, I am willing to pay $100.

Stonev
Posts: 204
Joined: Thu Jan 28, 2010 2:20 pm

Re: Please help me

#4 Postby Stonev » Thu Dec 11, 2014 1:52 pm

Hello,
i can help,
but i can use only english letters.
we can solve this, i think.

Alexey
Coding & Converting

lilincun
Posts: 2
Joined: Thu Sep 04, 2014 9:33 am

Re: Please help me

#5 Postby lilincun » Fri Dec 12, 2014 6:02 am

A: hello,
Use English letters can be accepted.
However, logical relationship can't wrong.
Details will be subject to upload attachments indicators. (see MT4 applications the appended drawings)
After successful translation.
I will use the MASTER CARD credit CARD payment of $100.
Please provide your payment methods.
Thank you very much!



//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2012, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "鱼儿编程 QQ:276687220"
#property link"http://babelfish.taobao.com/"
#property indicator_chart_window
input double 判断间隔点数=10;
input string 左位置识别名称="A";
input string 右位置识别名称="B";
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum JSFS
{
算柱子数目=1,算交易量=2
};
input JSFS 计算方式=1;
input double 柱子数放大缩小倍数=1;
input double 交易量放大缩小倍数=0.5;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum WZSB
{
显示靠左=1,显示靠中=3,显示靠右=2
};
input WZSB 显示位置=1;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum DSXS
{
左单边=1,右单边=2,左右双边=3
};
input DSXS 显示方式=3;

input int 文字距离1=5;
input int 文字距离2=3;
input int 文字距离3=3;
input int 文字距离4=3;
input double 字体位置比例=0.8;
input double 字体间隔比例=0.02;
input int 字体大小=10;
input color 字体颜色=clrWhite;
input double 竖矩形高度=8;
input color 竖矩形颜色=clrBlue;

input color 色块颜色1=clrRed;
input color 色块颜色2=clrYellow;
input color 色块颜色3=clrBlue;

input color 色块颜色4=clrCadetBlue;
input color 色块颜色5=clrDarkOrchid;
input color 色块颜色6=clrYellowGreen;
double max阳=0,max阴=0;
double 阳空间X2=0,阴空间X2=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
IndicatorShortName("20140823 TB woaililincun");
IndicatorDigits(Digits+1);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//----

for(int i=ObjectsTotal();i>=0;i--)
{
if(
StringFind(ObjectName(i),"开始位置",0)==0
|| StringFind(ObjectName(i),"结束位置",0)==0
|| StringFind(ObjectName(i),"20140823",0)==0
)
{
ObjectDelete(ObjectName(i));
i=ObjectsTotal();
}
}
//----
}
//+------------------------------------------------------------------+
//| 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[])
{
//---

for(int ix=0;ix<100;ix++)
if(ObjectFind(左位置识别名称+ix)!=-1)
{
int 开始位置=iBarShift(Symbol(),0,ObjectGet(左位置识别名称+ix,OBJPROP_TIME1));
if(ObjectFind(右位置识别名称+ix)==-1)
int 结束位置=0;
else
结束位置=iBarShift(Symbol(),0,ObjectGet(右位置识别名称+ix,OBJPROP_TIME1));

double 交易量=0;
for(int ixxx=WindowFirstVisibleBar();ixxx>=0;ixxx--)
交易量+=Volume[ixxx];

if(交易量!=0)
double 交易量放大缩小倍数X=WindowFirstVisibleBar()/交易量*交易量放大缩小倍数;

double 趋势空间=MathAbs(Close[结束位置]-Open[开始位置]);

if(显示位置==1)
int 初始位置=开始位置;
if(显示位置==2)
初始位置=结束位置;
if(显示位置==3)
初始位置=(开始位置+结束位置)/2;


if(
(ObjectFind("开始位置"+ix)==-1 || Time[开始位置]!=ObjectGet("开始位置"+ix,OBJPROP_TIME1))
|| (ObjectFind("结束位置"+ix)==-1 || Time[结束位置]!=ObjectGet("结束位置"+ix,OBJPROP_TIME1))
)
{
max阳=0;
max阴=0;
阳空间X2=0;
阴空间X2=0;
}

if(
(ObjectFind("开始位置"+ix)==-1 || Time[开始位置]!=ObjectGet("开始位置"+ix,OBJPROP_TIME1))
|| (ObjectFind("结束位置"+ix)==-1 || Time[结束位置]!=ObjectGet("结束位置"+ix,OBJPROP_TIME1))
)
for(double ixx2=WindowPriceMin(0);ixx2<=WindowPriceMax(0);ixx2=ixx2+判断间隔点数*Point)
{

int 阴=0,阳=0,阴上影=0,阴下影=0,阳上影=0,阳下影=0,总=0,总上影=0,总下影=0;
double 阴交易量=0,阳交易量=0,阴上影交易量=0,阴下影交易量=0,阳上影交易量=0,阳下影交易量=0,总交易量=0,总上影交易量=0,总下影交易量=0;

for(int ixx=开始位置;ixx>=结束位置;ixx--)
{
if(Close[ixx]>=Open[ixx])
{
if(MathMin(Close[ixx],Open[ixx])<=ixx2 && MathMax(Close[ixx],Open[ixx])>=ixx2)
阳++;
if(High[ixx]>=ixx2 && MathMax(Close[ixx],Open[ixx])<=ixx2)
阳上影++;
if(Low[ixx]<=ixx2 && MathMin(Close[ixx],Open[ixx])>=ixx2)
阳下影++;
if(MathMin(Close[ixx],Open[ixx])<=ixx2 && MathMax(Close[ixx],Open[ixx])>=ixx2)
阳交易量=阳交易量+Volume[ixx];
if(High[ixx]>=ixx2 && MathMax(Close[ixx],Open[ixx])<=ixx2)
阳上影交易量=阳上影交易量+Volume[ixx];
if(Low[ixx]<=ixx2 && MathMin(Close[ixx],Open[ixx])>=ixx2)
阳下影交易量=阳下影交易量+Volume[ixx];
}
else
{
if(MathMin(Close[ixx],Open[ixx])<=ixx2 && MathMax(Close[ixx],Open[ixx])>=ixx2)
阴++;
if(High[ixx]>=ixx2 && MathMax(Close[ixx],Open[ixx])<=ixx2)
阴上影++;
if(Low[ixx]<=ixx2 && MathMin(Close[ixx],Open[ixx])>=ixx2)
阴下影++;
if(MathMin(Close[ixx],Open[ixx])<=ixx2 && MathMax(Close[ixx],Open[ixx])>=ixx2)
阴交易量=阴交易量+Volume[ixx];
if(High[ixx]>=ixx2 && MathMax(Close[ixx],Open[ixx])<=ixx2)
阴上影交易量=阴上影交易量+Volume[ixx];
if(Low[ixx]<=ixx2 && MathMin(Close[ixx],Open[ixx])>=ixx2)
阴下影交易量=阴下影交易量+Volume[ixx];
}
}

总=阳+阴;
总上影=阳上影+阴上影;
总下影=阳下影+阴下影;
总交易量=阳交易量+阴交易量;
总上影交易量=阳上影交易量+阴上影交易量;
总下影交易量=阳下影交易量+阴下影交易量;

if(计算方式==1)
{
总=总*柱子数放大缩小倍数;
总上影=总上影*柱子数放大缩小倍数;
总下影=总下影*柱子数放大缩小倍数;
阴=阴*柱子数放大缩小倍数;
阳=阳*柱子数放大缩小倍数;
阴上影=阴上影*柱子数放大缩小倍数;
阴下影=阴下影*柱子数放大缩小倍数;
阳上影=阳上影*柱子数放大缩小倍数;
阳下影=阳下影*柱子数放大缩小倍数;
}

if(计算方式==2)
{
总交易量=总交易量;
总上影交易量=总上影交易量;
总下影交易量=总下影交易量;
阴交易量=阴交易量;
阳交易量=阳交易量;
阴上影交易量=阴上影交易量;
阴下影交易量=阴下影交易量;
阳上影交易量=阳上影交易量;
阳下影交易量=阳下影交易量;
}

if(计算方式==1)
{

if(max阳==0 || max阳<阳+阳上影+阳下影)
max阳=阳+阳上影+阳下影;
if(max阴==0 || max阴<阴+阴上影+阴下影)
max阴=阴+阴上影+阴下影;

阳空间X2+=阳+阳上影+阳下影;
阴空间X2+=阴+阴上影+阴下影;

if(显示方式==1)
{

画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置+总,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置+总,初始位置+总+总上影,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置+总+总上影,初始位置+总+总上影+总下影,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);
}

if(显示方式==2)
{

画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置-总,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置-总,初始位置-总-总上影,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置-总-总上影,初始位置-总-总上影-总下影,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);
}

if(显示方式==3)
{
画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置+阳,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置+阳,初始位置+阳+阳上影,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置+阳+阳上影,初始位置+阳+阳上影+阳下影,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);

画矩形("20140823-12X"+ix+"X"+ixx2,0,初始位置,初始位置-阴,ixx2,ixx2+判断间隔点数*Point,色块颜色4,1);
画矩形("20140823-22X"+ix+"X"+ixx2,0,初始位置-阴,初始位置-阴-阴上影,ixx2,ixx2+判断间隔点数*Point,色块颜色5,1);
画矩形("20140823-32X"+ix+"X"+ixx2,0,初始位置-阴-阴上影,初始位置-阴-阴上影-阴下影,ixx2,ixx2+判断间隔点数*Point,色块颜色6,1);
}
}

if(计算方式==2)
{
if(max阳==0 || max阳<阳交易量+阳上影交易量+阳下影交易量)
max阳=阳交易量+阳上影交易量+阳下影交易量;
if(max阴==0 || max阴<阴交易量+阴上影交易量+阴下影交易量)
max阴=阴交易量+阴上影交易量+阴下影交易量;


阳空间X2+=阳交易量*交易量放大缩小倍数X+阳上影交易量*交易量放大缩小倍数X+阳下影交易量*交易量放大缩小倍数X;
阴空间X2+=阴交易量*交易量放大缩小倍数X+阴上影交易量*交易量放大缩小倍数X+阴下影交易量*交易量放大缩小倍数X;


if(显示方式==1)
{
画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置+总交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置+总交易量*交易量放大缩小倍数X,初始位置+总交易量*交易量放大缩小倍数X+总上影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置+总交易量*交易量放大缩小倍数X+总上影交易量*交易量放大缩小倍数X,初始位置+总交易量*交易量放大缩小倍数X+总上影交易量*交易量放大缩小倍数X+总下影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);
}

if(显示方式==2)
{
画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置-总交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置-总交易量*交易量放大缩小倍数X,初始位置-总交易量*交易量放大缩小倍数X-总上影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置-总交易量*交易量放大缩小倍数X-总上影交易量*交易量放大缩小倍数X,初始位置-总交易量*交易量放大缩小倍数X-总上影交易量*交易量放大缩小倍数X-总下影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);
}

if(显示方式==3)
{
画矩形("20140823-1X"+ix+"X"+ixx2,0,初始位置,初始位置+阳交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色1,1);
画矩形("20140823-2X"+ix+"X"+ixx2,0,初始位置+阳交易量*交易量放大缩小倍数X,初始位置+阳交易量*交易量放大缩小倍数X+阳上影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色2,1);
画矩形("20140823-3X"+ix+"X"+ixx2,0,初始位置+阳交易量*交易量放大缩小倍数X+阳上影交易量*交易量放大缩小倍数X,初始位置+阳交易量*交易量放大缩小倍数X+阳上影交易量*交易量放大缩小倍数X+阳下影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色3,1);

画矩形("20140823-12X"+ix+"X"+ixx2,0,初始位置,初始位置-阴交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色4,1);
画矩形("20140823-22X"+ix+"X"+ixx2,0,初始位置-阴交易量*交易量放大缩小倍数X,初始位置-阴交易量*交易量放大缩小倍数X-阴上影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色5,1);
画矩形("20140823-32X"+ix+"X"+ixx2,0,初始位置-阴交易量*交易量放大缩小倍数X-阴上影交易量*交易量放大缩小倍数X,初始位置-阴交易量*交易量放大缩小倍数X-阴上影交易量*交易量放大缩小倍数X-阴下影交易量*交易量放大缩小倍数X,ixx2,ixx2+判断间隔点数*Point,色块颜色6,1);
}
}
}

double 阳X=0,阴X=0;
double 阳空间X=0,阴空间X=0;

for(int ixp=开始位置;ixp>=结束位置;ixp--)
{
if(Close[ixp]>=Open[ixp])
{
阳X++;
阳空间X+=(Close[ixp]-Open[ixp])/Point;

}
else
{
阴X++;
阴空间X+=(-Close[ixp]+Open[ixp])/Point;

}
}

竖行画("趋势空间"+DoubleToStr(趋势空间/Point,0),初始位置,4+"X"+ix+"X");
竖行画("阳柱"+阳X+"支",初始位置+文字距离1+文字距离2,5+"X"+ix+"X");
竖行画("空间"+阳空间X,初始位置+文字距离1,6+"X"+ix+"X");
竖行画("阴柱"+阴X+"支",初始位置-文字距离1,7+"X"+ix+"X");
竖行画("空间"+阴空间X,初始位置-文字距离1-文字距离2,8+"X"+ix+"X");

if(阳空间X2>阴空间X2 && 阴空间X2!=0)
竖行画("能量"+DoubleToStr((阳空间X2/阴空间X2-1)*100,2)+"%",初始位置+文字距离1+文字距离2+文字距离3,9+"X"+ix+"X");

if(阳空间X2<阴空间X2 && 阳空间X2!=0)
竖行画("能量"+DoubleToStr((阴空间X2/阳空间X2-1)*100,2)+"%",初始位置-文字距离1-文字距离2-文字距离3,10+"X"+ix+"X");

竖行画("",初始位置+文字距离1+文字距离2+文字距离3+文字距离4,11+"X"+ix+"X");
竖行画("",初始位置-文字距离1-文字距离2-文字距离3-文字距离4,12+"X"+ix+"X");

if(max阳>max阴 && max阴!=0)
竖行画("能量焦点"+DoubleToStr((max阳/max阴-1)*100,2)+"%",初始位置+文字距离1+文字距离2+文字距离3+文字距离4,11+"X"+ix+"X");

if(max阳<max阴 && max阳!=0)
竖行画("能量焦点"+DoubleToStr((max阴/max阳-1)*100,2)+"%",初始位置-文字距离1-文字距离2-文字距离3-文字距离4,12+"X"+ix+"X");

if(MathMax(MathMax(阳空间X,阴空间X),趋势空间/Point)!=0)
if(MathMax(阳X,阴X)!=0)
{
double 上下=WindowPriceMax(0)-WindowPriceMin(0);
画矩形("20140823-9X"+ix,0,初始位置+1,初始位置-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+趋势空间/Point/MathMax(MathMax(阳空间X,阴空间X),趋势空间/Point)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

画矩形("20140823-10X"+ix,0,初始位置+文字距离1+文字距离2+1,初始位置+文字距离1+文字距离2-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+阳X/MathMax(阳X,阴X)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

画矩形("20140823-11X"+ix,0,初始位置+文字距离1+1,初始位置+文字距离1-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+阳空间X/MathMax(MathMax(阳空间X,阴空间X),趋势空间/Point)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

画矩形("20140823-12X"+ix,0,初始位置-文字距离1+1,初始位置-文字距离1-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+阴X/MathMax(阳X,阴X)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

画矩形("20140823-13X"+ix,0,初始位置-文字距离1-文字距离2+1,初始位置-文字距离1-文字距离2-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+阴空间X/MathMax(MathMax(阳空间X,阴空间X),趋势空间/Point)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

ObjectDelete("20140823-14X"+ix+""+0);
ObjectDelete("20140823-15X"+ix+""+0);

if(阳空间X2<阴空间X2 && 阳空间X2!=0)
if((阴空间X2/阳空间X2-1)<=1)
画矩形("20140823-14X"+ix,0,初始位置-文字距离1-文字距离2-文字距离3+1,初始位置-文字距离1-文字距离2-文字距离3-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+(阴空间X2/阳空间X2-1)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

if(阳空间X2>阴空间X2 && 阴空间X2!=0)
if((阳空间X2/阴空间X2-1)<=1)
画矩形("20140823-15X"+ix,0,初始位置+文字距离1+文字距离2+文字距离3+1,初始位置+文字距离1+文字距离2+文字距离3-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+(阳空间X2/阴空间X2-1)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

ObjectDelete("20140823-16X"+ix+""+0);
ObjectDelete("20140823-17X"+ix+""+0);

if(max阳<max阴 && max阳!=0)
if((max阴/max阳-1)<=1)
画矩形("20140823-16X"+ix,0,初始位置-文字距离1-文字距离2-文字距离3-文字距离4+1,初始位置-文字距离1-文字距离2-文字距离3-文字距离4-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+(max阴/max阳-1)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

if(max阳>max阴 && max阴!=0)
if((max阳/max阴-1)<=1)
画矩形("20140823-17X"+ix,0,初始位置+文字距离1+文字距离2+文字距离3+文字距离4+1,初始位置+文字距离1+文字距离2+文字距离3+文字距离4-1,上下*字体位置比例+WindowPriceMin(0),上下*字体位置比例+WindowPriceMin(0)+(max阳/max阴-1)*竖矩形高度*上下*字体间隔比例,竖矩形颜色,0);

}

laber0("开始位置"+ix,0,0,Time[开始位置],0,0,0,0);
laber0("结束位置"+ix,0,0,Time[结束位置],0,0,0,0);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
void 竖行画(string 内容X,int 位置,string 区分)
{
string 内容=内容X;
string 内容拆分[100];

for(int ix=0;ix<=30;ix++)
内容拆分[ix]="";

for(int ixp=0;ixp<StringLen(内容);ixp++)
{
内容拆分[ixp]=StringSubstr(内容,ixp,1);
}

double 上下=WindowPriceMax(0)-WindowPriceMin(0);

for(int ixp2=StringLen(内容)+10;ixp2>=0;ixp2--)
{
if(位置>=0)
datetime timexx=Time[位置];
else
timexx=Time[0]-位置*Period()*60;
laber0("20140823-"+区分+"X"+ixp2,内容拆分[StringLen(内容)-ixp2],字体颜色,timexx,上下*字体位置比例+WindowPriceMin(0)+ixp2*上下*字体间隔比例,字体大小,ANCHOR_UPPER,0);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void laber0(string name,string txt,color 颜色,datetime 时间,double 价位,int 字体大小,int 定位,int 窗口)
{
if(txt=="" || txt==EMPTY_VALUE || txt==NULL)
{
ObjectDelete(name);
return;
}

ObjectDelete(name);
ObjectCreate(name,OBJ_TEXT,窗口,时间,价位);
ObjectSetText(name,txt,字体大小,"Times New Roman",颜色);
ObjectSetInteger(0,name,OBJPROP_ANCHOR,定位);
//ObjectSetDouble(0,name,OBJPROP_ANGLE,90);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void 画矩形(string 名称,int 窗口,int 时间1,int 时间2,double 价位1,double 价位2,color 颜色,int 标识码)
{
if(时间1>=0)
时间1=Time[时间1];
else
时间1=Time[0]-时间1*Period()*60;

if(时间2>=0)
时间2=Time[时间2];
else
时间2=Time[0]-时间2*Period()*60;

if(ObjectFind(名称+标识码)==-1)
{
ObjectDelete(名称+标识码);
ObjectCreate(名称+标识码,OBJ_RECTANGLE,窗口,时间1,价位1,时间2,价位2);
ObjectSet(名称+标识码,OBJPROP_COLOR,颜色);
}

if(ObjectGet(名称+标识码,OBJPROP_TIME1)!=时间1)
ObjectSet(名称+标识码,OBJPROP_TIME1,时间1);
if(ObjectGet(名称+标识码,OBJPROP_TIME2)!=时间2)
ObjectSet(名称+标识码,OBJPROP_TIME2,时间2);
if(ObjectGet(名称+标识码,OBJPROP_PRICE1)!=价位1)
ObjectSet(名称+标识码,OBJPROP_PRICE1,价位1);
if(ObjectGet(名称+标识码,OBJPROP_PRICE2)!=价位2)
ObjectSet(名称+标识码,OBJPROP_PRICE2,价位2);
}
//+------------------------------------------------------------------+


Return to “Indicators”

Who is online

Users browsing this forum: No registered users and 7 guests