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

 
Dimka-novitsek:

Bonsoir ! Je suis perplexe. J'ai deux ordres ouverts dans le testeur, l'un avec takeprofit, l'autre sans.

Ils prennent tous deux des profits en même temps. ! !!!

Je suis passé devant cet endroit huit fois avec le testeur. Je ne peux pas le comprendre !


On dirait un double clone ! Essayez-le sur Demo ! Vous nous en parlerez plus tard !

Donc regardez, où le SL s'est déclenché, la perte, et où le TP, le profit. C'est vrai !

Vérifier ce que dit le journal ? Donc, pas à pas, tracez toutes les actions !

Seulement dans les doubles de passage du testeur ! Sur la démo, en plus, sur le Real sera 1, et le second ne passera pas, il y aura beaucoup d'erreurs !

 
hoz:
La question est la suivante. Si je veux placer un ordre à cours limité qui se déclenchera exactement à l'ouverture de la barre du jour, c'est-à-dire la barre sur TF D1. Comment dois-je le mettre en œuvre ? Je ne comprends pas vraiment la logique. Après tout, je n'ai pas besoin de mettre un simple Limiteur, mais un Limiteur qui fonctionnera exactement à un certain moment, c'est-à-dire à l'ouverture d'une nouvelle barre du jour.
Tout d'abord, décidez de la terminologie - " Limite qui se déclenchera exactement à un certain moment " - que signifie " Limit trigger " ? Et plus vous expliquerez ce processus magique, plus il sera facile de le mettre en œuvre dans la vie réelle. Au cas où, lisez ce qui concerne les ordres en attente.
 
Dimka-novitsek:

Bonsoir ! Je suis perplexe. J'ai deux ordres ouverts dans le testeur, l'un avec takeprofit, l'autre sans.

Ils prennent tous deux des profits en même temps. ! !!!

Je suis passé devant cet endroit huit fois avec le testeur. Je ne peux pas le comprendre !

Peut-être pouvez-vous partager un secret - "Pourquoi créer un clone d'une commande ouverte ? ?? Ne pouvez-vous pas ouvrir UN SEUL ordre avec un lot plus important ??? ;)
 
C'est une stratégie. Je vais peut-être faire une capture d'écran maintenant. Oh, mon grand frère est là. Je ne peux pas arriver à temps. C'est une situation bizarre, cependant.
 
Est-il correct de comparer les formats de date comme ceci ?
datetime t=OrderCloseTime();
             datetime t1=Time[1];
             datetime t0=Time[0];
             if(t1>=t&&t<t0){
               p++;
             }
 
Dimka-novitsek:
Il s'agit d'une stratégie. Je vais peut-être faire une capture d'écran maintenant. Oh, mon grand frère est là. Je ne peux pas arriver à temps. C'est une situation bizarre.

Lorsque Diman, tu pourras utiliser une CAMPAGNE PERSONNELLE).

Avez-vous gagné de l'argent en un an dans le monde réel ? C'est comme les montants START qui vous sont alloués, n'est-ce pas ?)

 
TarasBY:
Tout d'abord, définissez la terminologie - " la limite qui sera déclenchée exactement à un certain moment " - que signifie " la limite sera déclenchée " ? Et plus vous donnerez de détails sur ce processus magique, plus il sera facile de le mettre en œuvre dans la vie réelle.


Oui, je me suis mal exprimé. Je veux dire, en gros. Si c'est clair ici, le pendule n'est mis que sur le prix.

Voici le code :

//+------------------------------------------------------------------+
//|                                                       2 Days.mq4 |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

extern string    A1 = "Объем сделки. Если i_lots = 0, то считается в процентах";
extern double    i_lots = 0.1;
extern string    A2 = "Управление рисками";
extern double    i_sl = 15,
                 i_tp = 10;
extern int  slippage,
            price_b,
            price_a;

extern string    Z1 = "=== Прочие настройки ===";
extern string    i_openOrderSound = "ok.wav";
extern int       i_magicNumber = 400021;

