[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 529

 
Suppression des barres, ajout d'ordres en attente dans des incréments X du prix, la seule chose qui reste est d'ouvrir les ordres fermés immédiatement individuellement au lieu d'attendre que les 4 ordres soient fermés et le calcul du lot en fonction du % d'équité, aidez-moi à résoudre ces 2 nuances
Voici à quoi ça ressemble maintenant :

//+------------------------------------------------------------------+
//| mo_bidir.mq4
//| Les meilleurs résultats sont obtenus sur une échelle de temps de 5M.
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010 - Monu Ogbe"

#define MAGIC 1234
#define IDENT "mo_bidir"

extern double lots = 1 ;
extern double stop_loss = 76 ; //
extern double take_profit = 750 ; //
extern int steps = 5 ; // étape de l'ordre en attente

int start(){

si (OrdersTotal() == 0){
OrderSend(Symbol(), OP_BUY, lots,Ask, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue) ;
OrderSend(Symbol(), OP_SELL, lots,Bid, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red) ;
OrderSend(Symbol(), OP_BUYSTOP, 0.5*lots,Ask+steps*Point, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue) ;
OrderSend(Symbol(), OP_SELLSTOP, 0.5*lots,Bid-steps*Point, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red) ;
}
retour(0) ;
}
Dossiers :
 
belck:
Recherche d'un code Breakeven sur l'historique. peut avoir. partager.
J'ai un code Breakeven, mais il fonctionne à partir d'ordres ouverts.
J'ai un EA qui ferme les pertes au signal opposé, et ouvre sur un signal. et maintenant vous avez besoin d'avoir ce code Breakeven pour se rappeler combien en déficit et a transmis l'information, de sorte que la deuxième, etc commandes ont déjà vu sur le graphique la ligne de profit zéro, en tenant compte des pertes passées. Le conseiller expert ne dispose pas d'un stop loss, ce qui signifie que la clôture d'un trade perdant ne se fait pas par un stop loss.


Chaque fois que vous le déplacez au prix requis (seuil de rentabilité avec fermeture), et ne le supprimez pas (la ligne) lorsque vous fermez un ordre et que vous voyez l'ancien prix dans l'ordre suivant.
 
belck:
Je cherche un code d'équilibre historique. Peut-être que quelqu'un en a un. Merci de le partager.
J'ai un code Breakeven, mais il est basé sur les ordres ouverts.
J'ai un bon ordre de travail lorsqu'il y a une perte sur un ordre et il devrait s'ouvrir lorsque l'ordre atteint le seuil de rentabilité. Les ordres ont déjà vu la ligne zéro de la ligne de profit sur le graphique en tenant compte des pertes précédentes. Le conseiller expert ne dispose pas d'un stop loss, ce qui signifie qu'une transaction perdante ne sera pas fermée par un stop loss.

Si je comprends bien, une partie de votre question est la comptabilisation des pertes totales sur les trades perdants consécutifs de votre EA pour une comparaison ultérieure avec le niveau de profit sur les ordres de marché actuels pour définir la ligne de seuil de rentabilité ?
 
FAQ:

Chaque fois que vous le déplacez au prix requis (seuil de rentabilité à la clôture), et ne le supprimez pas (la ligne) lorsque vous fermez l'ordre et que vous voyez l'ancien prix dans l'ordre suivant.

ce n'est pas facile.

Je ne peux pas le mettre en œuvre moi-même.

Je veux que la ligne apparaisse sur les transactions perdantes afin que je puisse clôturer lorsqu'elle est atteinte.

J'ai besoin d'une ligne qui ne sera tracée que lorsqu'il y a des ordres perdants, mais cette ligne sera tracée en fonction du lot d'une transaction ouverte et de l'historique des transactions perdantes.
 
Roman.:
Si je comprends bien, la partie de votre question consiste à prendre en compte la perte totale des trades perdants successifs de votre EA et à la comparer avec le niveau de profit des ordres de marché actuels pour fixer la ligne de seuil de rentabilité ?
.

Je n'ai pas de lignes d'arrêt, c'est-à-dire pas de stop loss et pas de take profit.

Je veux voir la ligne de prix, où je dois aller pour conclure l'affaire de telle sorte que les ordres fermés précédents se chevauchent.

J'ai besoin d'un bloc derrière le bloc de départ qui comptera et transférera les informations au bloc de départ, et j'utiliserai ces informations pour conclure la transaction lorsqu'elle atteindra cette ligne de prix.

 
Vous avez besoin d'une variable globale, faites-en un terminal global, ou un objet graphique - il ne sera alors visible que sur ce graphique, écrivez-le dans un fichier si nécessaire, ou dans le registre, ou directement en mémoire. Il existe de nombreuses options.
 
FAQ:
Vous avez besoin d'une variable globale, faites-en un terminal global, ou un objet graphique - il ne sera alors visible que sur ce graphique, écrivez-le dans un fichier si nécessaire, ou dans le registre, ou directement en mémoire. Il existe de nombreuses variantes.
C'est ta réponse à ma question ?
 
belck: Mais je ne peux pas écrire le bloc Breakeven par l'histoire elle-même.

Voici ma section de code - responsable de la comptabilisation de la perte totale des trades perdants consécutifs de cet EA particulier (selon le magicien). Je l'ai fait pour ma variante de filet Avalanche - vous pouvez le modifier selon vos besoins - le code est commenté...

Variables globales

double Current_Loss, Sum_Loss;     // текущий и суммарный убыток
int start()    // -----------------------СТАРТ ЭКСПЕРТА---------------
{

//---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0;  // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0,
Time_at_History_Previos = 0;     
 
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit();
                 Sum_Loss=Sum_Loss+lastLoss;  // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                if(OrderProfit() >= 0)
                  break;
               }
            }
         }
      }
   }
 //Print("Iteration at History = ",  Iteration, " Time_at_History_Current = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS),
 //      " Time_at_History_Previos = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
...
...
}// конец старт   

Après cette section de code, vous passez également en boucle les ordres ouverts de ce même EA et calculez leur profit total. Ensuite, vous comparez cette valeur avec la variable

Sum_Loss

et prendre une décision.

 
belck:
Je cherche un code d'équilibre historique. Peut-être que quelqu'un en a un. Merci de le partager.
J'ai un code Breakeven, mais il est basé sur les ordres ouverts.
J'ai un bon ordre de travail lorsqu'il y a une perte sur un ordre et il devrait s'ouvrir lorsque l'ordre atteint le seuil de rentabilité. Les ordres ont déjà vu la ligne zéro de la ligne de profit sur le graphique en tenant compte des pertes précédentes. Le conseiller expert ne dispose pas d'un stop loss, ce qui signifie que la clôture d'un trade perdant ne se fait pas par un stop loss.

Calculez le profit total de toutes les transactions fermées et enregistrez-le dans une variable, par exemple, TotalCloseProfit. Puis utilisez le code suivant, sans aucun graphique ni autre artifice :

if (TotalCloseProfit) < 0.0) { // Имеем убыток по закрытым позам
  if ((AccountEquity() + TotalCloseProfit) >= AccountBalance()) { // Достигли безубытка
    // Здесь какой-то код, который необходимо выполнить при достижении безубытка
  }
}
 
utyff:


J'ai jeté un coup d'oeil au journal.

Cela semble être la raison, mais je ne sais pas ce que cela signifie. Quelqu'un peut-il expliquer ? Et comment le réparer ?

Ce n'est pas une erreur. Les erreurs dans le journal sont marquées par des icônes rouges et non jaunes.
Raison: