Domanda logica sul codice di uscita dal commercio

 

Publi

Domanda logica sul codice di uscita dal commercio

 

Publi

Risultati da 1 a 5 di 5

Discussione: Domanda logica sul codice di uscita dal commercio

  1. #1
    Quale affermazione logica è preferibile codificare?


    if (OrderType() == OP_BUY (iOpen(NULL,1,1) iClose(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3)) )
    risultato = OrderClose( OrderTicket(), OrderLots(), Bid, 50, Red );

    o

    if (OrderType() == OP_BUY (iOpen(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3))
    (iClose(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3)))
    risultato = OrderClose( OrderTicket(), OrderLots(), Bid, 50, Red );


    Sto usando il primo sopra bene (almeno compila ed esegue bene gli scambi), ma mi chiedevo se il secondo fosse migliore o verrebbe eseguito in modo diverso? Qualche idea sulle differenze logiche tra i due?

  2. #2
    perché usi normalizedouble per i prezzi? Non ha senso (perché vuoi normalizzare bid/ask/orderopenprice/ordercloseprice/ecc.?), vedi anche
    http://forum.mql4.com/45425Guarda anche
    http://forum.mql4.com/45425#564188se vuoi normalizzare i prezzi puoi usare la seguente funzione:/Il prezzo di apertura per ordini pendenti deve essere regolato in modo che sia un multiplo di ticksize, non punto, e sui metalli non sono gli stessi. Codice inserito double NormalizePrice(simbolo stringa, prezzo doppio) { if (prezzo==0.00000000) return(0.0); double ts = MarketInfo(simbolo,MODE_TICKSIZE); return(MathRound(prezzo/ts)*ts); } lo stesso per le dimensioni dei lotti:/La dimensione del lotto deve essere regolata in modo che sia un multiplo del lotto, che potrebbe non essere una potenza di dieci su alcuni broker/vedi anche la funzione originale di WHRoeder,
    http://forum.mql4.com/45425#564188, fxdaytrader Codice inserito double NormalizeLots(simbolo stringa, lotti doppi) { if (MathAbs(lots)lt;MarketInfo(symbol,MODE_MINLOT)) return(MarketInfo(symbol,MODE_MINLOT)); if (MathAbs(lotti)gt;MarketInfo(simbolo,MODE_MAXLOT)) return(MarketInfo(simbolo,MODE_MAXLOT)); double ls = MarketInfo(simbolo,MODE_LOTSTEP); lotti=MathRound(lotti/ls)*ls; return(MathMin(MarketInfo(simbolo,MODE_MAXLOT),Mat hMax(MarketInfo(simbolo,MODE_MINLOT),lots)));/controlla se i lotti gt;= min. lotti lt;= max. lotti, fxdaytrader }//double NormalizeLots(simbolo stringa, doppi lotti) {

  3. #3

    Citazione Originariamente Scritto da ;
    Quale affermazione logica è preferibile codificare? if (OrderType() == OP_BUY (iOpen(NULL,1,1) iClose(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3)) ) result = OrderClose( OrderTicket(), OrderLots( ), Offerta, 50, Rosso); oppure se (TipoOrdine() == OP_ACQUISTA (iOpen(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3)) (iClose(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss ),3))) risultato = OrderClose( OrderTicket(), OrderLots(), Bid, 50, Red ); Sto usando il primo sopra bene (almeno compila ed esegue bene gli scambi), ...
    Non credo che il tuo primo funzionerà correttamente Personalmente, lo farei Codice inserito se (OrderType()==OP_BUY MathMax(iOpen(NULL,1,1),iClose(NULL,1,1))lt; NormalizeDouble(OrderOpenPrice()-StopLoss,3) )

  4. #4

    Citazione Originariamente Scritto da ;
    {quote} Non credo che il tuo primo funzionerà correttamente Personalmente, lo farei se (OrderType()==OP_BUY MathMax(iOpen(NULL,1,1),iClose(NULL,1,1))lt ;NormalizeDouble(OrderOpenPrice()-StopLoss,3) )
    Il primo sta lavorando nel trading dal vivo, ma non sono ancora sicuro se stia effettivamente controllando entrambi i valori prima di chiudere, ma sta compilando perfettamente e chiudendo le negoziazioni intorno ai prezzi suggeriti. Ho solo bisogno che aspetti e controlli entrambi. Sto cercando di eliminare potenziali picchi di prezzo errati solo all'apertura o alla chiusura della barra che creerebbero il caos con questo EA che ha più posizioni aperte. Il tuo suggerimento mathmax sembra interessante. Potrei fare qualche copia massiccia, ripasting e test con esso. Ripensandoci, dopo un minuto o due, il mathmax non farà quello che voglio che faccia. Voglio che controlli i valori due volte in un minuto e il prezzo è inferiore al di sopra o al di sotto in entrambe le istanze non solo nell'istanza massima. Grazie comunque per il suggerimento, immagino di dover provare a testare con la mia seconda versione del codice invece di vedere eventuali differenze negli scambi di uscita.

  5. #5

    Citazione Originariamente Scritto da ;
    perché usi normalizedouble per i prezzi? Non ha senso (perché vuoi normalizzare bid/ask/orderopenprice/ordercloseprice/ecc.?), vedi anche
    http://forum.mql4.com/45425{
    Da quanto ho letto nei post penso che il consiglio sia di normalizzare prima di inviare gli ordini. Ci sono ragioni per cui normalizzerei un prezzo, ad esempio quando il prezzo è calcolato su prezzo variabile. Penso che quello che stai dicendo è che la normalizzazione del puro bid/ask/price basato sul server sia ridondante. Ma se il calcolo EA del prezzo è bid/ask/open più un importo variabile con cifre decimali eccessive, la normalizzazione all'equivalente lotsize/lotstep per il broker è l'unico modo per inviare l'ordine correttamente. Se sbaglio nella mia logica qui, per favore fatemelo sapere.

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.