double firstBarClosed,
       secondBarClosed;
 
// Идентификаторы типов сигналов
#define SIGNAL_BUY              1                     // Сигнал на покупку
#define SIGNAL_SELL            -1                     // Сигнал на продажу
#define SIGNAL_NO               0                     // Нет сигнала

#include <stderror.mqh>

int init()
{
   
   return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}
//+------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------+
//| Получение рыночных данных                                                           |
//+-------------------------------------------------------------------------------------+
//FindOrders()
//+-------------------------------------------------------------------------------------+
//| Получение рыночных данных                                                           |
//+-------------------------------------------------------------------------------------+
void GetMarketInfo()
{
  price_b = MarketInfo(Symbol(),MODE_BID);
  price_a = MarketInfo(Symbol(),MODE_ASK);
}
//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade(int signal, double& priceForBuy, double& priceForSell)
{
 // FindOrders();
  priceForBuy = NormalizeDouble(priceForBuy,Digits);
  priceForSell = NormalizeDouble(priceForSell,Digits);
  
  if(!IsTesting())
     GetMarketInfo();
     
  if (signal == SIGNAL_BUY)
     if (!OrderSend(Symbol(),OP_BUYLIMIT, i_lots,priceForBuy,slippage,i_sl,i_tp,"",i_magicNumber,3))
     return(false);
     
  if (signal == SIGNAL_SELL)
     if (!OrderSend(Symbol(),OP_SELLLIMIT,i_lots,priceForSell,slippage,i_sl,i_tp,"",i_magicNumber,3))
     return(false);
     
  return(true);
}
//+-------------------------------------------------------------------------------------+
//| Получение цены входа в покупку или в продажу                                        |
//+-------------------------------------------------------------------------------------+
double GetPriceToInput()
{
  firstBarClosed = iClose(Symbol(),1440,2);
  secondBarClosed = iClose(Symbol(),1440,1);
    
  {
    double deltaForSell = (firstBarClosed - secondBarClosed)/2;
    double priceForSell = secondBarClosed - deltaForSell;
    
    return(priceForSell);
  }  

  {
    double deltaForBuy = (secondBarClosed - firstBarClosed)/2;
    double priceForBuy = secondBarClosed + deltaForBuy;  
    return(priceForBuy);
  }
}
//+-------------------------------------------------------------------------------------+
//| Генерация сигнала закрытия, покупки или продажи                                     |
//+-------------------------------------------------------------------------------------+
int GetSignal()
{
  if(firstBarClosed > secondBarClosed)
  return(SIGNAL_BUY);

  if(firstBarClosed < secondBarClosed)
  return(SIGNAL_NO);
}
//+-------------------------------------------------------------------------------------+
//| Функция Start                                                                       |
//+-------------------------------------------------------------------------------------+
int start()
{
  int signal = GetSignal();
    
    if (signal != SIGNAL_NO)
      if(!Trade(signal, priceForBuy, priceForSell))
      return(0);

  return(0);
}


La question, en fait, n'est pas très compliquée. J'ai passé desparamètres formels priceForBuy et priceForSell dans la fonction Trade(int signal, double& priceForBuy, double& priceForSell). Les paramètres sont passés par les liens. Ce n'est pas comme ça que ça se passe ? Les fonctions sont locales et non globales.

Une erreur s'est produite pendant la compilation :

'priceForBuy' - variable not defined    E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (117, 25)
'priceForSell' - variable not defined   E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (117, 38)

D'où vient l'erreur ? J'ai déjà défini ces paramètres dans la fonctionGetPriceToInput().

 
A quoi sert le double bretzel & after (je ne sais vraiment pas)?
 
YOUNGA:
et à quoi sert le double bretzel & after (je ne sais vraiment pas)?

C'est une obsession de vouloir passer des paramètres par référence. :-)

 
Roman.:

C'est une obsession de vouloir passer des paramètres par référence. :-)



Comment faire autrement ? La même chose pour calculer 100 fois ?
Raison: