[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 296

 
forexnew:

Come ritrarre:

/

in stringa?

Per esempio:

string path=TerminalPath()+"/logs/"+tekTime+".log";

dà un errore, e se si rimuove la barra "/"

string path=TerminalPath()+"logs "+tekTime+".log";

- nessun errore.




Leggi qui e qui.

 
ZZZEROXXX:

forse vedere cos'altro restituisce IsTradeAllowed()?

Potresti per favore aiutarmi? Sto cercando di costruire una tendenza per due punti, collegata alle barre per N barre avanti dall'ultimo punto. Cioè in arrivo - tempo-prezzo del primo e del secondo punto, e N espresso in numero di barre avanti (casella di controllo fascio = falso). Se il secondo punto, supponiamo, si trova sulla barra 1 dalla barra 0 corrente, e devo trarne 10 barre avanti, come posso calcolare il tempo e il prezzo della barra dal futuro?

Anche questo funziona, se ti capita di colpire per sbaglio un thread commerciale occupato mentre compili il tuo EA. Sto cercando un modo per visualizzare nei commenti EA i messaggi dei log sulle richieste. Sembra che praticamente non siano in molti ad aver chiesto un compito del genere.
 
PapaYozh:


Leggi qui e qui.

Grazie!
 

Gli stimati guru non possono aiutare?

pvm117 20.10.2011 18:26

Buon pomeriggio!

Come prima esperienza ho deciso di implementare il seguente algoritmo: posso aspettarmi un forte movimento di mercato verso l'alto o verso il basso in un certo tempo dopo che le linee di Bollinger convergono in uno stretto corridoio. Nel mio Expert Advisor, analizzo lo stato delle linee di Bollinger e quando queste si avvicinano molto(Delta pips), mettiamo un ordine di vendita pendente nella direzione inferiore (a stepOpen pips sotto la linea inferiore), sperando che il mercato vada improvvisamente in quella direzione. Se il mercato va in un'altra direzione, cancelliamo semplicemente questo ordine.

extern double Delta=800.0;              // Ширина канала, которую мы считаем достаточно узкой чтобы ожидать скоро серьезного движения в одну из сторон
extern double StepOpen=150.0;           // Отступ от линии Боллинджера  для открытия отложенного ордера
extern double TP=350.0;                 // Take Profit
extern double SL=400.0;                 // Stop Loss

int start()
  {
   double T1=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,0);  // верхняя линия Боллинджера
   double T2=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,0); // нижняя линия Боллинджера
   if ((Ask>T1+StepOpen*Point)&&OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true) OrderDelete(0); // если рынок пошел вверх – то удаляем отложенный ордер
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true) return(0); // если есть ранее открытый ордер – прекращаем выполнение текущей итерации советника
   if (T1-T2<Delta*Point) {               // если линии Боллинджера сблизились ближе чем на Delta пунктов начинаем операцию открытия ордера
      double PriceOpen=NormalizeDouble(T2-StepOpen*Point,5);  // вычисляем цену открытия
      double StopLoss=NormalizeDouble(T2-StepOpen*Point+SL*Point,5); // вычисляем StopLoss
      double TakeProfit=NormalizeDouble(T2-StepOpen*Point-TP*Point,5); // вычисляем TakeProfit
      OrderSend(Symbol(),OP_SELL,0.1,PriceOpen,5,StopLoss,TakeProfit,0,0,0,Green); //  открываем ордер на продажу
            }
   return(0);
  }
L'algoritmo funziona in modo instabile, a volte apre due ordini in un breve periodo di tempo, dà costantemente errori OrderSend Error 130 e OrderSend Error 138, e la rimozione degli ordini aperti nel caso in cui il mercato si muova nell'altra direzione non funziona affatto.

Per favore, consigliateci! Grazie!

 
pvm117:

Gli stimati guru non possono aiutare?

pvm117 20.10.2011 18:26

Buon pomeriggio!

Come prima esperienza ho deciso di implementare il seguente algoritmo: posso aspettarmi un forte movimento di mercato verso l'alto o verso il basso in un certo tempo dopo che le linee di Bollinger convergono in uno stretto corridoio. Nel mio Expert Advisor, analizzo lo stato delle linee di Bollinger e quando si avvicinano molto(Delta pips) , mettiamo un ordine di vendita pendente nella direzione inferiore (a stepOpen pips sotto la linea inferiore), sperando che il mercato vada improvvisamente in quella direzione. Se il mercato va in un'altra direzione, cancelliamo semplicemente questo ordine.

L'algoritmo funziona in modo instabile, a volte apre due ordini in brevi intervalli, dà costantemente errori OrderSend Error 130 e OrderSend Error 138, e la rimozione degli ordini aperti nel caso in cui il mercato si muova nell'altra direzione non funziona affatto.

Per favore, consigliateci! Grazie!

OrderSend(Symbol(),OP_SELL,0.1,PriceOpen,5,StopLoss,TakeProfit,0,0,0,Green); //  открываем ордер на продажу

Questo nonè un ordine pendente, ma un ordine a mercato .

di conseguenza il suo prezzo di apertura deve essere diverso e non può essere cancellato (OrderDelete), ma solo chiuso

 

Saluti a tutti gli intenditori ed esperti lettori di questo thread! E chiunque possa aiutarmi=)

Qual è il modo più semplice e "corretto" per ottenere la periodicità? Cioè, per semplificare, voglio eseguire automaticamente qualche azione ogni 15 minuti.

Nel mio caso, sta salvando un file su disco con alcune statistiche. Ora ho uno script che fa quello che voglio, e sono letteralmente 20 righe di codice. Quindi come faccio a far ripetere queste 20 linee a intervalli? Come ho capito, non ci sono timer in MQL... Ho bisogno di usare un EA che faccia una specie di controllo ogni tick...?

Spero nel vostro aiuto e nei vostri consigli)

 
Ciao, puoi dirmi se c'è un altro modo per impostare il timeframe di un EA multivaluta oltre che nell'indicatore tramite M_30 H_1, D_1 e così via?
 
skyjet:
Ciao, puoi dirmi se c'è un altro modo per impostare il timeframe di un EA multivaluta oltre che nell'indicatore tramite M_30 H_1, D_1 e così via?

Qual è il problema?
 

Salve.

Ecco una domanda: consigliate come usare la linea gialla come previsione di momentum e la linea bianca come previsione OsM su un lungo uptrend del frame superiore?

È difficile determinare l'ampiezza tra i picchi delle onde, quindi consiglia dove scavare dopo ;)


 
Sancho77:

Seleziona il primo, tra le posizioni aperte.

Ti serve tutto per controllare la distanza in pip tra la prima posizione aperta e l'ultima posizione aperta tra le posizioni aperte.

Solo una veloce riscrittura, forse aiuterà? Non ha controllato...

double PriceOpenFirstPos(string sy="", int op=-1, int mn=-1) {
   datetime t=TimeCurrent();
   double   r=0;
   int      i, k=OrdersTotal();

   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()==sy || sy=="") {
            if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
               if (op<0 || OrderType()==op) {
                  if (mn<0 || OrderMagicNumber()==mn) {
                     if (OrderOpenTime()<t) {
                        t=OrderOpenTime();
                        r=OrderOpenPrice();
                        }
                     }
                  }
               }
            }
         }
      }
   return(r);
}

Prova in questo modo...