Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 752

 

come chiudere un ordine alla chiusura di una barra o candela

int start()
  {
      if ((Time[0] == prevtime) && openbarspriceonly) {
      return(0);
      }
   
      if (! IsTradeAllowed()) {
      Comment("Trades disallow");
      return(0);
      }
   
      prevtime = Time[0];

    if (CountTrades() == 0)
    {
        open = iOpen(Symbol(), PERIOD_D1, 0);
        close = iClose(Symbol(), PERIOD_D1, 1);

     if (DayOfWeek()==1&& Ask >= open)
     { 
        ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, 0, 0, NULL, Magic, 0, Blue);
        if (ticket>0)
        {
          Print("Ордер ошибка в Лонг: ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }
     }
     if (DayOfWeek()==5&& Bid <= open)
     {
        ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, NULL, Magic, 0, Red);
        if (ticket>0)
        {
          Print("Ордер ошибка в Шорт ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }

     }
    }
    return(0);
  }
 
ikatsko:

Neltester della strategia il comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Questo succede in situazioni in cui, per esempio, lo strumento è EURUSD e la valuta di saldo è RUR .... e in altre combinazioni. La mia comprensione è chela valuta di equilibrio deve essere la stessa del nome della seconda valuta nella coppia di valute. Altrimenti, restituisce un valore zero (nel tester di strategia), il che rende impossibile eseguire test con le combinazioni desiderate. Come risolvere questo problema?

L'evidenziazione non è corretta! Sto calcolando in euro con EURUSD, GBPUSD ecc. Solo quando è acceso può dare 0 prima del primo dato, ecco perché ho messo una condizione prima dei calcoli conTICKVALUE che se != 0;

Nel tester,MarketInfo() potrebbe non funzionare, quindi conoscendo il prezzo approssimativo di un tick, lo imposto con la condizione IsTesting() || IsOptimization() || IsVisualMode().

"Conoscere ilprezzo approssimativo di un tick " ? La mia soluzione è la seguente: prezzo approssimativo di un tick = 10*CURRENCY (USDCurrencyBalance). È impostato in tutti i parametri. Naturalmente, sarebbe bello se il tasso di cambio della coppia di valute (USDBalance currency) potesse essere preso automaticamente nel terminale. Vale a dire, conoscendo la valuta del saldo (AccountInfoString(ACCOUNT_CURRENCY)), per esempio, RUR, formare una stringa di nome di carattere, per esempio, USDRUR. Vedere se c'è un tale simbolo nel terminale? Forse c'è un simbolo simile, per esempio USDRUR_c? Prendi una coppia di valute che è disponibile nel terminale.

 
artmedia70:
Cosa c'entra Vista? Il topo, il topo sta già morendo. Presto diventerà stantio ;)
Ho un portatile senza mouse, non come prima con un grande computer il mouse mi faceva male l'indice!
 
ikatsko:

Neltester della strategia il comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Questo succede in situazioni in cui, per esempio, lo strumento è EURUSD e la valuta di saldo è RUR .... e in altre combinazioni. La mia comprensione è chela valuta di equilibrio deve essere la stessa del nome della seconda valuta nella coppia di valute. Altrimenti, restituisce un valore zero (nel tester di strategia), il che rende impossibile eseguire test con le combinazioni desiderate. Come risolvere questo problema?

L'evidenziazione non è corretta! Sto calcolando in euro con EURUSD, GBPUSD ecc. Solo quando è acceso può dare 0 prima del primo dato, ecco perché ho messo una condizione prima dei calcoli conTICKVALUE che se != 0;

Nel tester,MarketInfo() potrebbe non funzionare, quindi conoscendo il prezzo approssimativo di un tick, lo imposto con la condizione IsTesting() || IsOptimization() || IsVisualMode().

"Conoscere ilprezzo approssimativo di un tick " ? La mia soluzione è la seguente: prezzo approssimativo di un tick = 10*CURRENCY (USDCurrencyBalance). È impostato in tutti i parametri. Naturalmente, sarebbe bello se il tasso di cambio della coppia di valute (USDBalance currency) potesse essere preso automaticamente nel terminale. Vale a dire, conoscendo la valuta del saldo (AccountInfoString(ACCOUNT_CURRENCY)), per esempio, RUR, formare una stringa di nome di carattere, per esempio, USDRUR. Vedere se c'è un tale simbolo nel terminale? Forse c'è un simbolo simile, per esempio USDRUR_c? Prendi una coppia di valute che è disponibile nel terminale.

Non ne ho bisogno perché il prezzo del tick non cambia durante i test, così come lo spread e molte altre cose. Ecco perché ho sempreMarketInfo(Symbol(),MODE_TICKVALUE) sul grafico di qualsiasi simbolo, attaccato da qualsiasi indicatore grafico che uso, e metto il suo valore nel codice dell'EA prima del test.
 
borilunad:
Ho un portatile senza mouse, non come quando avevo un grande computer e il mouse mi faceva male il dito indice!

Quindi il touchpad è difettoso. Ha anche dei pulsanti.

O forse le mie dita sono cambiate ... :) Ma non credo che il "ronzio" sia la causa dell'OS

 
artmedia70:

Quindi il touchpad è difettoso. Ha anche dei pulsanti.

O le tue dita non sono più giuste... :) Ma non credo che il "rattle" sia la causa dell'OS

