Numeri magici per più EA

 

Publi

Numeri magici per più EA

 

Publi

Risultati da 1 a 10 di 10

Discussione: Numeri magici per più EA

  1. #1
    Ho un conto demo presso InterbankFX e ho creato più copie di un EA. Ogni EA ha il proprio numero magico. Ho allegato un EA separato a grafici diversi ma non riesco ad aprire più posizioni contemporaneamente per valute diverse. Sembra che possa funzionare solo per una valuta alla volta. Non appena chiudo una posizione, ne viene aperta automaticamente un'altra per un'altra valuta. C'è un'impostazione in MQ che mi manca. Grazie per l'eventuale assistenza. Nevoso2

  2. #2
    Grazie per aver sottolineato il mio errore. Pensavo che il test per l'ordine aperto fosse solo per l'EA/valuta specifica. Aggiusto il mio codice. Grazie ancora. nevoso2

  3. #3
    ecco come controllo se ho ordini aperti per una determinata valuta: Inserted Code for(i=0;ilt;total;i ) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); { if(SimboloOrdine()==Simbolo()) { open ; } } } Il tuo codice sta controllando a livello di terminale per vedere se ci sono ordini aperti, vuoi controllare solo a livello di simbolo.

  4. #4
    Sto pensando di imparare a programmare gli EA, ma vedere che sarebbe un grosso lavoro. Vorrei che ci fosse più documentazione per i principianti con esempi... o vorrei che Tesla non fosse così impegnata e potesse programmare per me!!!

  5. #5
    Il tuo codice gli dice di aprire un ordine solo se non ci sono altri ordini aperti. if(totalelt;1) lt;lt; Questo circonda la tua routine di apertura, non può cercare un'altra condizione di apertura dell'ordine se un ordine è attualmente aperto. Inoltre, la tua routine intima è un po' incasinata.

  6. #6
    Ciao Telsa, ecco l'EA con il codice Magic Number. Ancora una volta, per valute diverse, anche con numeri Magic diversi, funziona solo per una valuta alla volta. Sono perso. Grazie, Nevoso2/ ------------------------------------- ----------------------- /| MACD Numero Magico.mq4 |/| |/ -------------------------------------------------------------- ------------------- int MagicNumber = 260384; doppio TakeProfit esterno = 40; Lotti doppi esterni = 0,01; doppio TrailingStop esterno = 20; doppio esterno MACDOpenLevel=3; doppio esterno MACDCloseLevel=2; doppio esterno MATrendPeriod=26;/ -------------------------------------------------------------- ------------------- /| |/ -------------------------------------------------------------- ------------------- int start() { double MacdCurrent, MacdPrevious, SignalCurrent; doppio SegnalePrevious, MaCurrent, MaPrevious; int cnt, biglietto, totale;/controlli iniziali dei dati/è importante assicurarsi che l'esperto lavori con un grafico/normale e che l'utente non abbia commesso errori impostando variabili/esterne (Lots, StopLoss, TakeProfit,/TrailingStop) nel nostro caso , controlliamo TakeProfit/su un grafico con meno di 100 barre if(Barslt;100) { Print(bars less of 100); ritorno(0); } if(TakeProfitlt;10) { Print(TakeProfit meno di 10); ritorno(0);/controlla TakeProfit }/per semplificare la codifica e velocizzare l'accesso/i dati vengono inseriti nelle variabili interne MacdCurrent=iMACD(NULL,0,12,24,9,PRICE_CLOSE,MODE_ MAIN,0); MacdPrecedente=iMACD(NULL,0,12,24,9,PRICE_CLOSE,MO DE_MAIN,1); Corrente Segnale=iMACD(NULL,0,12,24,9,PRICE_CLOSE,MODE_SIGN AL,0); SegnalePrecedente=iMACD(NULL,0,12,24,9,PRICE_CLOSE ,MODE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRIC E_CLOSE,0); MaPrecedente=iMA(NULL,0,MATPeriodo Tendenza,0,MODE_EMA,PRICE_CLOSE,1); totale=Totale Ordini(); if(totallt;1) {/nessun ordine aperto identificato if(AccountFreeMargin()lt;(1000*Lots)) { Print(Non abbiamo soldi. Margine libero = , AccountFreeMargin()); ritorno(0); }/controlla la possibilità di posizione lunga (ACQUISTO) if(MacdCurrentlt;0 MacdCurrentgt;SignalCurrent MacdPreviouslt;SignalPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask TakeProfit*Point,MagicNoTest, MagicNumber,0,Verde); if(ticketgt;0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print(ordine ACQUISTO aperto:,OrderOpenPrice()); } else Print(Errore nell'apertura dell'ordine ACQUISTO: ,GetLastError()); ritorno(0); }/controlla la possibilità di posizione corta (VENDITA) if(MacdCurrentgt;0 MacdCurrentlt;SignalCurrent MacdPreviousgt;SignalPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,MagicNoTest, NumeroMagic,0,Rosso);if(ticketgt;0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print(ordine di VENDITA aperto:,OrderOpenPrice()); } else Print(Errore nell'apertura dell'ordine di VENDITA: ,GetLastError()); ritorno(0); } ritorno(0); }/è importante entrare correttamente nel mercato,/ma è ancora più importante uscirne correttamente... for(cnt=0;cntlt;total;cnt ) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()lt;=OP_SELL/controlla la posizione aperta OrderSymbol()==Symbol() OrderMagicNumber()==MagicNumber)/controlla il simbolo { if(OrderType()==OP_BUY)/la posizione lunga è aperto {/dovrebbe essere chiuso? if(MacdCurrentgt;0 MacdCurrentlt;SignalCurrent MacdPreviousgt;SignalPrevious) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;/chiude la posizione return(0);/esce }/controlla il trailing stop if(TrailingStopgt;0) { if(Bid-OrderOpenPrice()gt;Point*TrailingStop) { if(OrderStopLoss()lt;Bid-Point*TrailingStop) { OrderModify(OrderTicket() ,OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); ritorno(0); } } } } else/vai alla posizione short {/dovrebbe essere chiusa? if(MacdCurrentlt;0 MacdCurrentgt;SignalCurrent MacdPreviouslt;SignalPrevious) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;/chiude la posizione return(0);/esce }/controlla il trailing stop if(TrailingStopgt;0) { if((OrderOpenPrice()-Ask)gt;(Point*TrailingStop)) { if((OrderStopLoss()gt;(Ask Point*TrailingStop) ) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask Point*TrailingStop,OrderTakeProfit(),0,Red); ritorno(0); } } } } } } return(0); }/fine.

  7. #7
    Non ci sono abbastanza informazioni per capire quale sia il problema. Non essere timido, pubblica l'EA.

  8. #8
    Su Blackberry, risposta breve. Indovinare che EA non sia codificato in modo robusto. Pubblicalo e riceverai un feedback.

  9. #9
    Codifica per numero magico. int MagicNumber = 260384; doppio TakeProfit esterno = 40; Lotti doppi esterni = 0,01; doppio TrailingStop esterno = 20; doppio esterno MACDOpenLevel=3; ... if(MacdCurrentlt;0 MacdCurrentgt;SignalCurrent MacdPreviouslt;SignalPrevious) { Avviso(Stai acquistando qui.); ticket=InviaOrdine(Simbolo(),OP_BUY,Lotti,Chiedi,3 ,0,Chiedi Prendi Profitto*Punto,EAMACD,MagicNumber,0,Verde); if(ticketgt;0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print(ordine ACQUISTO aperto:,OrderOpenPrice()); } else Print(Errore nell'apertura dell'ordine ACQUISTO: ,GetLastError()); ritorno(0); } Grazie.

  10. #10
    Ecco una funzione rapida a cui puoi fare riferimento che restituirà un conteggio degli ordini che l'ea ha aperto sul simbolo corrente. Codice inserito #define MAGIC_NUMBER 8675309 int getOpenOrders() {/imposta il conteggio degli ordini iniziali su zero int iOrders = 0;/ripete tutti gli ordini aperti per (int i=OrdersTotal()-1;igt;=0;i--) {/seleziona l'ordine OrderSelect(i,SELECT_BY_POS);/se l'ordine non corrisponde a questo simbolo o EA, continua con l'ordine successivo if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC_NUMBER) continua;/è una corrispondenza, aggiungi 1 per contare iOrders ; }/restituisce il conteggio degli ordini return(iOrders); }

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.