交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
广告位
查看: 6725|回复: 6
打印 上一主题 下一主题

[其他] MT4图形画平行线通道脚本

[复制链接]

824

主题

27万

积分

28

精华

大型投行

金钱
273475 美元
权重
2293
跳转到指定楼层
楼主
发表于 2014-10-10 15:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
图示:


代码:
普通版本.mq4 (8.59 KB, 下载次数: 3)
平行线通道中间线可调版本.mq4 (12.5 KB, 下载次数: 1)

普通版本

  1. //frlin2003通道脚本
  2. int start(){
  3.    datetime time1,time2,time3,time4;//默认情况下(time1=左下点,time2=右下点,time3=左上点,time4为自定义参数,为右上点)
  4.    double price1,price2,price3,price4;//默认情况下(price1=左下点,price2=右下点,price3=左上点,price4为自定义参数,为右上点)
  5.    double price5;//price3下面垂直对应的价格
  6.    double price3_Show;//由price3进行位移,以不挡住视线
  7.    datetime time3_Show;//由time3进行位移,以不挡住视线
  8.    int K=0;//覆盖的K数量
  9.    double Kuan=0;//通道宽度(点)
  10.    string Kuan_Show;
  11.    int shift1,shift2,shift3,shift4;//某个点以bar为单位的横坐标,比如当前价格则为0,上一个K为1
  12.    string name,name2;
  13.    bool YesOrNo=false;//false=删除,true=保留不删(针对斐波旁边的文字)
  14.    
  15.    while(IsStopped() == false){
  16. //代码开始
  17.    Comment("");//为了让文字实时更新的触发器
  18.    for(int i=0;i<ObjectsTotal();i++){
  19.       name=ObjectName(i);
  20.       //删除遗留左上角文字
  21.       if(ObjectType(name)==OBJ_TEXT && StringFind(name,"frlin2003_text",0)>-1){//删除斐波遗留的文字,只操作斐波相关的文本框,不操作其他的文本框
  22.       //这个if里,name=斐波相关的文本框的名字
  23.          YesOrNo=false;//默认:没找到匹配=删除
  24.          for(int k=0;k<ObjectsTotal();k++){
  25.             name2=ObjectName(k);
  26.             if(ObjectType(name2)==OBJ_FIBOCHANNEL){//取得斐波通道的名字
  27.                if(StringFind(name,name2,0)>-1){ //搜索某个text的名称是否对应于某个斐波的名字
  28.                   YesOrNo=true;//找到匹配=不删
  29.                }
  30.             }
  31.          }
  32.          if(YesOrNo==false){//发现某个文本框,不对应于任意一个斐波
  33.             ObjectDelete(name);
  34.          }
  35.       }
  36.       //删除遗留底边辅助线
  37.       if(ObjectType(name)==OBJ_TREND && StringFind(name,"frlin2003_bottomline",0)>-1){//删除斐波遗留的底边辅助线,只操作斐波相关的底边辅助线,不操作其他的趋势线
  38.       //这个if里,name=斐波相关的底边辅助线的名字
  39.          YesOrNo=false;//默认:没找到匹配=删除
  40.          for(int j=0;j<ObjectsTotal();j++){
  41.             name2=ObjectName(j);
  42.             if(ObjectType(name2)==OBJ_FIBOCHANNEL){//取得斐波通道的名字
  43.                if(StringFind(name,name2,0)>-1){ //搜索某个text的名称是否对应于某个斐波的名字
  44.                   YesOrNo=true;//找到匹配=不删
  45.                }
  46.             }
  47.          }
  48.          if(YesOrNo==false){//发现某个文本框,不对应于任意一个斐波
  49.             ObjectDelete(name);
  50.          }
  51.       }
  52.       //删除遗留斐波参数3辅助线(点)
  53.       if(ObjectType(name)==OBJ_TREND && StringFind(name,"frlin2003_point_p3",0)>-1){//删除斐波遗留的底边辅助线,只操作斐波相关的底边辅助线,不操作其他的趋势线
  54.       //这个if里,name=斐波相关的底边辅助线的名字
  55.          YesOrNo=false;//默认:没找到匹配=删除
  56.          for(int h=0;h<ObjectsTotal();h++){
  57.             name2=ObjectName(h);
  58.             if(ObjectType(name2)==OBJ_FIBOCHANNEL){//取得斐波通道的名字
  59.                if(StringFind(name,name2,0)>-1){ //搜索某个text的名称是否对应于某个斐波的名字
  60.                   YesOrNo=true;//找到匹配=不删
  61.                }
  62.             }
  63.          }
  64.          if(YesOrNo==false){//发现某个文本框,不对应于任意一个斐波
  65.             ObjectDelete(name);
  66.          }
  67.       }
  68.       else if(ObjectType(name)==OBJ_FIBOCHANNEL){//这个else if 的功能是计算并显示斐波的宽度和覆盖K数
  69.          
  70.          //标准化斐波那契,只留一条-0.5的线,并且设置为白色,使看不到
  71.          ObjectSet(name,OBJPROP_FIBOLEVELS,1);
  72.          ObjectSet(name,OBJPROP_FIRSTLEVEL+0,(-0.5));
  73.          //ObjectSet(name,OBJPROP_LEVELCOLOR,Red);
  74.          //标准化结束
  75.          
  76.          time1=ObjectGet(name,OBJPROP_TIME1);
  77.          time2=ObjectGet(name,OBJPROP_TIME2);
  78.          time3=ObjectGet(name,OBJPROP_TIME3);
  79.          //time4无法直接取得,尽量压根不用这个数
  80.          price1=ObjectGet(name,OBJPROP_PRICE1);
  81.          price2=ObjectGet(name,OBJPROP_PRICE2);
  82.          price3=ObjectGet(name,OBJPROP_PRICE3);
  83.          price4=price3-price1+price2;//暂无用
  84.          
  85.          //底边辅助线的建立,并计算通过计算辅助线两段的shift,来确定斐波底边两段的shift
  86.          if(ObjectFind("frlin2003_bottomline"+"_"+name)==(-1)){
  87.             ObjectCreate("frlin2003_bottomline"+"_"+name,OBJ_TREND,0,time1,price1,time2,price2);
  88.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_COLOR,Black);
  89.          }
  90.          else{
  91.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_TIME1,time1);
  92.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_TIME2,time2);
  93.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_PRICE1,price1);
  94.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_PRICE2,price2);
  95.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_RAY,false);
  96.          }
  97.          shift1=ObjectGetShiftByValue("frlin2003_bottomline"+"_"+name,ObjectGet("frlin2003_bottomline"+"_"+name,OBJPROP_PRICE1));
  98.          shift2=ObjectGetShiftByValue("frlin2003_bottomline"+"_"+name,ObjectGet("frlin2003_bottomline"+"_"+name,OBJPROP_PRICE2));         
  99.          ObjectDelete("frlin2003_bottomline"+"_"+name);//取完shift1,2就删,碍事
  100.          //斐波参数3辅助点(线)的建立,来确定斐波参数3的shift
  101.          if(ObjectFind("frlin2003_point_p3"+"_"+name)==(-1)){
  102.             ObjectCreate("frlin2003_point_p3"+"_"+name,OBJ_TREND,0,time3,price3,time2,price2);
  103.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_COLOR,White);
  104.          }
  105.          else{
  106.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_TIME1,time3);
  107.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_TIME2,time2);//任意均可
  108.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_PRICE1,price3);
  109.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_PRICE2,price2);
  110.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_RAY,false);
  111.          }
  112.          shift3=ObjectGetShiftByValue("frlin2003_point_p3"+"_"+name,ObjectGet("frlin2003_point_p3"+"_"+name,OBJPROP_PRICE1));
  113.          ObjectDelete("frlin2003_point_p3"+"_"+name);//取完shift3就删,碍事
  114.          K=shift1-shift2+1;//加1,代表计算起点和终点
  115.          //三角形公式:(t1-t3)/(t1-t2)=x/(p2-p1)
  116.          Kuan=price3-price1-(shift1*1.0-shift3)/(shift1*1.0-shift2)*(price2-price1);//宽
  117.          Kuan_Show=DoubleToStr(MathAbs(Kuan)/(Point*10),0);//为观看便利,取整
  118.          
  119.          //微调界面文字位置
  120.          if(price3>price1){
  121.             price3_Show=price3+(WindowPriceMax()-WindowPriceMin())/50;//为了不让线挡住文字,对文字纵坐标进行一定的移动(屏幕纵坐标的1/50)
  122.          }
  123.          else{
  124.             price3_Show=price3;//默认上线在默认下线之下,这种情况不需要移动纵坐标
  125.          }
  126.          //微调界面文字位置
  127.          time3_Show=GetTimeByShift(shift3+WindowBarsPerChart()/50);      
  128.          /*以下代码同上面一行
  129.          if((shift3+WindowBarsPerChart()/50)<0){
  130.             time3_Show=Time[0]+MathAbs(shift3+WindowBarsPerChart()/50)*Period()*60;
  131.             //Comment(DoubleToStr(shift3+WindowBarsPerChart()/50,0));
  132.          }
  133.          else{
  134.             time3_Show=Time[(shift3+WindowBarsPerChart()/50)];//为了不让线挡住文字,对文字横坐标进行一定的移动(屏幕横坐标的1/60)
  135.             //Comment(DoubleToStr(shift3,0));
  136.             //Time[-1] doesn't work
  137.             //Use
  138.             //Time[0] + numberOfSecondsIntoTheFuture;
  139.             //Time[0]+10*Period()*60; // 10 bars into the future
  140.          }
  141.          */
  142.          ObjectCreate("frlin2003_text"+"_"+name,OBJ_TEXT,0,time3_Show,price3_Show);
  143.          ObjectSet("frlin2003_text"+"_"+name,OBJPROP_TIME1,time3_Show);//让文本框随着斐波的移动而移动
  144.          ObjectSet("frlin2003_text"+"_"+name,OBJPROP_PRICE1,price3_Show);//让文本框随着斐波的移动而移动
  145.          ObjectSetText("frlin2003_text"+"_"+name,Kuan_Show+" ,"+DoubleToStr(K,0),9,"Arial",Black);//随时更新斐波覆盖的K数
  146.          
  147.          //中线操作开始
  148.          
  149.          
  150.       }
  151.    }
  152. //代码结束
  153.    Sleep(1000);
  154.    }//end while
  155.    return(0);
  156. }
  157. datetime GetTimeByShift(int shift){//可以跨越未来区域
  158.    if(shift>=0){
  159.       return (Time[shift]);
  160.    }
  161.    else{
  162.       return (Time[0]+MathAbs(shift)*Period()*60);
  163.    }
  164. }
