[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 251

 
Ibiss >> :

Comment programmer correctement une sortie lors d'un croisement inverse de la ligne principale et de la ligne de signal ? parce que les signaux arrivent dans des intervalles de temps courts... et les ordres ne sont pas fermés là où ils devraient l'être dans la condition...

cette question me taraude depuis longtemps ! AIDE !

Voici la condition de sortie :


Je ne suis pas un as mais

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

si (OMN n'est pas égal à OMN ou OS n'est pas égal à OS) {alors continuez}


mais cela signifie que l'ordre n'appartient pas au conseiller expert.

essayez

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

Comment programmer correctement une sortie lors d'un croisement inverse de la ligne principale et de la ligne de signal ? parce que les signaux arrivent dans des intervalles de temps courts... et les ordres ne sont pas fermés là où ils devraient l'être dans la condition...

cette question me taraude depuis longtemps ! S'IL VOUS PLAÎT !

Voici la condition de sortie :


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

 

Messieurs, pourriez-vous me dire s'il y a quelque chose de prêt pour afficher des commentaires sur le graphique pour chaque commande. C'est-à-dire une flèche sur le graphique et à côté un commentaire avec la raison. Je veux qu'il soit dessiné dans le testeur :)

Merci.

 
AndBar >> :

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


Hé mec, tu peux parler comme ça ou comme ça :) >> Je suis en train de me casser les yeux. :)
 

costy, ça n'a pas aidé, mais merci !

peut-être que quelqu'un sait comment faire pour que le croisement et le croisement inverse ouvrent et ferment des ordres opposés ! ??

ça a besoin d'un peu de magie... ahhh...

Vous voyez combien d'achats et de ventes différents il devrait y avoir ? et il n'y a que quelques pièces...

Comment puis-je résoudre ce problème ?

qui n'a pas peur de regarder le code ! s'il vous plaît !

Tout est dans le code de l'EA, pas dans l'indicateur... je pense...

et les drawdowns sont comme... tu ne peux pas souhaiter 96%... qui s'en soucie :)

ça devrait être comme ça :


Dossiers :
itrend.mq4  5 kb
 

Quoi qu'il en soit, j'ai décidé de refaire l'EA après avoir lu sur les variables globales, et eurêka !!!

et il y avait aussi un problème avec les tiques...

les transactions s'ouvrent à tous les croisements, mais un gros MAIS... elles s'ouvrent engrandes piles...

les gens, comment puis-je résoudre ce problème ? ayez pitié))))

Voici une capture d'écran :


"Ce n'est pas pour les âmes sensibles."

Dossiers :
ggftest.mq4  3 kb
 
Ibiss >> :

costy, ça n'a pas aidé, mais merci !

Quelqu'un peut-il savoir comment faire pour que des ordres opposés s'ouvrent et se ferment au croisement et au croisement inverse ?

ça a besoin d'un peu de magie... ahhh...

Vous voyez combien d'achats et de ventes différents il devrait y avoir ? et il n'y a que quelques pièces...

comment ce bug peut-il être corrigé ?

qui n'a pas peur de regarder le code ! s'il vous plaît !

Tout est dans le code de l'EA, pas dans l'indicateur... je pense...

et les drawdowns sont comme... tu ne peux pas souhaiter 96%... qui s'en soucie :)

c'est comme ça que ça doit être :



Le moyen le plus simple :

A chaque tick, nous initialisons 4 variables indicatrices. Deux pour la ligne rouge et deux pour la ligne verte. Et deux variables de signal de trading, respectivement.

Dans ce cas, le code devrait ressembler à ceci :

// ------ Пользовательские переменные -------------------
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( тут пишем параметры установки шорта);
  }
}
D'une manière générale, c'est ainsi que l'EA doit fonctionner. Ce n'est peut-être pas la version la plus parfaite de l'ensemble de codes, mais elle illustre bien la logique de sa construction.
 

drknn, merci pour l'idée et pour le code) !


savez-vous comment gérer une foule de commandes ?)

 
Ibiss >> :

J'ai décidé de refaire l'EA après avoir lu sur les variables globales, et eureka !!!

et il y avait aussi un problème avec les tiques...

les transactions s'ouvrent à tous les croisements, mais un gros MAIS... elles s'ouvrent en grandes piles...

les gens, comment puis-je résoudre ce problème ? ayez pitié))))

Voici une capture d'écran :


">> Ce n'est pas pour les âmes sensibles.



Alors vous pouvez le faire comme ça :

// ------ Пользовательские переменные -------------------
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 >> :

Messieurs, pourriez-vous me dire s'il y a quelque chose de prêt pour afficher des commentaires sur le graphique pour chaque commande. C'est-à-dire une flèche sur le graphique et à côté un commentaire avec la raison. Je veux qu'il soit dessiné dans le testeur).

>> Merci.


Si vous voulez qu'il soit dessiné même dans le testeur, vous devrez faire le code de programmation manuellement.

Dans ce cas, il est préférable de définir les flèches dans les fonctions OrderSend() et OrderClose().

Le commentaire peut être imprimé de différentes manières. Quant aux codes prêts à l'emploi, je peux dire qu'il s'agit d'une tâche assez spécifique - il est peu probable que l'on puisse trouver un code prêt à l'emploi.

J'ai posté ici mon script dans MQL4 qui affiche l'historique des transactions sur les graphiques. Mon idée a ensuite été modifiée par d'autres programmeurs. J'avais juste des flèches et des lignes indiquant les points d'ouverture et de fermeture des ordres. Plus tard, des commentaires aux ordres et l'indication des prix d'exécution sont apparus dans les scripts d'autres programmeurs. Cela peut être bon à trouver ici.