Impostazione dell'ora di inizio per EA? - Pagina 3

 

Publi

Impostazione dell'ora di inizio per EA?

 

Publi

Pagina 3 di 4 PrimaPrima 1234 UltimaUltima
Risultati da 21 a 30 di 32

Discussione: Impostazione dell'ora di inizio per EA?

  1. #21
    La prima cosa che ho notato nel codice di Ronald è che sembrava mancare un ) : if (TimeCurrent() gt;= StrToTime (08:30) TimeCurrent() lt;= StrToTime (19:30) CanTrade = True; Sembra mancare a ) per chiudere il primissimo nel codice davanti a TimeCurrent. Corretta?

  2. #22
    può essere. Ho appena chiuso la prima sezione (l'intera routine potrebbe essere 1 segmento e doveva essere chiusa più in basso nella catena) ma se dice ???sbilanciato??? puoi credere che lo sia. - potrebbe essere spento ovunque però.

  3. #23

    Citazione Originariamente Scritto da ;
    rallentare e controllare meglio gli errori. guarda alcuni esempi funzionanti per avere un'idea della struttura del programma. nessuno ti INSEGNER?? a programmare qui.[codice]//Sell if (Order == SIGNAL_SELL ((EachTickMode !TickCheck) || (!EachTickMode (Bars != BarCount)))) {/Loop #1...
    Abbastanza giusto e non ho intenzione di sfidare un programmatore, ma prima di aggiungere il codice dell'ora di inizio, non si sono verificati errori qui in quanto i loop non sono chiusi come hai suggerito. In realtà il programma è stato compilato senza errori e ha funzionato fino a quando non ho inserito la codifica dell'ora. Devo solo risolvere il problema di far iniziare la codifica dell'ora nella posizione corretta con la parentesi corretta.

  4. #24
    rallentare e controllare meglio gli errori. guarda alcuni esempi funzionanti per avere un'idea della struttura del programma. nessuno ti INSEGNERA' a programmare qui. Codice inserito/Sell if (Order == SIGNAL_SELL ((EachTickMode !TickCheck) || (!EachTickMode (Bars != BarCount)))) {/Loop #1 if(!IsTrade) {/Loop #2/Controlla il margine libero if (AccountFreeMargin() lt; (1000 * Lots)) {/Loop #3 Print(Non abbiamo soldi. Free Margin = , AccountFreeMargin()); return(0);}/Fine del ciclo #3 }/Fine del ciclo #2 }/Fine del ciclo #1 Nota: le righe di fine parentesi raramente puntano alla riga corretta. - Ne mancava uno che chiudeva il ciclo n. 1 - Assicurati sempre che {} e () corrispondano. Scrivi un codice più pulito con una spaziatura sufficiente per cancellare facilmente errori come questo. In realtà questo codice sembra molto lontano dal funzionare, ma questo è il processo. Prima imparerai tutti i modi per NON far funzionare un programma poi smetterai di fare quegli errori.

  5. #25
    Grazie per la risposta. Questo è probabilmente semplice per un programmatore, ma ora sto ricevendo un errore di fine programma - parentesi sinistra sbilanciata e sto lottando su dove deve andare la parentesi per rimuovere lo squilibrio. Mi sta indirizzando verso una linea che non penserei sarebbe dove si verificherebbe lo squilibrio. Mi sta indirizzando alla sottolineatura in grassetto del codice sottostante, che è la parte finale dell'EA. C'è un modo semplice per determinare il loion corretto o dovrei usare il metodo per tentativi ed errori fino a quando non lo trovo?/Sell if (Order == SIGNAL_SELL ((EachTickMode !TickCheck) || (!EachTickMode (Bars != BarCount)))) { if(!IsTrade) {/Controlla margine libero if (AccountFreeMargin() lt; (1000 * Lotti)) { Print(Non abbiamo soldi. Free Margin = , AccountFreeMargin()); return(0);} } if (Use_Stop_Loss) StopLossLevel = Offerta StopLoss * Punto; altrimenti StopLossLevel = 0.0; if (Use_Take_Profit) TakeProfitLevel = Offerta - TakeProfit * Punto; altrimenti TakeProfitLevel = 0.0; if(OrderOpenTime() != Current_Bar) { Ticket = OrderSend(Symbol(), OP_SELL, LotsOptimized(), Bid, Slippage, StopLossLevel, TakeProfitLevel, Sell(# MagicNumber ), MagicNumber, 0, DeepPink); Avviso (breve, rosso); if(OpenBar != Barre) OpenBar = Barre; } if(Ticket gt; 0) { if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print(VENDI ordine aperto: , OrderOpenPrice()); if (SignalMail) SendMail([Signal Alert], [ Symbol() ] DoubleToStr(Bid, Digits) Open Sell); } else { Print(Errore nell'apertura dell'ordine di VENDITA: , GetUltimoErrore()); } } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; ritorno(0); } } if (!EachTickMode) BarCount = Bars; ritorno(0);

  6. #26
    deve essere start() {/La parentesi sopra è importante bool CanTrade = False; if (TimeCurrent() gt;= StrToTime (08:30) TimeCurrent() lt;= StrToTime (19:30) CanTrade = True; { int Order = SIGNAL_NONE; int Total, Ticket; double StopLossLevel, TakeProfitLevel; datetime Current_Bar = Time [0]; if (EachTickMode Bars != BarCount) TickCheck = False; Total = OrdersTotal(); Order = SIGNAL_NONE; resto del codice..... return(0); }

  7. #27
    Ronald, sono un neofita della programmazione quindi sii paziente. Ho provato questo ma non sembrava funzionare quando l'ho compilato. Ho ricevuto i seguenti errori: 'bool' - punto e virgola previsto C
    file di programma MetaTrader - Esperti di Alpari UK Lag3.mq4 (81, 1) 'CanTrade' - espressione sull'ambito globale non consentita C
    rogram FilesMetaTrader - Alpari UKexpertsLag3.mq4 (82, 80) Ecco come l'ho impostato:/ --------------------------- --------------------------------------- /| funzione di avvio esperto |/ ----------------------------------------------- ------------------- int start() bool CanTrade = False; if (TimeCurrent() gt;= StrToTime (08:30) TimeCurrent() lt;= StrToTime (19:30) CanTrade = True; { int Order = SIGNAL_NONE; int Total, Ticket; double StopLossLevel, TakeProfitLevel; datetime Current_Bar = Time [0] if (EachTickMode Bars != BarCount) TickCheck = False Totale = OrdersTotal();Ordine = SIGNAL_NONE;

  8. #28
    if (TimeCurrent() gt;= StrToTime(08:30) TimeCurrent()lt;= StrToTime(19:30) CanTrade = True Quest'area va sotto Start() ma prima della logica di immissione.

  9. #29
    ?? inoltre possibile utilizzare: Codice inserito extern StartHour=2/02:00 = 2:00 - 14:00 = 14:00 extern StartMinute=0/Immettere come 24 ore extern WORKHours=12; bool ScambioOK=falso; doppio tempo di spegnimento; if(TradeOK==false TimeHour(TimeLocal())gt;=StartHour TimeMinute(TimeLocal())gt;=StartMinute){TradeOK=tr ue; ShutOffTime=TimeCurrent() (WORKHours*3600);} if(TimeCurrent()gt;=ShutOffTime){TradeOK=false;} if(TradeOK){......La tua routine ......} C'è anche TimeDayOf Week da attivare anche in un determinato giorno. TimeLocal prende il tempo dal tuo computer locale. Questa routine inizia in posizione 'OFF'. NOTA: 3600 secondi (60*60) in 1 ora.

  10. #30
    bool CanTrade = Falso; if(TimeCurrent() gt; StrToTime(02:30)) CanTrade = True; Questo codice dice all'EA che se il tempo è maggiore di 2:30, tempo del broker, può piazzare uno scambio.

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.