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.