[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 251

 
Ibiss >> :

Come programmare correttamente un'uscita ad un incrocio inverso delle linee principali e di segnale? perché i segnali arrivano in brevi intervalli di tempo... e gli ordini non vengono chiusi dove dovrebbero nella condizione...

questa domanda mi tormenta da molto tempo! AIUTO!

Ecco la condizione di uscita:


Non sono un asso ma

if(OrderMagicNumber()!= MAGICMA || OrderSymbol()!=Symbol()) continue;

se (OMN non è uguale a OMN o OS non è uguale a OS) {allora continua}


ma significa che l'ordine non appartiene all'Expert Advisor

prova

if(OrderMagicNumber()!= MAGICMA || OrderSymbol()!=Symbol()) break;
 
Ibiss >> :

Come programmare correttamente un'uscita ad un incrocio inverso delle linee principali e di segnale? perché i segnali arrivano in brevi intervalli di tempo... e gli ordini non vengono chiusi dove dovrebbero nella condizione...

questa domanda mi tormenta da molto tempo! PER FAVORE!

Ecco la condizione di uscita:


Snachala narusyj sebe blok shemy svoego algorutma, chtob tu vuzyalno vudel chto tu doesh y po kakum yslovuyam y tebya zakruvayutsya ordini, a vse eto delo perevestu v kod eto yge delo tehnuku - ya tak dymayu.

 

Signori, potreste dirmi se c'è qualcosa di pronto per visualizzare i commenti sul grafico per ogni ordine. Cioè una freccia sul grafico e accanto ad essa un commento con la ragione. Voglio che sia disegnato in tester :)

Grazie.

 
AndBar >> :

Snachala narusyj sebe blok shemy svoego algoritmo, chtob tu vuzyalno vudel chto tu doaesh y po kakum yslovuyam y tebya zakruvayutsya ordini, a vse eto delo perevestu v kod eto yge delo tehnuku - ya tak dymayu.


Ehi amico puoi parlare così o così :) >> Mi sto rompendo gli occhi. :)
 

costoso, non ha aiutato, ma grazie!

forse qualcuno sa come fare l'incrocio e l'incrocio posteriore per aprire e chiudere ordini opposti?

questo ha bisogno di un po' di magia...ahhh...

Vedi quanti acquisti e vendite diverse ci dovrebbero essere? e ci sono solo un paio di pezzi...

come posso risolvere questo problema?

a cui non dispiace guardare il codice! per favore!

È tutto nel codice dell'EA, non nell'indicatore... credo...

e i drawdown sono come... non si può desiderare il 96%... chi se ne frega :)

dovrebbe essere così:


File:
itrend.mq4  5 kb
 

Comunque, ho deciso di rifare l'EA dopo aver letto delle variabili globali, ed eureka!

e c'era anche un problema con le zecche...

le transazioni si aprono a tutti i crossover, ma un grande MA... si aprono ingrandi pile...

gente, come posso risolvere questo problema? abbiate pietà)))

Ecco uno screenshot:


"Non è per i deboli di cuore".

File:
ggftest.mq4  3 kb
 
Ibiss >> :

costoso, non ha aiutato, ma grazie!

Qualcuno può sapere come fare in modo che gli ordini opposti si aprano e si chiudano all'incrocio e all'incrocio posteriore?

questo ha bisogno di un po' di magia...ahhh...

Vedi quanti acquisti e vendite diverse ci dovrebbero essere? e ci sono solo un paio di pezzi...

come si può risolvere questo bug?

a cui non dispiace guardare il codice! per favore!

È tutto nel codice dell'EA, non nell'indicatore... credo...

e i drawdown sono come... non si può desiderare il 96%... chi se ne frega :)

questo è il modo in cui dovrebbe essere:



Il modo più semplice:

Ad ogni tick inizializziamo 4 variabili indicatore. Due per la linea rossa e due per quella verde. E due variabili del segnale di trading, rispettivamente.

In questo caso, il codice dovrebbe assomigliare a questo:

// ------ Пользовательские переменные -------------------
extern bool CloseObr=true;// закрывать ли противоположный ордер при возникновении торгового сигнала
// ---------- Вспомогательные переменные ------------
double Green_1, Green_2, Red_1, Red_2;// значения индикатора на первой и второй свечках
bool SigBuy, SigSell;// торговые сигналы
int TICKET;

int start(){
  Green_1=iCustom(****);// зелёная на первой свече
  Green_2=iCustom(****);// зелёная на второй свече
  Red_1=iCustom(****);// красная на первой свече
  Red_2=iCustom(****);// красная на второй свече
  
  // ------- формируем торговые сигналы -------------
  
  SigBuy=false;
  SigSell=false;
  
  if( Green_2<= Red_2 && Green_1> Red_1){// зелёная пересекает красную снизу вверх
    SigBuy=true;
  }
  if( Green_2>= Red_2 && Green_1< Red_1){// зелёная пересекает красную сверху вниз
    SigSell=true;
  }
  
  // ------ Сигналы сформированы. Торгуем ------------------
  if( SigBuy){
    if( CloseObr){
      // то удаляем все Sell-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки лонга);
  }
  if( SigSell){
    if( CloseObr){
      // то удаляем все Buy-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки шорта);
  }
}
In generale, questo è il modo in cui l'EA dovrebbe funzionare. Può non essere la versione più perfetta dell'insieme di codici, ma illustra bene la logica della sua costruzione.
 

drknn, grazie per l'idea e per il codice)!


sai per caso come gestire una folla di ordini?)

 
Ibiss >> :

Comunque, ho deciso di rifare l'EA dopo aver letto delle variabili globali, ed eureka!

e c'era anche un problema con le zecche...

le transazioni si aprono a tutti i crossover, ma un grande MA... si aprono in grandi pile...

gente, come posso risolvere questo problema? abbiate pietà)))

Ecco uno screenshot:


">> Non è per i deboli di cuore.



Bene, allora potete fare così:

// ------ Пользовательские переменные -------------------
extern bool CloseObr=true;// закрывать ли противоположный ордер при возникновении торгового сигнала
extern int MAGIC=0;// у ордеров открытых вручную магик = 0
// ---------- Вспомогательные переменные ------------
double Green_1, Green_2, Red_1, Red_2;// значения индикатора на первой и второй свечках
bool SigBuy, SigSell;// торговые сигналы
int TICKET;

int start(){
  Green_1=iCustom(****);// зелёная на первой свече
  Green_2=iCustom(****);// зелёная на второй свече
  Red_1=iCustom(****);// красная на первой свече
  Red_2=iCustom(****);// красная на второй свече
  
  // ------- формируем торговые сигналы -------------
  
  SigBuy=false;
  SigSell=false;
  
  if( Green_2<= Red_2 && Green_1> Red_1){// зелёная пересекает красную снизу вверх
    SigBuy=true;
  }
  if( Green_2>= Red_2 && Green_1< Red_1){// зелёная пересекает красную сверху вниз
    SigSell=true;
  }
  
  // ------ Сигналы сформированы. Торгуем ------------------
  if( SigBuy && SchBuy( MAGIC)==0){
    if( CloseObr && SchSell( MAGIC)>0){
      // то удаляем все Sell-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки лонга);
  }
  if( SigSell && SchSell( MAGIC)==0){
    if( CloseObr && SchBuy( MAGIC)>0){
      // то удаляем все Buy-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки шорта);
  }
return(0);
}
// --------- Пользовательские подпрограммы -----------------

// ==========================================================================================================================
// ************************* Счётчики ордеров *******************************************************************************
// ==========================================================================================================================


//=========== SchBuy()  ===============================
//  Функция возвращает количество Buy-ордеров
//   SchBuy      - счётчик Buy ордеров
//-----------------------------------------------------------
int SchBuy(int MAGIC){
  string SMB=Symbol();
  int SchBuy=0;
  int i;
  for ( i=OrdersTotal()-1; i>=0; i--) {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { WriteError( i);}
    else {
      if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue;}
      if(OrderType()==OP_BUY){ 
        SchBuy++;
      }  
    }
  }
  return( SchBuy);
}                  
//==================================================================================================


//=========== SchSell()  ===============================
//  Функция возвращает количество Sell-ордеров
//  SchSell  - счётчик Sell ордеров
//-----------------------------------------------------------
int SchSell(int MAGIC){
  string SMB=Symbol();
  int SchSell=0;
  int i;
  for ( i=OrdersTotal()-1; i>=0; i--){
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { WriteError( i);}
    else {
      if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue;} 
      if(OrderType()==OP_SELL){
        SchSell++;
      }
    }
  }
 return( SchSell);     
}                  
//==================================================================================================
 
Bond >> :

Signori, potreste dirmi se c'è qualcosa di pronto per visualizzare i commenti sul grafico per ogni ordine. Cioè una freccia sul grafico e accanto ad essa un commento con la ragione. Voglio che sia disegnato nel tester).

>> Grazie.


Se volete che sia disegnato anche nel tester, dovrete fare il codice di programmazione manualmente.

In questo caso, è meglio impostare le frecce nelle funzioni OrderSend() e OrderClose().

Il commento può essere stampato in vari modi. Per quanto riguarda quelli già pronti, posso dire che questo è un compito abbastanza specifico - è improbabile che si possa trovare un codice già pronto.

Ho postato qui il mio script in MQL4 che visualizza la storia del trading sui grafici. La mia idea è stata poi modificata da altri programmatori. Avevo solo frecce e linee che mostravano i punti di apertura/chiusura degli ordini. Più tardi, i commenti agli ordini e l'indicazione dei prezzi di esecuzione apparvero negli script di altri programmatori. Questo può essere buono da trovare qui.