2010-05-07 15:34:58| 分类: 默认分类 | 标签: |字号大中小 订阅
// 云里雾里ZigzagPoints(已译待再理解)
#property show_inputs // 显示
extern string startDate ="2010.01.01"; // 手工填写数据开始日期
extern string stopDate ="2010.3.26"; // 手工填写数据结否日期
//+------------------------------------------------------------------+
int start()
{
if (Period()!=PERIOD_H1) // 如果时间框采用小于小时线
{
Alert("不可少于1小时周期"); // 报警
return; // 返回
}
int i, first, next, firstPointBar, lastPointBar; // 定义变量
firstPointBar =iBarShift(NULL,0,StrToTime(startDate)); // 首点棒
lastPointBar =iBarShift(NULL,0,StrToTime(stopDate )); // 尾点棒
double breaking =0; // 突破价设为 0
i =firstPointBar; // i从首点棒开始
while (breaking==0.0) // 当突破价等于0时
{
breaking =iCustom(NULL,0,"Zigzag",12,5,3,0,i); // 突破价价赋为 取之字转向第i个值
i++; // 将i加一
}
i--; // 将i减一
first =i; // 将道次赋为 i
Print("Time=", TimeToStr(Time[first])," price=", breaking); // 打印( 时间为:首次时间; 价格为:突破价 )
breaking =0.0; // 将突破价价价 赋为0
i =first-1; // 将i赋为 首次的前一根
while (breaking==0.0) // 当 突破价等于0时
{
breaking =iCustom(NULL,0,"Zigzag",12,5,3,0,i); // 突破价赋值为 取之字转向第i个值
i--; // 将i减一
}
i++; // 将i加一
next =i; // 将下次赋为 i
Print("Time=", TimeToStr(Time[next])," price=", breaking); // 打印( 时间为:下次时间; 价格为:突破价 )
double a, b; // 定义变量
double y1, y2; // 定义变量
y1 =iCustom(NULL,0,"Zigzag",12,5,3,0,first); // 取之字转向第首次的值
y2 =iCustom(NULL,0,"Zigzag",12,5,3,0,next ); // 取之字转向第下次的值
a =(y1-y2)/(first-next); // 速率等于 两值差幅度 除以 该两段时间段
b =y1-a*first; // 将y1加上 速率乘以首次
double startPrice =a*firstPointBar+b; // 开始价格赋为 速率乘以首点棒 再加B
breaking =0; // 将突破价设为 0
i =lastPointBar; // i赋为尾点棒
while (breaking==0.0) // 当突破价等于0时
{
breaking =iCustom(NULL,0,"Zigzag",12,5,3,0,i); // 突破价赋为 取之字转向第i个值
i++; //
}
i--; //
first =i; //
Print("Time=", TimeToStr(Time[first])," price=", breaking);
breaking =0.0; //
i =first-1; //
while (breaking==0.0) //
{
breaking =iCustom(NULL,0,"Zigzag",12,5,3,0,i); //
i--; //
}
i++; //
next =i; //
Print("Time=", TimeToStr(Time[next])," price=", breaking);
y1 =iCustom(NULL,0,"Zigzag",12,5,3,0,first); //
y2 =iCustom(NULL,0,"Zigzag",12,5,3,0,next ); //
a =(y1-y2)/(first-next); //
b =y1-a*first; //
double stopPrice =a*lastPointBar+b; // 停损价赋为
Print("时间1",TimeToStr(Time[firstPointBar])," price=",startPrice);// 打印
Print("时间2",TimeToStr(Time[lastPointBar])," price=",stopPrice); // 打印
double Summ; // 定义变量 和
double lastpeak =startPrice; // 最后峰值
double currZZ; // 定义变量
for (i=firstPointBar; i>=lastPointBar; i--) // 从首点棒到尾点棒递减循环
{
currZZ =iCustom(NULL,0,"Zigzag",12,5,3,0,i); // 取之字转向的第i个值
if (currZZ !=0) // 如果该值不为 0
{
Summ +=MathAbs(currZZ-lastpeak); // 累积和为 自加(之值减去最后峰
lastpeak =currZZ; // 最后峰赋为 之值
}
}
double point =MarketInfo(Symbol(),MODE_POINT); // 定义变量为市场要求的的货币对的点
Summ /=point; // 将累积和除以点
Print("多少",DoubleToStr(Summ,0),"个"); // 打印
// ----
return(0); // 结束一次循环返回
}
//+------------------------------------------------------------------+
//[Script]突破价后拉网
#property show_inputs
extern double lots = 0.01; //手数
extern int price = 13; //突破后的验证价格幅度
extern int slip = 30; //滑点
extern int stoploss = 500; //止损目标
extern int takeprofit = 500; //赢利目标
extern int steps = 10; //步幅
extern int count_orders = 5; //下单总数
//+------------------------------------------------------------------+
int start()
{
int ticket; //定义一个变量
for(int i = 0; i<count_orders; i++) //从0到下单总数递增循环运算
{
double KPrice = Bid -price*Point; //定义空单价格为 叫买价-价*点
ticket=OrderSend(Symbol(), //发送卖单(对,
OP_SELLSTOP, //类, 为突破卖单
lots, //手,
KPrice -i*steps*Point, //价, 为空单价格- 递增值i*步幅*点
slip, //滑,
KPrice -i*steps*Point +stoploss*Point, //损, 为进场价+止损参数个点
KPrice -i*steps*Point -takeprofit*Point, //赢, 为进场价-赢利目标参数个点
" " +i +" *" ); //评,);
if(ticket<0) //如果订单发送未成
{ //
Print(i,"订单发送错误#",GetLastError()); //打印错误
return(0); //返回
}
double Bprice = Ask +price*Point; //
ticket=OrderSend(Symbol(), //发送买单(
OP_BUYSTOP, //
lots, //
Bprice +i*steps*Point, //
slip, //
Bprice +i*steps*Point -stoploss*Point, //
Bprice +i*steps*Point +takeprofit*Point, //
"" +i +"*"); //
if(ticket<0) //
{ //
Print(i," 订单发送错误#",GetLastError()); //
return(0); //
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
联系客服