需要幫助創建我的第一個EA
1 頁面的第 562 頁 12 上一個上一個
Results 1 to 10 of 13

Thread: 需要幫助創建我的第一個EA

  1. #1
    大家好!
    我最近開始編寫我的第一個EA代碼,但是有一些東西對我造成了問題。

    1.我的EA應該只在圖表上打開一個新柱時檢查ADX值。時間範圍無關緊要。
    但是現在如果我在H1上運行它會在H1蠟燭上放置幾個訂單,這是我不想要的。
    我該怎麼辦?變量分別存儲設置為當前時間幀的值。但EA會在每個滴答中檢查這些值嗎?並且會在H1蠟燭上放置多個訂單,即使它只打開訂單或在新欄打開時關閉前一個訂單。
    我有點迷失在這裡。

    2.如何訪問自定義的indiors全局變量?我是否需要將indior放入mqh文件中,同時重寫為類等?
    我是否必須使用iCustom?如果是,它會給出什麼價值呢?如果定制indior使用多個緩衝區怎麼辦?我是否需要為每個緩衝區創建一個iCustom?
    我不能只訪問其中一個indior的變量嗎?
    就像定制indior會在滿足某些條件時將bool設置為true或false。現在我想在EA中訪問此bool值以進行檢查。
    我怎樣才能做到這一點?

    目前為止就這樣了。

  2. #2
    adx使用
    http://docs.mql4.com/indiors/iadx命令過濾交易,例如通過欄 - 檢查同一個欄上是否已經交易開倉。或者限制開放交易的數量,例如,如果已經交易開放不開新...你可以在這個線程中附加你的ea,也許有人會幫你編碼。

  3. #3

    Quote Originally Posted by ;
    但EA會在每個刻度上檢查這些值嗎?
    是的,專家(和內部)是由tick驅動的,這意味著終端將嘗試在每個新的時間點運行他們的核心代碼。因此,如果您只想應用某個邏輯,例如,在新蠟燭(條形圖)的開頭,您必須自己檢查該事件。通常我們使用欄開始時間來檢查新欄的開頭;只有開始時間對於特定的欄是唯一的。否則,酒吧可以具有相同的開盤價,高價,低價或收盤價,或者數量,但不是相同的開始時間。在每個新柱上,其開始時間記錄在Time [0]變量中。如果您在程序啟動時記錄正在進行的條的開始時間,則可以通過將Time [0]與先前記錄的時間進行比較來檢測新條的開始;如果它們不同,則會啟動一個新欄。代碼示例:在OnInit()中記錄當前條形時間:插入代碼mytime =時間#91; 0#93 ;;/將mytime置於全局範圍然後,在OnTick()中,在您比較的每個刻度上:插入代碼if(mytime!=時間#91; 0#93;){//如果時間不同,則新條形圖已經開始且您的這個if語句中的代碼將運行//重新記錄你的時間mytime =時間#91; 0#93 ;;*把你的核心邏輯放在這裡*}

  4. #4
    我認為以下代碼應該這樣做:Inserted Code datetime LastTime = 0; 。 。 。 。 if(時間#91; 0#93;!= LastTime){//在此打開您的訂單} LastTime =時間#91; 0#93 ;;

  5. #5
    2附件這是我目前正在進行的工作和定製印象。我想要的是如果定制的indior顏色為黃色條紋,這意味著根據設置參數它是一個十字星,EA應該能夠基於此做一些事情。我沒有創建indi所以我不太清楚我想要哪個緩衝區。我也不關心緩衝區,我只想訪問indior的全局變量之一,這樣我就可以輕鬆決定了基於我的EA中的那個值,而不是搞亂緩衝......當然,如果可能的話。是的,EA現在是一團糟,我知道。
    https://www.forex-pedia.com/attachme...1101022973.mq4
    https://www.forex-pedia.com/attachme...3355205283.mq4

  6. #6
    嗨,我可以幫你寫EA。如果你想...所以如果我理解得很好,你想在檢測到十字星時進行交易,對嗎?如果是這樣,那麼不要使用那個外部indi,而是在EA中使用它的公式,這將更加容易。從我在那個印像中看到的,它使用蠟燭體的大小作為整個蠟燭大小的百分比,包括燈芯作為確定它是否是十字星的門檻。這是來自indior的公式:插入代碼if(MathAbs((haClose-haOpen)/(haHigh-haLow))lt; =(DojiLevel100)spotDojis)DojiLevel是百分比,你可以忘記spotDojis變量。所以,在你的EA代碼中只需要這樣,你就會知道你什麼時候有十字星。您將不得不處理最後關閉的柱(index = 1)而非當前尚未關閉的柱。

  7. #7

    Quote Originally Posted by ;
    嗨,我可以幫你寫EA。如果你想...所以如果我理解得很好,你想在檢測到十字星時進行交易,對嗎?如果是這樣,那麼不要使用那個外部indi,而是在EA中使用它的公式,這將更加容易。從我在那個印像中看到的,它使用蠟燭體的大小作為整個蠟燭大小的百分比,包括燈芯作為確定它是否是十字星的門檻。這是來自indior的公式:if(MathAbs((haClose-haOpen)/(haHigh-haLow))lt; =(DojiLevel100)spotDojis)DojiLevel ...
    好的,感謝您的幫助。雖然我可以將indior重組為類,並將EA作為.mqh包含在EA中,然後在EA中創建所述indior的實例並訪問其變量?現在我將使用這個公式,但我想避免將計算編寫到EA中,因此它將只有代碼處理邏輯和命令或一些較小的insignifact事情。我看了一下你的mql5學習線程,我想做那樣的事情。

  8. #8
    當然可以。根據您要編寫的EA的複雜程度,它可以幫助組織並使您的代碼可重用。另一方面,對於非常簡單的EA,你只需要兩個或三個函數調用就可以編寫OOP代碼。我不知道你是否對MQL編程有很好的了解。也許你可以更好地開始寫一些平面,我的意思是全局函數和變量,然後在需要時將其移植到OOP中或僅用於練習。

  9. #9
    1附件
    Quote Originally Posted by ;
    當然可以。根據您要編寫的EA的複雜程度,它可以幫助組織並使您的代碼可重用。另一方面,對於非常簡單的EA,你只需要兩個或三個函數調用就可以編寫OOP代碼。我不知道你是否對MQL編程有很好的了解。也許你可以更好地開始寫一些平面,我的意思是全局函數和變量,然後在需要時將其移植到OOP中或僅用於練習。
    Cool.I意味著告訴我大約一年前我已經學會了C 基本的東西(構造函數,複製構造函數,析構函數,getter,setter,名稱空間,實例),只需要做一些面向oop的應用程序。因此我有點被mql4困擾,因為我不理解它的結構。它被描述為OOP語言,但是當我看著內部和EA時沒有反映出來但是ppl試圖通過緩衝區從自定義內部獲取值當有OOP編程選項時,這對我來說有點奇怪。我也在這裡,因為我直接從MACD樣本EA複製的追踪止損似乎不起作用。我沒有直接從追踪止損EA複製的那個。至於我的尾隨止損,它基本上是一個動態移動的止損。根據這個
    http://www.investopedia.com/articles...-stop-loss.asp如果我設置一個追踪止損並且價格對我有利,那麼即使價格決定反對我,我也基本上不會失去部分利潤。因此,如果PA足夠好並且正確設置了追踪止損,那麼它可能是因為錯誤的PA而導致的止損或者追踪止損或盈利過於緊張。然而,在許多勝利之後的回溯測試中總會有最後一個訂單基本上消除了acc.What給出了什麼?此外,我嘗試在新蠟燭處開倉,但在每個tick上檢查訂單跟踪止損。當前的實施是否合適?
    https://www.forex-pedia.com/attachme...4591922851.mq4

  10. #10
    我認為它不起作用,因為以下行。插入代碼if(OrderOpenPrice() - Askgt; TrailingAct * Point TrailPrice == 0){你確定你的TrailPrice變量在首次使用之前是否已設置?因為我沒有看到它。而且,如果您了解OOP,為什麼不切換到它?我的意思是,你可以重組並編寫質量更好的代碼。你應該考慮一下。

發布權限

  • 您不可發布新主題
  • 您不可回复
  • 您不可發布附件
  • 您不可編輯您的帖子
  •  
  • BB代碼是打開的
  • 表情符號是打開的
  • [IMG]代碼是打開的
  • [視頻]代碼是打開的
  • HTML代碼是關閉的
forex-pedia網站使用cookie 文字跟蹤
forex-pedia.com網站使用cookie 文字跟蹤,某些設定已經固定。您可以點擊此處閱讀我們的Cookie使用說明。 請點擊右鍵接受我們的cookies。如果您選擇繼續使用forex-pedia.com網站,我們將認為您接受我們的cookies。