Codice di chiusura parziale: serve aiuto

 

Publi

Codice di chiusura parziale: serve aiuto

 

Publi

Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 12

Discussione: Codice di chiusura parziale: serve aiuto

  1. #1
    Ciao,

    Ho scritto una funzione che chiude la metà (o qualsivoglia) posizione, tuttavia, dopo la chiusura parziale, chiude anche la seconda metà e non sono sicuro del perché.
    Ho letto del codice da Google ma non sono riuscito a trovare a di utile, continuerò a cercare su Google, ma ho già scoperto che ci sono persone fantastiche qui, quindi spero di ottenere una risposta in entrambi i casi.

    [MODIFICARE]
    Man mano che vengono aperti più scambi, questa funzione deve essere ripetuta più volte per assicurarsi che le nuove operazioni vengano parzialmente chiuse, non solo le operazioni iniziali.


    Questa è la funzione

    Codice inserito/ --------------------------------------------- --------------------- /| Profitto parziale del commercio |/ ----------------------------------------------- ------------------- void PartialTradeProfit () {int totOrders = 0; bool ok = true; for (int i = 0; ilt; OrdersTotal (); i ) {if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == false) interruzione;/if (OrderSymbol () == Symbol () (OrderMagicNumber () == MagicNumber) (OrderComment () == TradeComment) (OrderType () == OP_BUY || OrderType () == OP_SELL)) if (OrderSymbol () == Symbol () (OrderMagicNumber () == MagicNumber) (OrderType () == OP_BUY || OrderType () == OP_SELL)) {if ((OrderProfit () OrderCommission () OrderSwap ()) gt; = PartialTP ) {int type = OrderType (); switch (type) {case OP_BUY: ok = OrderClose (OrderTicket (), PartialLots, Bid, 3, clrBlue); rompere; caso OP_SELL: ok = OrderClose (OrderTicket (), PartialLots, Ask, 3, clrRed); rompere; }} if (! ok) {if (TryAgain lt; MaxTries) {Sleep (3000); Tryagain ; PartialTradeProfit (); } Avviso (chiusura non riuscita su OrderSymbol () : a causa di un errore: IntegerToString (GetLastError ()) . TryAgain: (stringa) TryAgain); } else {TryAgain = 1; }}}}/ ------------------------------------------- -----------------------
    E questo è come si chiama

    Codice inserito/ --------------------------------------------- --------------------- /| Funzione Expert OnTick |/ ----------------------------------------------- ------------------- void OnTick () {if (MarketInfo (Symbol (), MODE_SPREAD) lt; MaxSpread) {DoMagic (); }}/ --------------------------------------------- --------------------- / ------------------------- ----------------------------------------- /| Funzione magica |/ ----------------------------------------------- ------------------- void DoMagic () {if (NotDisabled) {if (IsNewBar ()) {if (DoPartialClose) {PartialTradeProfit (); } OpenExtraTrades (); AllThingies (); IsFirstieUpDown (); if (ReverseFractalsEntries || TrendFractalsEntries) {FractalThingies (); }}}}/ ------------------------------------------- -----------------------
    Ho pensato che una volta che la dimensione della posizione è ridotta rispetto a come è stata fatta, no? Forse dovrei riattivare TradeComment quando il commento viene modifio da xxxxx e non da TradeComment iniziale?



    Grazie in anticipo.

  2. #2
    Hmmmmmm ...... Cosa succede se controllo la dimensione del lotto prima di eseguire il corpo della funzione principale, in questo modo? Lo farà? Codice inserito/ --------------------------------------------- --------------------- /| Profitto parziale del commercio |/ ----------------------------------------------- ------------------- void PartialTradeProfit () {int totOrders = 0; bool ok = true; for (int i = 0; ilt; OrdersTotal (); i ) {if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == false) interruzione;/if (OrderSymbol () == Symbol () (OrderMagicNumber () == MagicNumber) (OrderComment () == TradeComment) (OrderType () == OP_BUY || OrderType () == OP_SELL)) if (OrderSymbol () == Symbol () (OrderMagicNumber () == MagicNumber) (OrderType () == OP_BUY || OrderType () == OP_SELL) (OrderLots () == Lotti)) {if ((OrderProfit () OrderCommission () OrderSwap ()) gt; = PartialTP) {int type = OrderType (); switch (type) {case OP_BUY: ok = OrderClose (OrderTicket (), PartialLots, Bid, 3, clrBlue); rompere; caso OP_SELL: ok = OrderClose (OrderTicket (), PartialLots, Ask, 3, clrRed); rompere; }} if (! ok) {if (TryAgain lt; MaxTries) {Sleep (3000); Tryagain ; PartialTradeProfit (); } Avviso (chiusura non riuscita su OrderSymbol () : a causa di un errore: IntegerToString (GetLastError ()) . TryAgain: (stringa) TryAgain); } else {TryAgain = 1; }}}}/ ------------------------------------------- -----------------------

  3. #3
    Al prossimo segno di spunta, EA esegue di nuovo la funzione di chiusura parziale. metti una bandiera, dove dopo la chiusura parziale fatta, EA non chiamerà di nuovo quella funzione.

  4. #4

    Citazione Originariamente Scritto da ;
    Al prossimo segno di spunta, EA esegue di nuovo la funzione di chiusura parziale. metti una bandiera, dove dopo la chiusura parziale fatta, EA non chiamerà di nuovo quella funzione.
    Grazie, ma dato il fatto che si aprono più operazioni, la funzione PartialTradeProfit () deve essere eseguita ancora e ancora per gestire le nuove operazioni.

  5. #5

    Citazione Originariamente Scritto da ;
    {quote} Grazie al fatto che sono state aperte più negoziazioni, la funzione PartialTradeProfit () deve essere eseguita ancora e ancora per gestire le nuove operazioni.
    Forse, non hai capito cosa intendo. mettere una bandiera sulla chiusura parziale già effettuata. da quello che capisco, vuoi solo fare una chiusura parziale una volta per ogni ordine, giusto?

  6. #6

    Citazione Originariamente Scritto da ;
    {quote} Forse non hai capito cosa intendo. mettere una bandiera sulla chiusura parziale già effettuata. da quello che capisco, vuoi solo fare una chiusura parziale una volta per ogni ordine, giusto?
    Sì, grazie, è quello che voglio. Come si mette una tale bandiera in un commercio?

  7. #7
    1 allegatoi
    Citazione Originariamente Scritto da ;
    {quote} Sì, grazie, è quello che voglio. Come si mette una tale bandiera in un commercio?
    quando si chiude un trade parzialmente, si ottiene un nuovo ticket n questo nuovo trade ticket n parzialmente chiuso si ha un commento in una sezione di commento che dice per fluttuare uno da # vecchio numero di ticket per un numero chiuso a nuovo numero di ticket se si modifica il proprio codice per non chiudere d parzialmente se il commercio mobile ha char # nella sezione di commenti, allora il tuo problema sarà risolto
    buona fortuna l'ho fatto in demo per mostrarti. commercio galleggiante parzialmente chiuso

  8. #8
    Citazione Originariamente Scritto da ;
    {quote} quando si chiude un trade parzialmente, si ottiene un nuovo ticket n questo nuovo trade ticket n parzialmente chiuso si ha un commento in una sezione di commento che dice per fluttuare uno da # vecchio numero di ticket per da chiuso a # nuovo numero di ticket se si modifica il tuo codice per non chiudere d parzialmente se il commercio mobile ha char # nella sezione di commenti quindi il tuo problema sarà risolto
    buona fortuna l'ho fatto in demo per mostrarti. trade floating parzialmente chiuso {immagine}
    Grazie, ho modifio il codice per apparire come di seguito, ST non sembra molto promettente, però
    ?? come se chiudesse parzialmente i primi scambi e il resto continuasse semplicemente avanti indipendentemente dal profitto (parziale) Codice inserito/ ------------------------ ------------------------------------------ /| Profitto parziale del commercio |/ ----------------------------------------------- ------------------- void PartialTradeProfit () {int totOrders = 0; bool ok = true; for (int i = 0; ilt; OrdersTotal (); i ) {if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == false) interruzione; if (StringFind (OrderComment (), #, 0) gt; = 0) break; if (OrderSymbol () == Symbol () (OrderMagicNumber () == MagicNumber) (OrderType () == OP_BUY || OrderType () == OP_SELL)) {if ((OrderProfit () OrderCommission () OrderSwap () ) gt; = PartialTP) {int type = OrderType (); switch (type) {case OP_BUY: ok = OrderClose (OrderTicket (), PartialLots, Bid, 3, clrBlue); rompere; caso OP_SELL: ok = OrderClose (OrderTicket (), PartialLots, Ask, 3, clrRed); rompere; }} if (! ok) {if (TryAgain lt; MaxTries) {Sleep (3000); Tryagain ; PartialTradeProfit (); } Avviso (chiusura non riuscita su OrderSymbol () : a causa di un errore: IntegerToString (GetLastError ()) . TryAgain: (stringa) TryAgain); } else {TryAgain = 1; }}}}/ ------------------------------------------- -----------------------

  9. #9

  10. #10

    Citazione Originariamente Scritto da ;
    Io uso uno script invece di EA, senza alcun problema. Puoi provare questo {file} {file}
    Grazie, lo usi su più operazioni, o anche solo una?

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.