请教大神EA角度趋势线问题

 

画了角度趋势线

但是画出来后一会过后就变成是90度的线,有点不稳定,有时可以,有时不可以。

点开对象属性显示抓取的两个点的时间价格都没问题,但是就是角度怎么是90度。

做试验,用脚本的话没问题,直接复制到EA又变成了90度,取的两个值正常

弄了一天,都没弄好。一般的趋势线是正常,就角度趋势线怎么他就自己设置成90度了

感觉人都崩溃了。

不知道是不是MT5的问题,你们有这样的现象吗?

 
jinchunlong2020:

画了角度趋势线

但是画出来后一会过后就变成是90度的线,有点不稳定,有时可以,有时不可以。

点开对象属性显示抓取的两个点的时间价格都没问题,但是就是角度怎么是90度。

做试验,用脚本的话没问题,直接复制到EA又变成了90度,取的两个值正常

弄了一天,都没弄好。一般的趋势线是正常,就角度趋势线怎么他就自己设置成90度了

感觉人都崩溃了。

不知道是不是MT5的问题,你们有这样的现象吗?

看得出你有問題 但是看不明白你的問題

沒圖沒碼 很難猜出你問題點發生的原因 

 
Hung Wen Lin:

看得出你有問題 但是看不明白你的問題

沒圖沒碼 很難猜出你問題點發生的原因 

 用这个代码抓取的两个点

ObjectCreate(0,"qushixian",OBJ_TRENDBYANGLE,0,时间1,价格1,时间2,价格2);

之后用一下代码获取的角度

string objname=ObjectName(0,0);
    double p=ObjectGetDouble(0,"qushixian",OBJPROP_ANGLE);

没有其他的代码

 

不要费心画角度了!

屏幕点距、屏幕纵横比、窗口缩放都会影响图形的视觉感受,

就好比 4:3 的电视画面在 16:9 的屏幕上压扁了一样。

所以,一般用坡度来代替角度,坡度就是垂直增量与水平增量的比值。

 
jinchunlong2020:

 用这个代码抓取的两个点

ObjectCreate(0,"qushixian",OBJ_TRENDBYANGLE,0,时间1,价格1,时间2,价格2);

之后用一下代码获取的角度

string objname=ObjectName(0,0);
    double p=ObjectGetDouble(0,"qushixian",OBJPROP_ANGLE);

没有其他的代码

之前也曾想過用角度來產生某些信號 但是後來想法跟樓上想的一樣 不同長寬比例 放大縮小整個角度就會失去作用 所以就不再研究

但是需要用的人 肯定有自己的想法 不明白的人士不能否定的

你展示的指令 我沒用過 基於好奇心及解題的熱衷 我還是嘗試了解決你的問題 如果有誤 "那就是你問題沒表達清楚啦 哈哈哈"

首先 我先測試了角度線的特性 發現到 特性是 一但確定角度後 線的角度就不會再改變 起點就是Price1,Time1 參數的Price2,Time2屬性中 雖然沒變 但是在圖表上已經不是設定的值了 既使你將X軸或是Y軸拉長縮短 結果都一樣 起點 角度是不會變 終點是會改變的

其次 從你的敘述中 你在操作跟驗證的邏輯已經出了問題 EA是重複循環 腳本是執行一次 所以你在腳本沒問題 但是EA不能用 那就是在參數放置的位置不合適 你可以理清楚ObjectCreate跟ObjectGetDouble該哪個先執行 时间1,价格1,时间2,价格2是否需要更新

第三 做了簡單的編碼做測試

        datetime 时间1=iTime(Symbol(),0,100); //隨便找的X點

        double   价格1=iOpen(Symbol(),0,100); //隨便找的Y點

        datetime 时间2=iTime(Symbol(),0,1);  //找近的X'點

        double   价格2=iOpen(Symbol(),0,1);  //找近的Y'點

        if(iVolume(Symbol(),0,0) <= 1) //找個條件來刪除物件

          ObjectDelete(0,"qushixian");

        ObjectCreate(0,"qushixian",OBJ_TRENDBYANGLE,0,时间1,价格1,时间2,价格2);

        double p=ObjectGetDouble(0,"qushixian",OBJPROP_ANGLE);

        printf("p = "+(string)p); //看看p的變化狀況

結果發現 如果將ObjectDelete pass掉 那麼物件並不會覆蓋 應該在創建前先刪除重新創建 

增加ObjectDelete的刪除條件後 p就能即時更新了

綜合以上 我猜你能應該知道 需要調整的地方在哪了 