复制代码

代码:
平行线通道中间线可调版本

  1. //frlin2003通道脚本
  2. int start(){
  3.    datetime time1,time2,time3,time4;//默认情况下(time1=左下点,time2=右下点,time3=左上点,time4为自定义参数,为右上点)
  4.    double price1,price2,price3,price4;//默认情况下(price1=左下点,price2=右下点,price3=左上点,price4为自定义参数,为右上点)
  5.    double price5;//price3下面垂直对应的价格
  6.    double price3_Show;//由price3进行位移,以不挡住视线
  7.    datetime time3_Show;//由time3进行位移,以不挡住视线
  8.    int K=0;//覆盖的K数量
  9.    double Kuan=0;//通道宽度(点)
  10.    string Kuan_Show;
  11.    int shift1,shift2,shift3,shift4;//某个点以bar为单位的横坐标,比如当前价格则为0,上一个K为1
  12.    string name,name2;
  13.    bool YesOrNo=false;//false=删除,true=保留不删(针对斐波旁边的文字)
  14.    //关于中线的参数
  15.    datetime midline_time1,midline_time2,midline_time3;//参数1和2为线段的两头,参数3为调整长度后的终点
  16.    double midline_price1,midline_price2,midline_price3;
  17.    int midline_shift1,midline_shift2;//中线起点/终点的bar-index,1和2为理想终点起点,3为手动后的
  18.    int midline_shift1_new,midline_shift2_new,midline_idea_shift1,midline_idea_shift2,midline_idea_shift3;
  19.    //midline_shift1_new从实际线段取得的起点
  20.    int midline_k;//中线的覆盖K数
  21.    while(IsStopped() == false){
  22. //代码开始
  23.    Comment("");//为了让文字实时更新的触发器
  24.    for(int i=0;i<ObjectsTotal();i++){
  25.       name=ObjectName(i);
  26.       //删除遗留左上角文字
  27.       if(ObjectType(name)==OBJ_TEXT && StringFind(name,"frlin2003_text",0)>-1){//删除斐波遗留的文字,只操作斐波相关的文本框,不操作其他的文本框
  28.       //这个if里,name=斐波相关的文本框的名字
  29.          YesOrNo=false;//默认:没找到匹配=删除
  30.          for(int k=0;k<ObjectsTotal();k++){
  31.             name2=ObjectName(k);
  32.             if(ObjectType(name2)==OBJ_FIBOCHANNEL){//取得斐波通道的名字
  33.                if(StringFind(name,name2,0)>-1){ //搜索某个text的名称是否对应于某个斐波的名字
  34.                   YesOrNo=true;//找到匹配=不删
  35.                }
  36.             }
  37.          }
  38.          if(YesOrNo==false){//发现某个文本框,不对应于任意一个斐波
  39.             ObjectDelete(name);
  40.          }
  41.       }
  42.       //删除遗留底边辅助线
  43.       else if(ObjectType(name)==OBJ_TREND && StringFind(name,"frlin2003_bottomline",0)>-1){//删除斐波遗留的底边辅助线,只操作斐波相关的底边辅助线,不操作其他的趋势线
  44.       //这个if里,name=斐波相关的底边辅助线的名字
  45.          YesOrNo=false;//默认:没找到匹配=删除
  46.          for(int j=0;j<ObjectsTotal();j++){
  47.             name2=ObjectName(j);
  48.             if(ObjectType(name2)==OBJ_FIBOCHANNEL){//取得斐波通道的名字
  49.                if(StringFind(name,name2,0)>-1){ //搜索某个text的名称是否对应于某个斐波的名字
  50.                   YesOrNo=true;//找到匹配=不删
  51.                }
  52.             }
  53.          }
  54.          if(YesOrNo==false){//发现某个文本框,不对应于任意一个斐波
  55.             ObjectDelete(name);
  56.          }
  57.       }
  58.       //删除遗留斐波参数3辅助线(点)
  59.       else if(ObjectType(name)==OBJ_TREND && StringFind(name,"frlin2003_point_p3",0)>-1){//删除斐波遗留的底边辅助线,只操作斐波相关的底边辅助线,不操作其他的趋势线
  60.       //这个if里,name=斐波相关的底边辅助线的名字
  61.          YesOrNo=false;//默认:没找到匹配=删除
  62.          for(int h=0;h<ObjectsTotal();h++){
  63.             name2=ObjectName(h);
  64.             if(ObjectType(name2)==OBJ_FIBOCHANNEL){//取得斐波通道的名字
  65.                if(StringFind(name,name2,0)>-1){ //搜索某个text的名称是否对应于某个斐波的名字
  66.                   YesOrNo=true;//找到匹配=不删
  67.                }
  68.             }
  69.          }
  70.          if(YesOrNo==false){//发现某个文本框,不对应于任意一个斐波
  71.             ObjectDelete(name);
  72.          }
  73.       }
  74.       else if(ObjectType(name)==OBJ_TREND && StringFind(name,"frlin2003_middleline",0)>-1){//删除斐波遗留的中线
  75.       //这个if里,name=斐波相关的文本框的名字
  76.          YesOrNo=false;//默认:没找到匹配=删除
  77.          for(int g=0;g<ObjectsTotal();g++){
  78.             name2=ObjectName(g);
  79.             if(ObjectType(name2)==OBJ_FIBOCHANNEL){//取得斐波通道的名字
  80.                if(StringFind(name,name2,0)>-1){ //搜索某个text的名称是否对应于某个斐波的名字
  81.                   YesOrNo=true;//找到匹配=不删
  82.                }
  83.             }
  84.          }
  85.          if(YesOrNo==false){//发现某个文本框,不对应于任意一个斐波
  86.             ObjectDelete(name);
  87.          }
  88.       }
  89.       else if(ObjectType(name)==OBJ_FIBOCHANNEL){//这个else if 的功能是计算并显示斐波的宽度和覆盖K数
  90.          //标准化斐波那契,只留一条-0.5的线,并且设置为白色,使看不到
  91.          ObjectSet(name,OBJPROP_FIBOLEVELS,1);
  92.          ObjectSet(name,OBJPROP_FIRSTLEVEL+0,(-1));
  93.          ObjectSet(name,OBJPROP_LEVELCOLOR,Black);
  94.          //标准化结束
  95.          time1=ObjectGet(name,OBJPROP_TIME1);
  96.          time2=ObjectGet(name,OBJPROP_TIME2);
  97.          time3=ObjectGet(name,OBJPROP_TIME3);
  98.          //time4等待补算
  99.          price1=ObjectGet(name,OBJPROP_PRICE1);
  100.          price2=ObjectGet(name,OBJPROP_PRICE2);
  101.          price3=ObjectGet(name,OBJPROP_PRICE3);
  102.          price4=price3-price1+price2;//暂无用
  103.          //底边辅助线的建立,并计算通过计算辅助线两段的shift,来确定斐波底边两段的shift
  104.          if(ObjectFind("frlin2003_bottomline"+"_"+name)==(-1)){
  105.             ObjectCreate("frlin2003_bottomline"+"_"+name,OBJ_TREND,0,time1,price1,time2,price2);
  106.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_COLOR,Black);
  107.          }
  108.          else{
  109.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_TIME1,time1);
  110.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_TIME2,time2);
  111.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_PRICE1,price1);
  112.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_PRICE2,price2);
  113.             ObjectSet("frlin2003_bottomline"+"_"+name,OBJPROP_RAY,false);
  114.          }
  115.          shift1=ObjectGetShiftByValue("frlin2003_bottomline"+"_"+name,ObjectGet("frlin2003_bottomline"+"_"+name,OBJPROP_PRICE1));
  116.          shift2=ObjectGetShiftByValue("frlin2003_bottomline"+"_"+name,ObjectGet("frlin2003_bottomline"+"_"+name,OBJPROP_PRICE2));         
  117.          ObjectDelete("frlin2003_bottomline"+"_"+name);//取完shift1,2就删,碍事
  118.          //斐波参数3辅助点(线)的建立,来确定斐波参数3的shift
  119.          if(ObjectFind("frlin2003_point_p3"+"_"+name)==(-1)){
  120.             ObjectCreate("frlin2003_point_p3"+"_"+name,OBJ_TREND,0,time3,price3,time2,price2);
  121.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_COLOR,White);
  122.          }
  123.          else{
  124.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_TIME1,time3);
  125.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_TIME2,time2);//任意均可
  126.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_PRICE1,price3);
  127.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_PRICE2,price2);
  128.             ObjectSet("frlin2003_point_p3"+"_"+name,OBJPROP_RAY,false);
  129.          }
  130.          shift3=ObjectGetShiftByValue("frlin2003_point_p3"+"_"+name,ObjectGet("frlin2003_point_p3"+"_"+name,OBJPROP_PRICE1));
  131.          //shift4等待补算
  132.          ObjectDelete("frlin2003_point_p3"+"_"+name);//取完shift3就删,碍事
  133.          //有了shift3,补算剩下的基本数据
  134.          shift4=shift3-(shift1-shift2);
  135.          time4=GetTimeByShift(shift4);
  136.          //斐波4个点位的price,time,shift齐全了
  137.          K=shift1-shift2+1;//加1,代表计算起点和终点
  138.          //三角形公式:(t1-t3)/(t1-t2)=x/(p2-p1)
  139.          //排除除以0的情况
  140.          if((shift1*1.0-shift2)!=0 && MathAbs(price2-price1)>0.0000001){
  141.             Kuan=price3-price1-(shift1*1.0-shift3)/(shift1*1.0-shift2)*(price2-price1);
  142.          }
  143.          else{
  144.             Kuan=0;
  145.          }
  146.          Kuan_Show=DoubleToStr(MathAbs(Kuan)/(Point*10),0);//为观看便利,取整
  147.          //微调界面文字位置
  148.          if(price3>price1){
  149.             price3_Show=price3+(WindowPriceMax()-WindowPriceMin())/50;//为了不让线挡住文字,对文字纵坐标进行一定的移动(屏幕纵坐标的1/50)
  150.          }
  151.          else{
  152.             price3_Show=price3;//默认上线在默认下线之下,这种情况不需要移动纵坐标
  153.          }
  154.          //微调界面文字位置
  155.          time3_Show=GetTimeByShift(shift3+WindowBarsPerChart()/50);      
  156.          /*以下代码同上面一行
  157.          if((shift3+WindowBarsPerChart()/50)<0){
  158.             time3_Show=Time[0]+MathAbs(shift3+WindowBarsPerChart()/50)*Period()*60;
  159.             //Comment(DoubleToStr(shift3+WindowBarsPerChart()/50,0));
  160.          }
  161.          else{
  162.             time3_Show=Time[(shift3+WindowBarsPerChart()/50)];//为了不让线挡住文字,对文字横坐标进行一定的移动(屏幕横坐标的1/60)
  163.             //Comment(DoubleToStr(shift3,0));
  164.             //Time[-1] doesn't work
  165.             //Use
  166.             //Time[0] + numberOfSecondsIntoTheFuture;
  167.             //Time[0]+10*Period()*60; // 10 bars into the future
  168.          }
  169.          */
  170.          ObjectCreate("frlin2003_text"+"_"+name,OBJ_TEXT,0,time3_Show,price3_Show);
  171.          ObjectSet("frlin2003_text"+"_"+name,OBJPROP_TIME1,time3_Show);//让文本框随着斐波的移动而移动
  172.          ObjectSet("frlin2003_text"+"_"+name,OBJPROP_PRICE1,price3_Show);//让文本框随着斐波的移动而移动
  173.          ObjectSetText("frlin2003_text"+"_"+name,Kuan_Show+" ,"+DoubleToStr(K,0),9,"Arial",Black);//随时更新斐波覆盖的K数
  174.          //中线操作开始
  175.          midline_time1=GetTimeByShift(shift1-(shift1-shift3)/2);//根据斐波算出理想状态下(未修改长度)
  176.          midline_price1=price1+(price3-price1)/2;
  177.          midline_time2=GetTimeByShift(shift1-(shift1-shift3)/2-(shift1-shift2));
  178.          midline_price2=price2+(price4-price2)/2;
  179.          ObjectCreate("frlin2003_middleline"+"_"+name,OBJ_TREND,0,midline_time1,midline_price1,midline_time2,midline_price2);
  180.          ObjectSet("frlin2003_middleline"+"_"+name,OBJPROP_RAY,0);//取消射线
  181.          midline_shift1=ObjectGetShiftByValue("frlin2003_middleline"+"_"+name,ObjectGet("frlin2003_middleline"+"_"+name,OBJPROP_PRICE1));//手动取得实际起点
  182.          midline_shift2=ObjectGetShiftByValue("frlin2003_middleline"+"_"+name,ObjectGet("frlin2003_middleline"+"_"+name,OBJPROP_PRICE2));//手动取得实际终点
  183.          midline_k=midline_shift1-midline_shift2;//保存覆盖K的数量
  184.          midline_idea_shift1=shift1-(shift1-shift3)/2;//假设存在的-0.5与斐波平行且等长的线的起点
  185.          midline_idea_shift2=shift1-(shift1-shift3)/2-(shift1-shift2);//假设存在的-0.5与斐波平行且等长的线的终点
  186.          midline_idea_shift3=midline_idea_shift1-midline_k;
  187.          midline_shift1_new=shift1-(shift1-shift3)/2;//根据斐波计算的新起点
  188.          midline_shift2_new=midline_shift1_new-midline_k;//根据新起点和K覆盖计算新终点
  189.          //最终求得
  190.          midline_time3=GetTimeByShift(midline_shift2_new);
  191.          //排除除以0的情况
  192.          if((midline_idea_shift1*1.0-midline_idea_shift2)!=0 && MathAbs(midline_price2-midline_price1)>0.0000001){
  193.             midline_price3=midline_price1+(midline_idea_shift1*1.0-midline_idea_shift3)/(midline_idea_shift1*1.0-midline_idea_shift2)*(midline_price2-midline_price1);//根据三角形公式计算
  194.          }
  195.          else{
  196.             midline_price3=0;
  197.          }
  198.          ObjectSet("frlin2003_middleline"+"_"+name,OBJPROP_TIME1,midline_time1);//让起点随着斐波的移动而移动
  199.          ObjectSet("frlin2003_middleline"+"_"+name,OBJPROP_PRICE1,midline_price1);//让起点随着斐波的移动而移动
  200.          ObjectSet("frlin2003_middleline"+"_"+name,OBJPROP_TIME2,midline_time3);//让终点随着斐波的移动而移动,但保留长度
  201.          ObjectSet("frlin2003_middleline"+"_"+name,OBJPROP_PRICE2,midline_price3);//让终点随着斐波的移动而移动,但保留长度
  202.       }
  203.    }
  204. //代码结束
  205.    Sleep(1000);
  206.    }//end while
  207.    return(0);
  208. }
  209. datetime GetTimeByShift(int shift){//可以跨越未来区域
  210.    if(shift>=0){
  211.       return (Time[shift]);
  212.    }
  213.    else{
  214.       return (Time[0]+MathAbs(shift)*Period()*60);
  215.    }
  216. }
