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

 
FelixFX:

grazie

Sono stati trovati molti errori durante la compilazione
 
RoniIron:

Mi scusi...... l'advisor martingala, è possibile prescrivere uno stoploss in esso o non è possibile. Grazie.

La funzione OrderSend() ha lo stop loss come uno dei suoi parametri. Ed è essa che stabilisce l'ordine. Quindi, calcoliamo il livello di stop per l'ordine di cui abbiamo bisogno e lo inseriamo nella funzione.
 
FelixFX:

la compilazione ha rivelato molti errori

Beh, così sarà - vi ho avvertito che sono coinvolte le MIE subroutine! Rimuoveteli e sostituiteli con le vostre stampanti con GetLastError()
 
drknn:

Beh, lo sarà - ti ho detto che sono coinvolte le MIE subroutine! Rimuoveteli e sostituiteli con le vostre stampanti con la query GetLastError().

È facile da fare, se sei esperto di mql. ) Sto appena imparando, quindi per me è un po' difficile rimuovere tutte le cose inutili e lasciare solo quelle necessarie.
 
// =================================================================================================
// ************************* Трейлинг рыночных ордеров *********************************************
// =================================================================================================


// =================  TrailingRyn() =============================================================
// функция осуществляет трейлинг рыночных ордеров 
// ----------------------------------------------
void TrailingRyn_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, int MAGIC, bool WaitProfit,  bool UseTrailingSound) {
  string SMB=Symbol(); 
  int i;
  int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах   
  int SchBuy=SchBuy(MAGIC);
  int SchSell=SchSell(MAGIC);
  if(ryn_TrStop>=MinLevel && ryn_TrStep>0 && (SchBuy>0 || SchSell>0)){    
    for (i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордер № ",i);}
      else {
        if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC){
          TrailingPositions_b(ryn_TrStop,ryn_TrStep,Proskalz,WaitProfit,UseTrailingSound);
        }
      }
    }
  }
 if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
 Print("Трейлинг невозможен - ryn_TrStep==0");
} 
// =================================================================================================

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, bool WaitProfit, bool UseTrailingSound){
  if(OrderType()==OP_BUY){
    if(!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop*Point){
      if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep-1)*Point){
        ModifyStopLoss_b(Bid-ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
  if(OrderType()==OP_SELL){
    if(!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop*Point) {
      if(OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep-1)*Point || OrderStopLoss()==0){
        ModifyStopLoss_b(Ask+ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss_b(double ldStopLoss, bool UseTrailingSound){
  bool fm=false;
  string NameTrallingSound  = "ok.wav";// Наименование звукового файла для трейлинга
  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if(fm!=0 && fm!=-1){
    if(UseTrailingSound) { PlaySound(NameTrallingSound);}
  }   
  if(fm==0 || fm==-1) { Print("Ошибка № ",GetLastError()," при модификации ордера № ",OrderTicket());}
}
//+------------------------------------------------------------------+
 
VOLDEMAR:
Grazie ragazzi.....
Come si usa iCustom con iCustom e un indicatore che disegna una freccia in un certo punto per dire all'EA di aprire .....
Se iBands è un Ask > BBUP è comprensibile, ma che dire dell'oggetto che può apparire o meno (come la freccia) ??????


Tutto ciò, è necessario guardare il codice dell'indicatore, per capire quale dei buffer contiene il valore di quale linea.

Se vuoi inserire i parametri dell'indicatore nella funzione iCustom, allora i parametri dell'indicatore devono essere aggiunti alle variabili personalizzate dell'Expert Advisor. Altrimenti, l'EA non capirà quali valori sono nelle variabili elencate.

 
Ciao, per favore non prendermi a calci se sto facendo la domanda sbagliata, ma ho scavato in tutto il forum e in internet e non ho trovato quello che sto cercando. La domanda è questa! È possibile creare una condizione in se (dopo l'ultimo StopLoss (nel tempo) dovrebbe chiudere ad esempio 2 profitto) fino a quando non stanno facendo altro ... Se è possibile un piccolo schizzo in codice, ma è anche possibile solo disegnare uno schema in parole - grazie in anticipo!
 
ruzzo:
Ciao, per favore non prendermi a calci se sto facendo la domanda sbagliata, ma ho scavato tutto il forum e Internet e non ho trovato quello che stavo cercando. La domanda è questa! È possibile creare una condizione in se (dopo l'ultimo StopLoss (nel tempo) dovrebbe chiudere ad esempio 2 profitto) fino a quando non stanno facendo altro ... Se possibile, un piccolo schizzo in codice, ma si può semplicemente disegnare uno schema a parole, grazie in anticipo!


In generale, beh, non è chiaro di cosa hai bisogno esattamente.

Una condizione in if() può essere inserita. Può essere inserito dopo il verificarsi di qualsiasi evento. Ma cosa significa chiudere due profitti? E altro si può fare. Questo è tutto.


if(условие){

// какой-то код 

}

else{

// какой-то код 

} 
 
drknn:


In realtà, non capisco di cosa avete bisogno.

Una condizione in if() può essere inserita. Può essere inserito dopo il verificarsi di qualsiasi evento. Ma cosa significa chiudere due profitti? E altro si può fare. Il punto è...


Capisco che prima la condizione, e poi il codice, ma volevo creare una condizione, ho ottenuto StopLoss e lavorare con un altro lotto, per esempio - fino a chiudere l'affare con due profitti - solo non voglio confrontare il saldo in if - tutto perché se confronto il saldo, e ho un ordine pendente con un limite di tempo - il lotto cambiato salta - perché l'ordine scade con il lotto aumentato - forse non sto scavando?
 

Aiuto plz per capire.

Ho deciso di usare il MACD Sample e non riesco a capire cosa c'è di sbagliato - non importa quale versione, anche quella nativa nel terminale.

tutti danno errori:

2011.02.28 23:01:53 MACD Sample EURUSD,M15: Errore nell'aprire un ordine BUY: 130

Conto a 5 cifre. 1:500, lotto 0,1 o 1, nessuna differenza, conto reale.

Ho aumentato SL e TP di 10 volte, non è cambiato nulla, ho anche cambiato di più, nessun risultato, non riesco a fargli aprire qualcosa lì ((

Il fatto che funziona chiaramente, se apro un affare con le mani, poi lo trasferisce nella posizione senza perdita e comincia a pescare, ma non vuole aprirlo da solo!

Cosa sto sbagliando, non riesco a capire per una settimana!?