上面我是用MT4做的測試 這個指令的用法 MT5應該也是一樣 MT5語法太麻煩 我懶得調試(如果萬一錯了)

另外 測試是在回測中進行 今天休市 沒測模擬盤 切換時間框後的結果沒試 估計還是要刪除物件或是覆蓋參數才能順利執行

 
jinchunlong2020:

画了角度趋势线

但是画出来后一会过后就变成是90度的线,有点不稳定,有时可以,有时不可以。

点开对象属性显示抓取的两个点的时间价格都没问题,但是就是角度怎么是90度。

做试验,用脚本的话没问题,直接复制到EA又变成了90度,取的两个值正常

弄了一天,都没弄好。一般的趋势线是正常,就角度趋势线怎么他就自己设置成90度了

感觉人都崩溃了。

不知道是不是MT5的问题,你们有这样的现象吗?

Hung Wen Lin:

之前也曾想過用角度來產生某些信號 但是後來想法跟樓上想的一樣 不同長寬比例 放大縮小整個角度就會失去作用 所以就不再研究

但是需要用的人 肯定有自己的想法 不明白的人士不能否定的

你展示的指令 我沒用過 基於好奇心及解題的熱衷 我還是嘗試了解決你的問題 如果有誤 "那就是你問題沒表達清楚啦 哈哈哈"

首先 我先測試了角度線的特性 發現到 特性是 一但確定角度後 線的角度就不會再改變 起點就是Price1,Time1 參數的Price2,Time2屬性中 雖然沒變 但是在圖表上已經不是設定的值了 既使你將X軸或是Y軸拉長縮短 結果都一樣 起點 角度是不會變 終點是會改變的

其次 從你的敘述中 你在操作跟驗證的邏輯已經出了問題 EA是重複循環 腳本是執行一次 所以你在腳本沒問題 但是EA不能用 那就是在參數放置的位置不合適 你可以理清楚ObjectCreate跟ObjectGetDouble該哪個先執行 时间1,价格1,时间2,价格2是否需要更新

第三 做了簡單的編碼做測試

        datetime 时间1=iTime(Symbol(),0,100); //隨便找的X點

        double   价格1=iOpen(Symbol(),0,100); //隨便找的Y點

        datetime 时间2=iTime(Symbol(),0,1);  //找近的X'點

        double   价格2=iOpen(Symbol(),0,1);  //找近的Y'點

        if(iVolume(Symbol(),0,0) <= 1) //找個條件來刪除物件

          ObjectDelete(0,"qushixian");

        ObjectCreate(0,"qushixian",OBJ_TRENDBYANGLE,0,时间1,价格1,时间2,价格2);

        double p=ObjectGetDouble(0,"qushixian",OBJPROP_ANGLE);

        printf("p = "+(string)p); //看看p的變化狀況

結果發現 如果將ObjectDelete pass掉 那麼物件並不會覆蓋 應該在創建前先刪除重新創建 

增加ObjectDelete的刪除條件後 p就能即時更新了

綜合以上 我猜你能應該知道 需要調整的地方在哪了 

上面我是用MT4做的測試 這個指令的用法 MT5應該也是一樣 MT5語法太麻煩 我懶得調試(如果萬一錯了)

另外 測試是在回測中進行 今天休市 沒測模擬盤 切換時間框後的結果沒試 估計還是要刪除物件或是覆蓋參數才能順利執行

MT5是自动更新覆盖,但是我还是加了ObjectDelete试了下,但还是没用,

看到附件的话,物件属性里抓取的点都正确,时间轴都不一样,它怎么能就成90度呢,晕了,不搞了。

附加的文件:
qushixian.png  114 kb
 
jinchunlong2020:

MT5是自动更新覆盖,但是我还是加了ObjectDelete试了下,但还是没用,

看到附件的话,物件属性里抓取的点都正确,时间轴都不一样,它怎么能就成90度呢,晕了,不搞了。

放棄啦!! 哪我在研究也沒用啦

沒想到MT4跟MT5有差別 沒幫到就不好意思啦

MT5還要調整K線的讀取方向 都忘光光了

 
Xiangdong Guo #:

不要费心画角度了!

屏幕点距、屏幕纵横比、窗口缩放都会影响图形的视觉感受,

就好比 4:3 的电视画面在 16:9 的屏幕上压扁了一样。

所以,一般用坡度来代替角度,坡度就是垂直增量与水平增量的比值。

你好。老哥,可以阐述下坡度该如何算吗,好像用XY坐标来计算不准。

原因: