MT4 - Livelli multipli di take profitchiusura parziale
Risultati da 1 a 10 di 10

Discussione: MT4 - Livelli multipli di take profitchiusura parziale

  1. #1
    Vorrei chiudere un ordine a diversi livelli. Esempio: chiudo metà del mio ordine a takeprofit1 e il resto a takeprofit2 usando qualcosa del genere:
    Codice inserito if (OrderType () == OP_BUY) {if (Bid gt; OrderOpenPrice () TakeProfit1) {OrderClose (12345, 0.5, Bid, 2); } if (Bid gt; OrderOpenPrice () TakeProfit2) {OrderClose (12345, 0.5, Bid, 2); }} Il problema evidente è che quando il prezzo colpisce il mio TakeProfit1 cercherà di chiudere ogni nuovo tick chiudendo infine l'intero ordine. C'è un modo per farlo eseguire l'azione una sola volta?

    Mi rendo conto che potrei aprire due ordini separati con profitti diversi, ma preferirei imparare come farlo in modo diverso se c'è un altro modo. Mi piace l'idea di nascondere i miei profitti al broker. Qualsiasi aiuto o consiglio è apprezzato.

  2. #2

    Citazione Originariamente Scritto da ;
    Vorrei chiudere un ordine a diversi livelli. Esempio: chiudo metà del mio ordine a takeprofit1 e il resto a takeprofit2 usando qualcosa di simile: Codice inserito if (OrderType () == OP_BUY) {if (Bid gt; OrderOpenPrice () TakeProfit1) {OrderClose (12345, 0.5, Bid 2); } if (Bid gt; OrderOpenPrice () TakeProfit2) {OrderClose (12345, 0.5, Bid, 2); }} Il problema ovvio è che quando il prezzo colpisce il mio TakeProfit1 cercherà di chiudere ogni nuovo tick chiudendo alla fine ...
    basta usare due ordini separati. dividere un ordine dopo che è stato aperto è un rompicoglioni e richiede il monitoraggio degli ordini correnti e la ricerca di biglietti appena creati, ecc., è completamente fattibile, ma se sei rimasto bloccato dopo aver digitato solo il codice precedente, allora è meglio lasciarlo andare per ora e salvarlo per il futuro quando puoi programmare meglio. usa solo due ordini separati e vai avanti con la tua vita. altrimenti, saremo noi quelli che finiscono per scrivere il codice per te e non avrai lavorato per niente.

  3. #3
    La chiusura di una parte di un ordine è sicuramente per i programmatori di livello avanzato.

  4. #4

    Citazione Originariamente Scritto da ;
    Il problema ovvio è che quando il prezzo colpisce il mio TakeProfit1 cercherà di chiudere ogni nuovo tick chiudendo infine l'intero ordine. C'è un modo per farlo eseguire l'azione una sola volta? Mi rendo conto che potrei aprire due ordini separati con profitti diversi, ma preferirei imparare come farlo in modo diverso se c'è un altro modo. Mi piace l'idea di nascondere i miei profitti al broker. Qualsiasi aiuto o consiglio è apprezzato.
    //----- hey trumpjr ...... usa orderelect per scegliere l'ordine ..... usa un filtro orderlots () .... di seguito è solo un rapido esempio approssimativo .... h/- --- Codice inserito per (int i = Orderstotal () - 1; i gt; = 0; i--) {OrderSelect (i, SEL_BY_POSITION, MODE_TRADES); if (OrderSymbol ()! = Symbol ()) continua; if (OrderLots () gt; = 1)/filtro orderlots {if (OrderType () == OP_BUY) {if (Bid gt; OrderOpenPrice () TakeProfit1) {OrderClose (OrderTicket (), 0.5, Bid, 0, CLR_NONE ); }}

  5. #5
    È necessario tracciare ogni ordine tramite un numero magico unico al fine di gestire le posizioni in pezzi. Non appena si chiude parzialmente un determinato ordine aperto, il suo ticket dell'ordine cambia e quindi è necessario recuperare il nuovo numero di ticket. Il vecchio numero di biglietto viene semplicemente scartato. Per ottenere il nuovo numero di biglietto e, in tal modo, mantenere il controllo sul restante ordine parzialmente aperto, è necessario recuperare il numero del biglietto in base al numero magico. Il numero magico assegnato a un ordine non cambierà in seguito a chiusure di divisioni multiple dell'ordine, in modo da poter tenere traccia del ciclo di vita dell'ordine originale.

  6. #6
    I numeri magici non sono unici per un ordine. Lo stesso numero magico (di solito) è assegnato a ogni ordine aperto da un EA. Potrebbero esserci molti ordini con lo stesso numero magico. Il tuo suggerimento non funzionerà.

  7. #7
    c'è un modo semplice per farlo? il primo gruppo di fermate dovrà essere più stretto come per il fifo. Assume su codition compro 2 ordini separati .... lotto A e lotto B per lottoA voglio SL-A a 30 pips e TP-A a 30pips per lotto B Voglio SL-B a 50 pips e TP-B a 50 pips suppongo che avrei bisogno di chiudere il numero del biglietto e usare perdite nascoste dal momento che il mio broker chiude tutte le posizioni su qualsiasi TP SL questo sembra così semplice eppure ancora nuovo nella codifica e mi sto facendo impazzire, ci sono esempi di tale codice in modo da poter vedere visivamente come funziona

  8. #8
    Qualsiasi cosa diversa dall'effettivo profitto nell'ordine sarà immaginaria, quindi dovrai calcolare il tuo secondario nel tuo ciclo OrderSelect: Inserisci codice if ((OrderType () == OP_BUY) (OrderSymbol () == Simbolo ( )) (OrderMagicNumber () == MagicNumber)) {if (OrderLots () = gt; 1 (Bid = gt; OrderTakeProfit () - (TakeProfitA * Point)))) {double dNewLotSize = NormalizeDouble (OrderLots ()2, 2 ); if (! OrderClose (OrderTicket (), dNewLotSize, Bid, 3, Violet)) Stampa (OrderClose error, GetLastError ()); else Print (OrderClose - OrderTicket ()); }}

  9. #9
    grazie mille per aver trovato il tempo di postare questo problema, ho difficoltà a tradurre la sintassi all'interno del ciclo if in che modo questa differenza tra LotA e Lotto B? o si presume che TakeProfit A debba prima essere eseguito in modo tale che controlli per gt; cosa sta facendo questa linea di codice? Codice inserito double dNewLotSize = NormalizeDouble (OrderLots ()2, 2); Supponevo che questo avrebbe dovuto accadere selezionando il numero di chiusura tramite il biglietto, ma il tuo loop di if sembra aggirarlo, ho solo difficoltà a tradurlo chiaramente

  10. #10
    come funziona questo intorno al numero del biglietto?

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Il sito di forexmad utilizza cookie
Il sito di forexmad utilizza cookie, alcuni dei quali già installati. Per avere maggiori informazioni sui nostri cookie ti preghiamo di cliccare qui. Ti preghiamo di cliccare sul bottone a destra per accettare i nostri cookie. Se continui a navigare sul sito di forexmad assumeremo che sei d'accordo ad utilizzarli.