智能交易網,程序化交易,自動交易,量化交易

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

手機短信登錄

參加MT4智能交易編程培訓,7課免費在線試聽MT4指標,EA代寫,或EA指標加密賬戶遠程驗證服務 最完善商業MT4跟單系統(0.1秒極速響應不漏單)
為論壇做貢獻有獎學金,獎學金可直接換真錢 掃本站微信公 眾號部分視頻課程指標EA免費得智能交易網MT4操盤神器,掃公眾號免費得
查看: 560|回復: 1
打印 上一主題 下一主題

線性回歸通道取值

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2019-7-7 10:18:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老師你好:
    我最近在弄一個用“線型回歸通道”來下單的EA,但是我現在出現了一個問題,就是我應該如何獲取“線型回歸通道”的上軌中軌和下軌的值,并把他們顯示在數據窗口中,麻煩老師幫忙解答一下,非常感謝。
分享到:  QQ好友和群QQ好友和群
收藏收藏
回復

使用道具 舉報

沙發
 樓主| 發表于 2019-7-7 13:21:45 | 只看該作者
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link     xxxxxxxxxxxxx
#property version   "1.00"
//--- input parameters
input int      K線數目=500;
input int      深度=30;
input int      ExtBackstep=3;
//---
datetime time[],向上時間坐標,向下時間坐標;
double   open[],high[],low[],close[],A點值;
long     tick_volume[],real_volume[];
//---
int z=500,
    high_a,low_a,a,
    last_high_b,last_low_b,b,
    A點_high,A點_low,A點;
//---
string 向上箭頭,向下箭頭,
       最高點箭頭,最低點箭頭,
       向上拇指,向下拇指,
       A點線,A點字,
       線性回歸通道(舊),線性回歸通道(新);
double t1;
//+------------------------------------------------------------------+
int OnInit(){return(INIT_SUCCEEDED);}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
    ObjectDelete(0,"向上箭頭");
    ObjectDelete(0,"向下箭頭");
    ObjectDelete(0,"最高點箭頭");
    ObjectDelete(0,"最低點箭頭");
    ObjectDelete(0,"向上拇指");
    ObjectDelete(0,"向下拇指");
    ObjectDelete(0,"線性回歸通道(舊)");
    ObjectDelete(0,"線性回歸通道(新)");
    ObjectDelete(0,"A點線");
    ObjectDelete(0,"A點字");
  }