复制代码


本帖被以下淘专辑推荐:

  • · 通道|主题: 87, 订阅: 1
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖1 支持支持 保留保留

122

主题

3万

积分

23

精华

地佐更接地气

大型投行

金钱
30818 美元
权重
870
沙发
发表于 2015-12-26 19:24 | 只看该作者
沙发消灭零回复。
如果你认为看懂了市场,那你一定是误解了市场。

市场从来不在乎你、我或任何专家,从不会按照你认为发生什么就应该要发生什么那样。

在市场中赚钱并不容易,但是有可能的,只有把资金、技术、心理这三者和谐地融汇贯通去指导行为,将会走向更加有利可图的交易之路!

0

主题

100

积分

0

精华

见习操盘手

金钱
100 美元
权重
0
板凳
发表于 2017-2-17 00:28 | 只看该作者
厉害了

1

主题

1810

积分

0

精华

初级操盘手

金钱
1810 美元
权重
0
地板
发表于 2018-3-30 13:05 | 只看该作者
谢谢分享

0

主题

5982

积分

0

精华

高级操盘手

金钱
5982 美元
权重
0
5
发表于 2018-7-13 10:53 | 只看该作者
这个好·必须收藏!!!!!!!感谢制作!

0

主题

303

积分

0

精华

见习操盘手

金钱
303 美元
权重
0
6
发表于 2020-4-6 10:02 | 只看该作者
感谢分享

16

主题

1万

积分

2

精华

操盘专家

金钱
13076 美元
权重
0
7
发表于 2020-7-20 18:47 | 只看该作者
这是个好东西
您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
皖ICP备: 2024050410号-2

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

快速回复 返回顶部 返回列表