[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 171

 

C'è un indicatore, Sanyok è l'autore.

Segna il livello di un frattale formato su una barra con un volume maggiore del volume medio delle ultime 3 barre prima del frattale.

come caricarlo in un EA?

Ci sto provando:

h=NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits);

l=NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_LOWER, 1),Digits);

non funziona.

File:
vfractals.mq4  4 kb
 
NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits); 1. MODE_UPPER e MODE_LOWER significa che prendi i valori dai buffer del primo e del secondo indicatore (hai zero e primo) 2. Il numero 1 significa che si prende il valore del [1]-esimo elemento (sull'ultima barra)
 
ilunga:
NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits); 1. MODE_UPPER e MODE_LOWER significa che prendi i valori dai buffer del primo e del secondo indicatore (hai zero e primo) 2. Il numero 1 significa che il valore di [1]-esimo elemento è preso (alla barra precedente)

Grazie.
 

Spostato.

Pavel447 02.03.2011 10:57
Come va!
Se avete un Expert Advisor (o uno script) che imposta automaticamente SL, TP, Trailing Stop, e trasferimento a BU su presa di profitto ...?
Grazie in anticipo).

 
Spostato.
dimeon 02.03.2011 11:41
sammi61:

Mi aiuti ad aggiungere un lotto dinamico al codice di un EA, in modo che il lotto aumenti con l'aumento del deposito, o come percentuale del deposito?
Se lotto è 0, allora il lotto automatico è abilitato, se è un valore, allora il lotto è fisso
File allegati:
FiboWave_v1_1lavtolot.mq4 (9,26 KB) rimosso
 
artmedia70:
Gli array possono essere usati in così tanti casi e per così tanti compiti diversi. Qual è dunque l'esempio giusto?
  if (Cls_B[i]||Cls_S[i]) LotCt=NormalizeLot(OrderLots()/(4-i)); 
come scrivere [i] ? Mi sembra di dichiararlo come variabile..., dà un errore di compilazione. Non capisco ... Chiede un valore intero, ma un array può anche essere dichiarato come variabile?!
 

100yan:
как прописать [i] ?

Chiede un valore intero, ma un array può anche essere dichiarato come variabile?!

Sii più specifico.

un array è una variabile con lo stesso nome ma un numero diverso

 
100yan:
come scrivere [i] ? Mi sembra di dichiararlo come variabile..., dà un errore di compilazione. Non capisco ... Chiede un valore intero, ma un array può anche essere dichiarato come variabile ?!
Qualsiasi costruzione tra parentesi [] deve avere il tipo di dati int.
 

Potete dirmi qual è il significato di questo schifo nei registri? Come posso evitarlo? L'Expert Advisor fa trading con questo indicatore, dopo un errore il trade si blocca finché non si riavvia il terminale perché riavviando l'Expert Advisor potrebbe bloccarsi di nuovo.

22:39:53 +ZigZag_Levels CLJ1,M5: uninit reason 3
22:39:53 Zigzag CLJ1,M5: uninit reason 1

22:39:53 Zigzag CLJ1,M5: rimosso

Forse è perché sto usando il terminale su un server remoto e sul mio computer allo stesso tempo?

 
todem:

Ciao a tutti! Ho una domanda: in questa funzione per due posizioni (buy e sell) ho impostato lo stop-loss in modo che per sell SL=open buy+18 pips, e viceversa per buy:

бла-бла-бла...

I prezzi di apertura delle posizioni opposte sono ottenuti dalla funzione:

бла-бла-бла...

Conosciamo la funzione ModifyOrder come una funzione standard di KIMIW, la usiamo per impostare gli stoploss calcolati...

La domanda è: l'EA imposta gli stoploss solo per una vendita e non per un acquisto, chi lo pensa?


void SimpleLock(string sy="", int mn=-1) {
  double po, pp, ops1=0, ops2=0, opb;
  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=="") {
        po=MarketInfo(OrderSymbol(), MODE_POINT);
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_SELL) {
            opb=OrderStopLoss();                            // Значение стопа позиции до модификации = (0???)
            ops2=NormalizeDouble(OrderPrice(OP_BUY),Digits);
            if (ops2>0 && opb!=0) {
                ModifyOrder(-1, ops2+18*po, -1);
              }
            
          }
          if (OrderType()==OP_BUY) {
            opb=OrderStopLoss();
            ops1=NormalizeDouble(OrderPrice(OP_SELL),Digits);
            if (ops1>0 && opb!=0) {
                ModifyOrder(-1, ops1-18*po, -1);
              }
            
          }
        }
      }
    }
  }
}

Se lo stop non è impostato, la modifica non viene chiamata...

Se non si imposta lo stop-loss per il lungo, allora la modifica non viene chiamata..:

double OrderPrice(int type) {
   double price;
   int i, k=OrdersTotal();
      
      for (i=0; i<k; i++) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==type) {
            price=OrderOpenPrice();  // Значение цены открытия в списке ордеров терминала позиции с типом type и индексом i
            }
         }
      }
   return(price);  // Возвращает цену открытия последней в списке ордеров позиции с типом type и индексом не более k-1
}

Sei sicuro che il prezzo di apertura dell'ordine richiesto sia restituito?