追踪止損EA
1 頁面的第 562 頁 12 上一個上一個
Results 1 to 10 of 16

Thread: 追踪止損EA

  1. #1
    我一直在研究一種EA(基於圖表對象按鈕的按下); 以市場價格開立交易,根據我放在圖表上的SL線,根據我的風險%計算手數。使用我放置在圖表上的Entry和SL行設置待定交易(並根據風險%計算正確的手數)。各種類型的關閉功能(全部開放,所有挂件,所有OP,所有利潤,所有損失等...)將交易移至BE 足以覆蓋通信。和交換我一直在研究一個尾隨的SL函數,該函數工作正常並且做了它所支持的但只是第一次。我按下按鈕,它會確定價格在哪裡並相應地移動SL。再次確定基於初始風險的移動量(因為SL移動我使用開放價格和固定的說5:1獲利以計算移動多少因為這些是不會移動的設定因素並且弄亂了Calcs(計算))。 我要做的是設置一個循環的排序,我按下圖表上的按鈕一次,它移動SL。然後,如果價格達到新的水平,它再次移動SL而不必再次觸及尾隨的SL。我意識到如果我改變TF等......我們ReInit我必須重新按下按鈕。可以將此代碼放入循環中,在第一次按下按鈕後繼續檢查並移動SL嗎?我嘗試了一些像使用的東西,但它只是讓事情變得混亂,SL來回反彈。如果我繼續;之後如果那麼它在第一行後停止......

    我希望有人能幫幫忙。我確信這是我的一個愚蠢的錯誤或我沒有看到的簡單的事情。我對編碼還很陌生。

    插入代碼if(sparam == TSLButton)//已按下Trail SL按鈕{ObjectSetInteger(0,TSLButton,OBJPROP_STATE,false); bool TSL = false; double TickValue = MarketInfo(Symbol(),MODE_TICKVALUE); double GGG = OrderCommission() OrderSwap(); double GGG1 = NormalizeDouble(OrderCommission() OrderSwap(),Digits)* Point; double XXX = GGG1TickValue; double XXY =(OrderOpenPrice() - OrderTakeProfit())/TPFactor; int orders_cnt = 0; int total = OrdersTotal(); for(int i = 0; ilt; total; i ){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)== false)continue; if(OrderSymbol()== Symbol())orders_cnt ; ObjectSetInteger(0,TSLButton,OBJPROP_COLOR,ButtonTxtCLR); ObjectSetInteger(0,TSLButton,OBJPROP_BGCOLOR,紅色); ObjectSetInteger(0,TSLButton,OBJPROP_BORDER_COLOR,紅色); RefreshRates(); if(OrderType()== OP_BUY){if(Bidgt;(OrderOpenPrice() (XXY * 2))){TSL = OrderModify(OrderTicket(),OrderOpenPrice(),(OrderOpenPrice() - (XXX)),OrderTakeProfit (),0,clrNONE);} if(Bidgt;(OrderOpenPrice() (XXY * 3))){TSL = OrderModify(OrderTicket(),OrderOpenPrice(),((OrderOpenPrice() - (XXX)) ( XXY)),OrderTakeProfit(),0,clrNONE);} if(Bidgt;(OrderOpenPrice() (XXY * 4))){TSL = OrderModify(OrderTicket(),OrderOpenPrice(),((OrderOpenPrice() - ( XXX)) (XXY * 3)),OrderTakeProfit(),0,clrNONE);}} if(OrderType()== OP_SELL){if(Asklt;(OrderOpenPrice() - (XXY * 2))){TSL = OrderModify(OrderTicket(),OrderOpenPrice(),(OrderOpenPrice() (XXX)),OrderTakeProfit(),0,clrNONE);} if(Asklt;(OrderOpenPrice() - (XXY * 3))){TSL = OrderModify(OrderTicket(),OrderOpenPrice(),((OrderOpenPrice() (XXX)) - (XXY)),OrderTakeProfit(),0,clrNONE);} if(Asklt;(OrderOpenPrice() - (XXY * 4))){TSL = OrderModify(OrderTicket(),OrderOpenPrice(),((OrderOpenPrice() (XXX)) - (XXY * 3)),OrderTakeProfit() ,0,clrNONE);}}}}

  2. #2

    Quote Originally Posted by ;
    {quote}您必須為每個訂單計算一次風險,然後將其保存,以便您可以重新使用它(通過票證)。
    再次感謝。

  3. #3
    您好press78,您不必將代碼放在循環上,而是在每個OnTick事件上調用它。作為一般概念要做的事情是你的按鈕應該打開/關閉你的追踪止損,然後持久存儲(例如在文件中)並在OnInit函數上檢查該值,然後在OnTick中,你調用你的尾隨如果該變量打開或關閉,則停止代碼。

  4. #4
    Quote Originally Posted by ;
    您好press78,您不必將代碼放在循環上,而是在每個OnTick事件上調用它。作為一般概念要做的事情是你的按鈕應該打開/關閉你的追踪止損,然後持久存儲(例如在文件中)並在OnInit函數上檢查該值,然後在OnTick中,你調用你的尾隨如果該變量打開或關閉,則停止代碼。
    感謝您的答复。這指向了我需要研究的方向
    然後因為我沒有必要像你之前描述的那樣編碼!

  5. #5
    越來越近。在tick函數下使尾隨停止運行良好。然而,它試圖根據首次開盤交易修改所有未平倉交易(無論是買入還是賣出)。第一次開業,一切都很完美。當它應該適當數量時移動SL ...讓我們說交易1是歐元買入...交易2是另一對買入交易...... SL開始變得瘋狂,基於EURUSD正在做什麼。交易3是一個不同的賣出交易......再次,SL開始變得瘋狂,基於交易1正在做什麼。我在單一開啟/關閉路徑SL選項下買入和賣出交易。將它們分解為自己的開啟/關閉選項的想法將解決問題,但事實並非如此。如何獲得跟踪SL功能以單獨查看每筆交易並對其進行管理?這是我在OnTick下的代碼。插入代碼if(TrailBuySL == true){bool TSLBuy = false; TotalNumberOfOrders = OrdersTotal(); for(PositionIndex = TotalNumberOfOrders -1; PositionIndex gt; = 0; PositionIndex - ){if(!OrderSelect(PositionIndex,SELECT_BY_POS,MODE_TRADES))繼續; if(OrderType()== OP_BUY OrderSymbol()== Symbol()){if(MarketInfo(Symbol(),MODE_BID)gt;(OrderStopLoss() (BuyRisk * TrailFactor)))TSLBuy = OrderModify(OrderTicket(), OrderOpenPrice(),((OrderStopLoss() (BuyRisk * TrailMove)) - BECSAdd),OrderTakeProfit(),0,clrNONE); if(TrailSellSL == true){bool TSLSell = false; TotalNumberOfOrders = OrdersTotal(); for(PositionIndex = TotalNumberOfOrders -1; PositionIndex gt; = 0; PositionIndex - ){if(!OrderSelect(PositionIndex,SELECT_BY_POS,MODE_TRADES))繼續; if(OrderType()== OP_SELL OrderSymbol()== Symbol()){if(MarketInfo(Symbol(),MODE_ASK)lt;(OrderStopLoss() - (SellRisk * TrailFactor)))TSLSell = OrderModify(OrderTicket(), OrderOpenPrice(),((OrderStopLoss() - (SellRisk * TrailMove)) BECSAdd),OrderTakeProfit(),0,clrNONE); }}}

  6. #6

    Quote Originally Posted by ;
    越來越近。在tick函數下使尾隨停止運行良好。然而,它試圖根據首次開盤交易修改所有未平倉交易(無論是買入還是賣出)。第一次開業,一切都很完美。當它應該適當數量時移動SL ...讓我們說交易1是歐元買入...交易2是另一對買入交易...... SL開始變得瘋狂,基於EURUSD正在做什麼。交易3是一個不同的賣出交易......再次,SL開始變得瘋狂,基於交易1正在做什麼。我買賣了......
    好的,我添加了一個幻數,並通過過濾路徑SL來管理交易,只有當Symbol,OrderType和MagicNumber與訂單信息匹配時。這看起來已經阻止了瘋狂的SL在不同對上看兩個交易(這個測試的​​相反方向)時的移動。太早判斷這條線索是否真的有效。時間會告訴兩個行業。我很好奇但是為什麼OrderSymbol和OrdeType的現場過濾器不能保護其他圖表上的交易,甚至是反對的交易類型也不受SL的影響?基於這個理論,如果我想在同一對上打開多個交易並且讓它們單獨管理它們,我將不得不為同一對打開多個圖表並使用不同的幻數應用EA?如果有人有任何其他信息或幫助仍然會非常感激。

  7. #7
    你在問如何實施TS嗎? - 你需要(每個訂單)一個跟踪距離,我建議一個步驟(即一個或更多,而不是子點)。從那裡它很容易和簡單的TS代碼看起來像這樣:插入代碼if(OrderSelect(...)){if(OrderType()== OP_BUY(MarketInfo(OrderSymbol(),MODE_BID)-traildistancegt; OrderStopLoss() )){if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID)-traildistance step,Digits-1),OrderTakeProfit(),0)); } else if(OrderType()== OP_SELL(MarketInfo(OrderSymbol(),MODE_ASK) traildistancelt; OrderStopLoss())){if(!OrderMickify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK ) traildistance-step,Digits-1),OrderTakeProfit(),0)); }}

  8. #8

    Quote Originally Posted by ;
    你在問如何實施TS嗎? - 你需要(每個訂單)一個跟踪距離,我建議一個步驟(即一個或更多,而不是子點)。從那裡它很容易和簡單的TS代碼看起來像這樣:if(OrderSelect(...)){if(OrderType()== OP_BUY(MarketInfo(OrderSymbol(),MODE_BID)-traildistancegt; OrderStopLoss())) {if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID)-traildistance step,Digits-1),OrderTakeProfit(),0)); } else if(OrderType()== OP_SELL(MarketInfo(OrderSymbol(),MODE_ASK) traildistancelt; OrderStopLoss()))...
    不完全的。我的EA基於風險%,因此我的跟踪距離和步驟由交易本身使用止損,入場價和獲利等信息確定。我的代碼工作正常,但它只適用於第一筆交易。之後交易1,2等...即使不同的對或交易類型,我們根據交易0移動SS。我無法弄清楚如何讓跟踪功能看待並根據其自身管理每個交易自己的貿易信息。這讓我感到困惑。添加神奇的數字似乎已經停止了一些,但我想知道我的代碼選擇中的某些東西是不是正確的,因為我對符號的過濾器和單獨購買而不是單獨出售我不知道為什麼。賣盤交易受到買入交易的影響。做

  9. #9
    如果您的算法適用於一個訂單,它適用於任何訂單(因為該過程沒有不同)。但是,這假定所有變量都被正確地重新分配了下一個訂單的數據。所以,你很可能在這個輔助步驟失敗了。

  10. #10
    這就是我發布代碼的原因。希望有人可以幫我找出我的代碼出錯的地方。它適用於交易0,無論是買入還是賣出。交易1,2,3等..混亂,似乎是基於交易0運行。謝謝你的回复。

發布權限

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