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

 
Qra:

Buona giornata a tutti!

Sto scrivendo il mio primo bot e allo stesso tempo sto facendo conoscenza con MQL. Ho il seguente problema durante i test:

L'ordine OP_BUYSTOP viene eseguito subito dopo l'ordine, anche se a giudicare dal grafico, il prezzo non raggiunge il valore target (vedi sotto)

TempoTipoOrdinaVolumePrezzoS / LT / PProfittoEquilibrio
12011.09.19 02:10comprare stop10.0176.93576.73577.135
22011.09.19 02:10comprare10.0176.93576.73577.135

USDJPY,M5 (visivo)

Data 2011.09.19

Tempo 02:15

Aperto 76.903

Alto 76.909

Basso 76.890

Chiudere 76.890

Volume 66

Sto testando tutte le zecche.

Forse non capisco bene l'ordine OP_BUYSTOP? Comprare se il prezzo supera un certo valore, giusto?

Ecco un po' di codice sorgente che piazza un ordine

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);

Grazie mille a tutti voi in anticipo!

Sul grafico a candele, tutti i prezzi sono Bid e qualsiasi ordine di acquisto viene eseguito al prezzo Ask.
 
PapaYozh:
Sul grafico a candele, tutti i prezzi sono Bid e qualsiasi ordine di acquisto viene eseguito al prezzo Ask.

Grazie!

 
Ciao a tutti!

Voglio cancellare le linee orizzontali pendenti se il loro livello è stato rotto dal prezzo corrente. Un altro modo per dirlo: se il livello è stato superato o "rinegoziato" già dopo la creazione di OBJ_HLINE.

Grazie a Roll per l'aiuto. Potreste dirmi come tracciare correttamente la condizione di mantenere il livello ad un periodo noto?
//----------------------------------------------------------------------+ 
//  Удаление  OBJ_HLINE при пробитии его уровня   /Red-Up/Blue-Down|    |
//----------------------------------------------------------------------+   
void DelHLine( string nm="")  
   {
    int obj_total=ObjectsTotal();

       for(int i=1;i<obj_total;i++) 
      { 
        nm=ObjectName(i);
         if(nm==ObjectName(i)&&ObjectType(nm)==OBJ_HLINE)
         {
          color    cl     = ObjectGet(nm,OBJPROP_COLOR);
          double   pl     = ObjectGet(nm,OBJPROP_PRICE1);
          datetime timeSet= ObjectGet(nm,OBJPROP_TIME1);
          int      shift  = iBarShift(NULL,0,timeSet);
   
          if((cl==Red  && pl<High[iHighest(NULL,0,MODE_HIGH,shift,1)])||
             (cl==Blue && pl>Low [iLowest (NULL,0,MODE_LOW, shift,1)]) ) ObjectDelete(nm); 
         } 
      }
    return(0);  
  }
//+------------------------------------------------------------------+
 

Ciao, per favore aiutami.

Non riesco a capire perché questo script non visualizza i dati in excel come colonne.

Quando lo si esegue in excel, c'è solo un'intestazione di tabella, nessun dato.

Aiutami a capire perché il delimitatore non viene percepito da excel.

File:
writefile.mq4  3 kb
 

Sto iniziando con la programmazione, quindi sorgono molte domande, grazie in anticipo per la vostra attenzione!

Ho scritto uno script chiamato NewScript, che esegue una semplice funzione - visualizzare i prezzi OHLC per barre su un grafico...

La mia domanda è - se BARS è esattamente il numero di barre sul grafico corrente, allora perché nel mio log EA visualizza il numero di barre sullo schermo (circa 200), ma nel mio log più di 2000?

Grazie!

File:
 
Vinin:


Piccola correzione


double Hi (int pos=0) //создали Hi, зависящую от pos
{ 
  int i=pos; //присваиваем "i" значение от "pos", то есть i равно pos
  double H=0;
  while (i<=pos+10) //как она может быть меньше, если она равна?
  {
    if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i))  //это мне вообще не понятно... то есть если значение "Н" будет меньше, то присваиваем...  
      H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i); //то есть он определит мне наинизший, но не наивысший бар


    i++; //ну тут мы добавляем к "i" плюс 1
  }
  return(H); //возвращаем Hi в самое начало
}

Mi dispiace, non riesco a capire la funzione...

 
CLAIN:



L'opzione più semplice

double Hi (int pos=0) 
{ 
  double H[10]; // Объявили массив
  
  for (i=pos+1;i<=pos+10;i++) // формируем массив
  {
    H[i]=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  }
  int MaxId=ArrayMaximem(H); ищем индекс максимального элемента
  return(H[MaxId]); // возвращаем максимальный элемент
}
 

Ciao!

Puoi aiutarmi a scrivere il codice per fermare l'EA per un po'?

Ho scritto il codice in questo modo.

int init() {
string OrderStop="OrderStop "+ Symbol();
OrderSig =GlobalVariableGet(OrderStop);
// Print (OrderSig);

return (0);
}

int deinit() {
return (0);
}

int start() {
string OrderStop="OrderStop "+ Symbol();
OrderSig = GlobalVariableGet(OrderStop);

se (OrderSig==1)return(0);

else {

Corpo EA (codice)

}

ritorno(0);

}

Nel trailer questo codice funziona, ma quando compilo o rilancio Terminal,

L'EA inizia a lavorare (apre la posizione) e non fa più trading.

Cosa può essere?

O ditemi un'altra opzione.

 
alega:

O suggerire un'altra opzione.

Usare una f:

  Sleep (3000);
 
Grazie, farò una prova.