Non sono bravo con i termini, touchpad, sonaglio... Anche se il touchpad è quando la macchina cade?! Ma non ne ho paura, non ho una macchina e non ne ho bisogno. Mi piace camminare in una bella città, e quando devo, un trasporto pubblico molto comodo con buone strade e nessun ingorgo! :)
 
borilunad:
Non sono molto bravo con i termini, touchpad,"rattle" ... Anche se un touchpad è quando una macchina cade?! Ma non ne ho paura, non ho una macchina e non ne ho bisogno. Mi piace camminare in una bella città, e quando devo, un trasporto pubblico molto comodo con buone strade e nessun ingorgo! :)

Sei stato bannato da Google?

Touchpad(touchpad),touch panel è undispositivo di input di puntamento; l'invenzione riguarda l'automazione e l'ingegneria informatica e può essere utilizzata per leggere e inserire informazioni, come simboli, nonché informazioni sulle coordinate della posizione di elementi e parti in materiale magnetico, sulla superficie del touch panel. Il pannello a sfioramento contiene un pacchetto di circuiti stampati. Sugli strati di ogni circuito stampato ci sono elementi induttivi-capacitivi a spirale piatti collegati in serie lungo le righe e le colonne della matrice. Le matrici di tutti i PCB sono allineate tra loro. Uno strato isolante è posto tra le superfici adiacenti del PCB. Le uscite delle righe (colonne) della scheda i-printing sono collegate agli ingressi delle righe (colonne) della scheda (i+1)-printing, e gli ingressi delle righe e delle colonne della matrice del primo circuito stampato del pacchetto sono gli ingressi del touch panel, le cui uscite sono le uscite delle righe e delle colonne della matrice dell'ultimo circuito stampato del pacchetto. Come altri dispositivi di puntamento, un touchpad è tipicamente usato per controllare un "puntatore"muovendo un dito sulla superficie del dispositivo. I touchpad sono disponibili in una varietà di dimensioni, ma in genere sono di dimensioni inferiori a 50 cm². La forma è più spesso rettangolare, ma ci sono anche modelli circolari.

 

Potete dirmi cosa potrebbe essere la causa del glitch che si è verificato oggi?

L'EA ha un'opzione per fermare il trading 15 minuti prima della chiusura del mercato il venerdì.

Quando appare un nuovo giorno l'EA controlla se è venerdì, allora oggi si ferma il trading in StringToTime("23:59")-15*60

datetime FinishInFriday;
void OnTick()   {
   datetime cur=TimeCurrent();
   if(PrevDay!=Day()) {                               // при наступлении нового дня
      PrevDay =Day();
      
       if(TimeDayOfWeek(cur)==5) {                    // если сегодня пятница
         FinishInFriday=StringToTime("23:59")-15*60;    // время окончания торговли
         Print("Finish In Friday = ",FinishInFriday);   
       }
   }
   if(TimeDayOfWeek(cur)==5)
      if(cur>FinishInFriday) 
         return;
}

