5.20 Window functions窗口函数
关于当前图表窗日的一组函数。
5.20.1 HideTestlndicators隐藏指标
void HideTestlndicators(bool hide)
设置使用A能交易隐藏指标。在交易被测试以后打开相应的图表,标出的指标将不会出现在测试图表中。查看每个指标需应用当前隐藏的标记和第一个标记。
注意:必须注明只有这些指标才可以在测试图表中画出。
【参量】
hide—如果需要隐藏指标为TRUE,否则为FALSE。
【示例】
HideTestIndicators ( true );
MaCurrent=iMA( NULL,0,56,0,MODE_EMA , PRICE_CLOSE ,0 );
MaPrevious=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,1);
HideTestlndicators ( false );
5.20.2 Period使用周期
int Period)
返回使用周期(图表周期)的分钟总数。
【示例】
Print”时间周期”,Period ( ) ) ;
5.20.3 RefreshRates刷新预定义变量和系列数组的数据
bool RefreshRates()
刷新预定义变量和系列数组的数据。在智能交易计算时间过长时,这个功能可以自动更新数据。如果数据刷新,返回到TRUE;否则,返回到FALSE。只有在客户端内的数据不被更新。如果数据已经更新,接下来输人的行情也一样被更新。
智能交易和脚本只管理本身历史数据的复制本。在智能交易和脚本第一次开启的时候,当前的商品数据已经复制。每次开启智能或脚本时,最初的复制本会更新。智能和脚本运作时,数据可能已经过期。
【示例】


}
}
5.20.4 Symbol当前货币对
string Symbol()
当前货币对名称,返回字符串文本。
【示例】
int total=OrdersTotal);
for(int pos=0 ; pos<total ; pos++)
//因为此时可能平单或删除订单,检测选择结果!
if( OrderSelect( pos,SELECT_BY_POS)==false) continue;
if( OrderType()> OP_ SELL I OrderSymbol)!=Symbol))continue;
//执行过程…
}
5.20.5 Windowi3arsPerChart可见柱总数
int WindowBarsPerChart()
在图表上,函数返回可见柱总数。
【示例】
//对于可见柱工作。
int bars_ count=WindowBarsPerChart);
int bar=WindowFirstVisibleBar();
for( int i=0;i<bars_ count; i++,bar一)
{
//...
}
5.20.6 WindowExpertName智能交易系统名称
string WindowExpertName()
返回MQIA程序中独立执行智能交易、脚本、客户指标和数据库的名称。
【示例】
string name=WindowExpertN ame);
GlobalVariablesDeleteAll( name );
5.20.7 WindowFind 返回名称
int WindowFind( string name)
如果发现指标名称,函数返回包含特殊指标的窗口索引;否则返回
注意:当init()函数运行时,客户指标搜索到本身,则WindowFind)函数返回一1。
【参量】
name—指标简称。
【示例】
int win_idx=W indowFind”MACD( 12,26,9)”);
5.20.8 WindowFirstVisibIeBar第一个可见柱
int WindowFirstVisibleBar()
在当前图表窗口函数返回第一个可见柱。必须考虑到价格柱的逆序编号,即最后一个价格数组中的最后一个指示为零。最老的柱被索引为柱-1。如果第一个柱的编码为2或少于图表中可见柱的总数,意味着图表窗口没有被完整填充。
【示例】
//可见柱的工作
int bars count = WindowBarsPerChart();
int bar=W indowFirstVisibleBar();
for( int i=0;i<bars_ count; i++,bar一)
}
//...
}
5.20.9 WindowHandle窗口编号
int WindowHandle( string symbol,int timeframe)
返回包含特定图表的系统窗口。如果货币对和时间周期的图表暂时还没有开启,则显示为零。
【参量】
symbol—货币对名称。
timeframe—时间周期。可以是时间周期列举的任意值。零表示当前图表的时间周期。
【示例】
ant
if(win handle=win_handle!
W indowHandle”IjSDX",PERIOD_ H1);=0)
Pri nt ( ',发现带有USDX,H1的窗口。数组将会被立即复制。”
5.20.10 WindowlsVisible图表在子窗口中可见
bool WindowIsVisible( int index)
如果图表在子窗口中可见,返回’fRUE;否则,返回FALSE。子图表窗口可以隐藏于指标的可见属性位置。
【参量】
index一
【示例】
图表自窗口索引。
int maywin=WindowFind(”MyM.ACD");
if( maywin>一1&&WindowIsVisible( maywin )==true
Print( " MyMACD窗口可见”)
eISE'
Print( " MyMACD窗口未发现或不可见”);
5.20.11 WindowOnDropped取消窗口编号
int WindowOnDropped()
返回EA、指标、脚本被取消的窗口编号。当鼠标点击时生效。
注意:自定义指标在初始化过程中被取消,返回无效。
返回编号中,"0”为主窗口,从“1”开始都是指标窗口。加载一个窗口会
自动顺序分配一个编号。
参见WindowXOnDropped()、W indowYOnDropped)。
【示例】
if( WindowOnDropped()!=0)
}
Print(”指标’Mylndicator’必须被主图表窗口接受!”
return( false)
}
5.20.12 WindowPriceMax窗口中最大值
double WindowPriceMax( void index)
返回当前图表指定子窗口的最大垂直标度的值("0”为主菜单图表,指标子窗口的开始数字为“1" )。如果子窗口没有指定,最大价格标度的值将返回图表窗口。
参见WindowPriceMin(),WindowFirstVisibleBar()和W indowBarsPerChart
()。
【参量】
index—图表子窗口索引(0—主图表窗口)。
【示例】
double top=WindowPriceMax);
double bottom=WindowPriceMin);
datetime left=Time WindowFirstVisibleBar();
int right_bound=WindowFirsIVisibleBar()一R'indowBarsPerChart);
if( right_bound<0)right_ bound=0;
datetime right=Time right_bound〕+Period)*fi0;
//一一一一
ObjectCreate”Padding_ rect" ,OBJ_ RECTANGLE,O,left,top,right,bottom);
ObjectSet(Padding_rect"
ObjectSet(Padding_rect"
OBJPROP_COLOR,Blue);W indowRedraw)
5.20.13 WindowPriceMin窗口中最小值
double WindowPriceMin( void index)
返回当前图表指定子窗口的最小垂直标度的价格值("0”为主菜单图表,指标子窗口的开始数字为“1")。如果子窗口没有指定,最小价格标度的价格值将返回图表窗口。
参见WindowPriceMax ( ) , WindowFirstVisibleBar)和WindowBarsPer-Chart()。
【参量】
index—图表子窗日索引(0—主图表窗口)。
【示例】
double top=WindowYriceMax();
double bottom=W inflow-PriceMin);
datetime left=Time[ WindowFirstVisibleBar();
int right_f>ound=}G'indowFirstVisillr Bar()一}t indowBarsPerChart();
if( right_bound<0)right_ bound=0;
datetime right='fime} right_bound}+Period)*60;
//一一__
OhjectCreate(”Padding_ rect",OBJ_l3EC'TANGLE,0,1}"ft,top,right,bottom);
ObjectSet(”1'adding_rect", OBJPROP_BACK,true );
OhjectSet(”I'adding_rect",OBJPROP_(=()LOR,BIue);
W indowRedraw);
5.20.14 WindowPriceOnDropped窗口价格位移
double WindowPriceOnDropped()
返回窗口移动的价格区间。当鼠标拖动时生效。
注意:指标不适用。
【示例】
doubledatetimeWindowTimeOnDropped();
drop_priceW indowPriceOnDropped);
//一一一一
可能未指定(>0)zero)
if( drop_timeObjectCreate
ObjectCreate
,,价格下滑水平”,OBJ_HLINE ,0 , drop_price ) ;
”下滑时间”,OBJ_VLINE,O,drop_time) ;
5.20.15 WindowRedraw窗口刷新
void WindowRedraw()
重新画出当前图表。在货币对属性改变之后应用。
【示例】
//---一为货币对设置新属性
ObjectMove ( object_name 1 , 0 , Time } index },price );
ObjectSet( object_namel,OBJPROP_ANGLE,angle*2);
ObjectSet( object_namel,OBJPROP_FON'fSIZE,fontsize);
ObjectSet( line_nameOB-TPROP ANGLE
ObjectSet( line_nameOBJPROP_ TIME2,time2);
line_ angle
//
现在重画W in<IowRedraw
5.20.16 WindowScreenShot抓图
bool WindowScreenShot( string filename,int size_x,int size_y,void startbar,void chart_ scale,void chart_ mode)
以GIF文件形式保存当前图像。如果失败,返回FALSE。要了解详细错误信息,请查看GetLastError()函数。
图像被储存在terminal_dir,experts,files (terminal_dir,tester,files测试情况下)日录中或子目录中。
【参量】
filename——屏幕映像文件名称。
size x—size_y屏幕宽度映像点
start_ bar—第一个可见柱的屏幕映像。如果价格值设定为零,当前的第一个可见柱将被除去;如果价格值为负值,结束图的映像将会产生。
chart_ scale—屏幕映像水平的图标度。范围可以在0一5之间。如果没有值或者为负值,当前图表将被应用。
chart_ mode—图表显示模式。可以是以下价格值:
ICHART_BAR ( 是柱的次序);
CHART_CANDLE ( 是蜡烛柱的次序);
CHART_LINE (2是收盘价格线)。如果没有价格值或者为负值,图表会以当前模式显示。
【示例】
int lasterror=0;
//一一一一测试者平仓或多个仓
if( IsTestin}()&&ExtTradesCounter<TradesTotal())
{
// - --一检测WindowScreenShot
if!WindowScreenShot(”shots \tester"+ExtShotsCounter+”.gif" ,640,480))
lasterror=GetLastError();
else ExtShotsCounter++;
ExtTradesCounter=TradesTotal);
}
5.20.17 WindowTimeOnDropped窗口时间位移
datetime WindowTimeOnDropped()
返回窗口移动的时间区间。当鼠标拖动时生效。
注意:指标不适用。
【示例】
double drop-price=W indowPriceOnDropped);
datetime drop_time=W indowPriceOnDropped);

5.20.18 WindowsTotal指标窗口数
int WindowsTotal()
返回在图表中的指标窗口数(包括主图表)。
【示例】
Print”窗口数=”,WindowsTotal( ) ) ;
5.20.19 WindowXOnDropped窗ox轴位移
int WindowXOnDropped()
返回窗口X轴移动的像素。
注意:指标不适用。
参见WindowYOnDropped( )
【示例】
Print( "智能交易下滑点x =”
当鼠标拖动时生效。、WindowOnDropped)。
WindowXOnDropped(),“
Y=WindowYOnDropped
5.20.20 WindowYOnDropped窗p Y轴位移
int WindowYOnDropped()
返回窗口Y轴移动的像素。当鼠标拖动时生效。
注意:指标无效。
参见WindowXOnDropped ( ) , WindowPriceOnDropped)和WindowOn-Dropped()。
【示例】
Print”被获取智能交易到窗口的点、_” , WindowXOnDropped( ) ," y =” , WindowY-OnDropped));
WindowTimeOnDropped();