打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
脚本2

脚本2  

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);
  }
//+------------------------------------------------------------------+

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ZIGZAG MACD
TDJX模板
第十六课 系统思维才是外汇交易的王道:以FxOverEasy交易系统为例8
Thomas DeMark 对于技术分析做出的贡献 - MQL4文章
(8)外汇MT4编程:如何写ZIG函数
Delphi中的时间处理学习笔记
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服