Nel tester della strategia, questa funzione funziona correttamente. Tuttavia, nel trading reale, vedo una situazione completamente diversa - l'Expert Advisor ferma il trading al primo tick quando arriva il venerdì.

Ecco le stampe del diario di Expert Advisor:

Broker #1, demo:

0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00

Broker 2, reale:

0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00

Cioè, quando appare la barra giornaliera di oggi (venerdì 24 ottobre) nel primo tick, l'EA

convertirà la linea "23:59" nell'ora di ieri invece di assegnare il giorno di oggi.

Ma se l'EA viene riavviato il venerdì a metà giornata, determinerà correttamente il tempo di completamento.

 
tuner:

Potete dirmi cosa potrebbe essere la causa del glitch che si è verificato oggi?

L'EA ha un'opzione per fermare il trading 15 minuti prima della chiusura del mercato il venerdì.

Quando appare un nuovo giorno l'EA controlla se è venerdì, allora oggi si ferma il trading in StringToTime("23:59")-15*60

Nel tester della strategia, questa funzione funziona correttamente. Tuttavia, nel trading reale, vedo una situazione completamente diversa - l'Expert Advisor ferma il trading al primo tick quando arriva il venerdì.

Ecco le stampe del diario di Expert Advisor:

Broker #1, demo:

0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00

Broker 2, reale:

0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00

Cioè, quando appare la barra giornaliera di oggi (venerdì 24 ottobre) nel primo tick, l'EA

convertirà la riga "23:59" nell'ora di ieri, invece di assegnare il giorno di oggi.

Ma se l'EA viene riavviato il venerdì a metà giornata, determinerà correttamente il tempo di completamento.

Date un'occhiata più da vicino.

Se il giorno di ieri non è uguale al giorno di oggi...

Entrerai in quell'unità solo una volta al giorno.

In qualche modo dubito che funzionerà correttamente anche nel tester.

Guarda MqlDateTime e TimeToStruct nella documentazione.

È una struttura semplice, ed è molto più comoda da lavorare che con tali conversioni di data e ora.

 
Vinin:

Sei stato bannato da Google?

Touchpad(touchpad),touch panel è undispositivo di input di puntamento; l'invenzione riguarda l'automazione e l'ingegneria informatica e può essere utilizzata per leggere e inserire informazioni, come simboli, nonché informazioni sulle coordinate della posizione di elementi e parti in materiale magnetico, sulla superficie del touch panel. Il pannello a sfioramento contiene un pacchetto di circuiti stampati. Sugli strati di ogni circuito stampato ci sono elementi induttivi-capacitivi a spirale piatti collegati in serie lungo le righe e le colonne della matrice. Le matrici di tutti i PCB sono allineate tra loro. Uno strato isolante è posto tra le superfici adiacenti del PCB. Le uscite delle righe (colonne) della scheda i-printing sono collegate agli ingressi delle righe (colonne) della scheda (i+1)-printing, e gli ingressi delle righe e delle colonne della matrice del primo circuito stampato del pacchetto sono gli ingressi del touch panel, le cui uscite sono le uscite delle righe e delle colonne della matrice dell'ultimo circuito stampato del pacchetto. Come altri dispositivi di puntamento, un touchpad è tipicamente usato per controllare un "puntatore"muovendo un dito sulla superficie del dispositivo. I touchpad sono disponibili in una varietà di dimensioni, ma in genere sono di dimensioni inferiori a 50 cm². La forma è più spesso rettangolare, ma ci sono anche modelli circolari.

Come me su Vista, e rettangolare sul mio nuovo 8-ka, che mi ha deluso con le sue buffonate, è impossibile lavorare tranquillamente, improvvisamente tutto va da qualche parte, deve essere una moda dei cellulari, pensano che tutto il mondo viva solo per l'intrattenimento! Grazie per il messaggio informativo (non si può fare una battuta?)!