//+------------------------------------------------------------------+
void OnTick()
{
//+---------------------------------+
//|
   int      K線總數  = iBars(NULL,0);
//---
   CopyTime(Symbol(),PERIOD_CURRENT,0,K線總數,time);
   ArraySetAsSeries(time,true);
   datetime 時間  = time[0];
//---
   CopyOpen(Symbol(),PERIOD_CURRENT,0,K線總數,open);
   ArraySetAsSeries(open,true);
   double 開盤價  = open[0];
//---
   CopyHigh(Symbol(),PERIOD_CURRENT,0,K線總數,high);
   ArraySetAsSeries(high,true);
   double 最高點  = high[0];
//---
   CopyLow(Symbol(),PERIOD_CURRENT,0,K線總數,low);
   ArraySetAsSeries(low,true);
   double 最低點  = low[0];
//---
   CopyClose(NULL,PERIOD_CURRENT,0,K線總數,close);
   ArraySetAsSeries(close,true);
   double 收盤價  = close[0];
//---
   CopyTickVolume(Symbol(),PERIOD_CURRENT,0,K線總數,tick_volume);
   ArraySetAsSeries(tick_volume,true);
   long 點擊成交量  = tick_volume[0];
//---
   CopyRealVolume(Symbol(),PERIOD_CURRENT,0,K線總數,real_volume);
   ArraySetAsSeries(real_volume,true);
   long 交易成交量  = real_volume[0];
//+---------------------------------+
//|Comment函數可以將信息在屏幕左上角顯示  
   Comment(Symbol(),","  ,EnumToString(Period()),"\n",
           "時間: "      ,TimeToString(時間,TIME_DATE|TIME_SECONDS),"\n",
           "開盤價: "    ,DoubleToString(開盤價,Digits()),"\n",
           "最高點: "    ,DoubleToString(最高點,Digits()),"\n",
           "最低點: "    ,DoubleToString(最低點,Digits()),"\n",
           "收盤價: "    ,DoubleToString(收盤價,Digits()),"\n",
           "點擊成交量: ",IntegerToString(點擊成交量),"\n",
           "交易成交量: ",IntegerToString(交易成交量),"\n",
           "K線總數: "   ,IntegerToString(K線總數),"\n");
//+------------------------------------------------------------------+
//+---------------------------------+
//|尋找五百根K線內的高點和低點
//---五百根K線內的高點
double 五百根K線內的高點=high[0];
//---
for(int i=0;i<K線數目;i++)
  {
    if(high[i]>五百根K線內的高點)
     {
       五百根K線內的高點=high[i];
        high_a=i;
     }
  }
//---五百根K線內的低點
double 五百根K線內的低點=low[0];
//---
for(int i=0;i<K線數目;i++)
  {
    if(low[i]<五百根K線內的低點)
      {
        五百根K線內的低點=low[i];
        low_a=i;
      }
  }
//+---------------------------------+
//|以K線位置為基準判斷高點在前還是低點在前,以此決定通道的第一時間點和價格點
  if(low_a>high_a)
    {
      a=low_a;
    }
  else
    {
      a=high_a;
    }
//+------------------------------------------------------------------+
//+---------------------------------+
//|以30根K線位置為基準獲取最近高點和最近低點
//---獲取最近高點
double 最近高點=high[0];
for(int i=0;i<深度;i++)
  {
    if(high[i]>最近高點)
     {
       最近高點=high[i];
        last_high_b=i;
     }
  }
//---獲取最近低點
double 最近低點=low[0];
//---
for(int i=0;i<深度;i++)
  {
    if(low[i]<最近低點)
      {
        最近低點=low[i];
        last_low_b=i;
      }
  }
//+---------------------------------+
//|以K線位置為基準判斷高點在前還是低點在前,以此決定通道的第二時間點和價格點
//+---------------------------------+
  if(last_low_b<last_high_b)
    {
      b=last_low_b;
    }
  else
    {
      b=last_high_b;
    }
//+------------------------------------------------------------------+
//+---------------------------------+
//|最高點前的第一個低點和最低點前的第一個高點,也就是A點
//+---------------------------------+
//---最高點前的第一個低點
double 最高點前的第一個低點=high[b];
//---
for(int i=b;i<b+深度;i++)
  {
    if(high[i]>最高點前的第一個低點)
     {
       最高點前的第一個低點=high[i];
        A點_high=i;
     }
  }
//---最低點前的第一個高點
double 最低點前的第一個高點=low[b];
//---
for(int i=b;i<b+深度;i++)
  {
    if(low[i]<最低點前的第一個高點)
      {
        最低點前的第一個高點=low[i];
        A點_low=i;
      }
  }
//+---------------------------------+
//|以K線位置為基準判斷高點在前還是低點在前,以此決定A點的位置
//+---------------------------------+
  if(A點_low<A點_high)
    {
      A點=A點_high;
      A點值=high[A點_high];
    }
  else
    {
      A點=A點_low;
      A點值=low[A點_low];
    }
//+------------------------------------------------------------------+
//---五百根K線內的高點畫向上箭頭(1小時圖加0.0015,5分鐘圖加0.0003)
  ObjectCreate(0,"最高點箭頭",OBJ_ARROW_UP,0,time[high_a],五百根K線內的高點+0.0003);
//--- 設置符號顏色
  ObjectSetInteger(0,"最高點箭頭",OBJPROP_COLOR,clrYellow);
//--- 設置符號大小
  ObjectSetInteger(0,"最高點箭頭",OBJPROP_WIDTH,2);
//---
//---五百根K線內的低點畫向下箭頭
  ObjectCreate(0,"最低點箭頭",OBJ_ARROW_DOWN,0,time[low_a],五百根K線內的低點);
//--- 設置符號顏色
  ObjectSetInteger(0,"最低點箭頭",OBJPROP_COLOR,clrYellow);
//--- 設置符號大小
  ObjectSetInteger(0,"最低點箭頭",OBJPROP_WIDTH,2);
//+------------------------------------------------------------------+
//---最近高點畫向上箭頭(1小時圖加0.0015,5分鐘圖加0.0003)
  ObjectCreate(0,"向上箭頭",OBJ_ARROW_UP,0,time[last_high_b],最近高點+0.0003);
//--- 設置符號顏色
  ObjectSetInteger(0,"向上箭頭",OBJPROP_COLOR,clrBlue);
//--- 設置符號大小
  ObjectSetInteger(0,"向上箭頭",OBJPROP_WIDTH,2);
//---
//---最近高點畫向下箭頭
  ObjectCreate(0,"向下箭頭",OBJ_ARROW_DOWN,0,time[last_low_b],最近低點);
//--- 設置符號顏色
  ObjectSetInteger(0,"向下箭頭",OBJPROP_COLOR,clrBlue);
//--- 設置符號大小
  ObjectSetInteger(0,"向下箭頭",OBJPROP_WIDTH,2);
//+------------------------------------------------------------------+
//---最高點前的第一個低點畫向上拇指(1小時圖加0.0015,5分鐘圖加0.0003)
  ObjectCreate(0,"向上拇指",OBJ_ARROW_THUMB_UP,0,time[A點],最高點前的第一個低點+0.0003);
//--- 設置符號顏色
  ObjectSetInteger(0,"向上拇指",OBJPROP_COLOR,clrYellow);
//--- 設置符號大小
  ObjectSetInteger(0,"向上拇指",OBJPROP_WIDTH,2);
//---
//---最低點前的第一個高點畫向下拇指
  ObjectCreate(0,"向下拇指",OBJ_ARROW_THUMB_DOWN,0,time[A點],最低點前的第一個高點);
//--- 設置符號顏色
  ObjectSetInteger(0,"向下拇指",OBJPROP_COLOR,clrYellow);
//--- 設置符號大小
  ObjectSetInteger(0,"向下拇指",OBJPROP_WIDTH,2);
//+------------------------------------------------------------------+
  ObjectCreate(0,"A點線",OBJ_HLINE,0,time[A點],A點值);
//+------------------------------------------------------------------+  
  ObjectCreate(0,"線性回歸通道(舊)",OBJ_REGRESSION,0,time[a],low[a],time[b],high[b]);
//--- 設置影響通道寬度的偏差值
  ObjectSetDouble(0,"線性回歸通道(舊)",OBJPROP_DEVIATION,1.0);
//--- 設置通道顏色
  ObjectSetInteger(0,"線性回歸通道(舊)",OBJPROP_COLOR,clrBlue);
//--- 設置通道線的風格
  ObjectSetInteger(0,"線性回歸通道(舊)",OBJPROP_STYLE,STYLE_SOLID);
//--- 設置通道線的寬度
  ObjectSetInteger(0,"線性回歸通道(舊)",OBJPROP_WIDTH,2);
//--- 啟用 (true) 或禁用 (false) 延續向右顯示通道的模式
//---
  ObjectCreate(0,"線性回歸通道(新)",OBJ_REGRESSION,0,time[b],low[b],time[0],high[0]);
//--- 設置影響通道寬度的偏差值
  ObjectSetDouble(0,"線性回歸通道(新)",OBJPROP_DEVIATION,1.0);
//--- 設置通道顏色
  ObjectSetInteger(0,"線性回歸通道(新)",OBJPROP_COLOR,clrYellow);
//--- 設置通道線的風格
  ObjectSetInteger(0,"線性回歸通道(新)",OBJPROP_STYLE,STYLE_SOLID);
//--- 設置通道線的寬度
  ObjectSetInteger(0,"線性回歸通道(新)",OBJPROP_WIDTH,1);
//--- 啟用 (true) 或禁用 (false) 延續向右顯示通道的模式
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
}
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

小黑屋|手機版|sitemap|智能交易網,程序化交易,自動交易,量化交易 ( 蘇ICP備08108698號,蘇州智德金網絡科技股份有限公司版權所有 )

GMT+8, 2019-12-12 06:05 , Processed in 0.075467 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
25选5开奖号码表