[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 140

 
supernyb:
Je comprends que l'icône est fixée au prix d'ouverture de la barre. J'ai besoin qu'il soit au prix de clôture.
Je n'ai pas réussi à insérer votre code car je ne suis pas un programmeur. Il désapprouve particulièrement ce bool NewBar()
Notez le moment de la cotation et le moment de la mise en place de la barre : 15 minutes. Pensez-vous que Close[0] puisse changer pendant ce temps ?
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(NevBar()) 
     {
     //в этом блоке размещайте ваш код
     }    
//----
   return(0);
  }
//-----------------------------------------------------------------------------+
// Функция контроля нового бара                                                |
//-----------------------------------------------------------------------------+
bool NevBar(){
   static int PrevTime=0;
   if (PrevTime==Time[0]) return(false);
   PrevTime=Time[0];
   return(true);} 
 

Encore une fois, s'il vous plaît. Bonjour, j'ai pris comme base le script du tutoriel de S. Kovalev. Je veux créer un conseiller expert pour ouvrir une transaction, mettre un stop loss, prendre un profit, puis attendre la clôture de la transaction (c'est-à-dire le stop loss ou le profit), et seulement ensuite rouvrir la transaction. J'ai essayé avec des interruptions de cycle et de cycle. Veuillez me conseiller sur la manière de procéder. J'ai pensé qu'il serait peut-être plus facile de ne pas fixer un stop-loss et un take-profit en même temps, et de faire en sorte que le prix se ferme lorsqu'il s'approche d'un certain niveau. Mais je ne veux pas procéder de cette façon parce que j'ai peur des dérapages, et chaque point est important pour moi. J'ai compris que j'ouvrais une transaction ou parfois deux en même temps (est-ce également faux ?) mais je ne peux pas ouvrir de nouvelles transactions après la clôture de la transaction. Ou conseiller comment prescrire, de sorte que le programme était en attente de performance stop-loss ou tekaprofit, et SEULEMENT ensuite a continué ?

//+------------------------------------------------------------------+
int start() //---- fonction start
{
double //---- déclarer les variables
x,
y ;
//+------------------------------------------------------------------+
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point) ; //---- ordre de marché pour acheter et mettre un stop et un profit à 15 points du prix d'ouverture
//+------------------------------------------------------------------+
while(x!=Ask-15*Point||y !=Demande+15*Point) //---- de la condition Je veux que la transaction soit fermée jusqu'à ce que la transaction précédente soit fermée, c'est à direе. il est possible de
{//----- ne garder qu'une seule transaction ouverte
continuer ;//---- interrompre la condition et passer à l'étape suivante
}
//+------------------------------------------------------------------+
return;//---- fonction return
}
//+------------------------------------------------------------------+

 

Si vous ne vous souciez pas de savoir si vous avez un stop ou un take, pourquoi ne pas simplement vérifier s'il y a des ordres ouverts ou non ?

si(OrdersTotal()<1)

 

Pouvez-vous me dire ce que l'on peut faire dans cette situation ? J'ai un indicateur. Je dois tracer une ligne verticale dans le graphique, puis appeler les propriétés, copier le nombre et ensuite l'entrer dans l'indicateur.

Il serait bon que l'indicateur soit placé là où vous cliquez avec votre souris.

Ou, au moins, il serait possible de le déplacer avec la souris sur le graphique.


Dossiers :
indicator.mq4  3 kb
 
Begemot7:

Encore une fois, s'il vous plaît. Bonjour, j'ai pris comme base le script du tutoriel de S. Kovalev. Je veux créer un conseiller expert pour ouvrir une transaction, mettre un stop loss, prendre un profit, puis attendre la clôture de la transaction (c'est-à-dire le stop loss ou le profit), et seulement ensuite rouvrir la transaction. J'ai essayé avec des interruptions de cycle et de cycle. Veuillez me conseiller sur la manière de procéder. J'ai pensé qu'il serait peut-être plus facile de ne pas fixer un stop-loss et un take-profit en même temps, et de faire en sorte que le prix se ferme lorsqu'il s'approche d'un certain niveau. Mais je ne veux pas procéder de cette façon parce que j'ai peur des dérapages, et chaque point est important pour moi. J'ai compris que j'ouvrais une transaction ou parfois deux en même temps (est-ce également faux ?) mais je ne peux pas ouvrir de nouvelles transactions après la clôture de la transaction. Ou conseiller comment prescrire, de sorte que le programme était en attente de performance stop-loss ou tekaprofit, et SEULEMENT ensuite aller plus loin ?

int ticket=-1;
int start()       //---- функеция старт            
  {
  double     //---- объявляю переменные 
  x,
  y;
  bool sel;
  //+------------------------------------------------------------------+
  sel=false;
  if(ticket>=0)
   {
    sel=OrderSelect(ticket,SELECT_BY_TICKET);if(!sel) ticket=-1;
   }
  if(ticket<0 || (sel && ticket>=0 && OrderCloseTime()>0)) ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);
   return;                                                          //---- функция return 
    }

Ou mieux comme ceci (en cas de redémarrage du Conseiller Expert) :

int ticket=-1;
int init()
 {
  if(GlobalVariableCheck("TICKET")) ticket=GlobalVariableGet("TICKET");
  else ticket=-1;
 }
int start()          
 {
  bool sel;
  sel=false;
  if(ticket>0)
   {
    sel=OrderSelect(ticket,SELECT_BY_TICKET);if(!sel) ticket=-1;
   }
  if(ticket<=0 || (sel && ticket>0 && OrderCloseTime()>0))
   {
    ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);
    if(ticket>0) GlobalVariableSet("TICKET",ticket);
   }
   return; 
  }
 
r772ra:
Notez l'heure de cotation, et l'heure à laquelle l'icône a été mise en place, 15 minutes, pensez-vous que Close[0] puisse changer pendant ce temps ?


Merci, c'est exactement ce dont j'avais besoin ! J'ai fait ce que vous avez dit et cela a fonctionné ! J'ai également mis Close[1] au lieu de Close[0] dans Star Price et il s'est avéré que ma marque a été dessinée par les prix de clôture. Il n'attend pas une barre comme je pensais qu'il le ferait.
 
001:

Je voudrais que l'indicateur soit placé là où vous cliquez avec la souris.

Pour obtenir les coordonnées du point où l'indicateur a été lancé, vous pouvez utiliser des fonctions :

WindowXOnDropped()

WindowYOnDropped()

Prix et heure :

FenêtrePrixOnDropped()

WindowTimeOnDropped()

 
valeryk:

bool NewBar()
{statique datetime newbar ;
Le bool res=false ;
if(newbar==0)newbar=Time[0] ;
if(newbar!=Time[0]){res=true;newbar=Time[0];}
retour(res) ;
}

Disponibilité d'un nouveau bar .


Voici ce que le gourou a dit à propos de votre code !

Dans votre version, la date statique newbar n'est pas initialisée à zéro, ce qui est incorrect.

 
Sepulca:

Mieux comme ceci (au cas où l'EA est redémarré) :

IMHO - mieux vaut rechercher votre ordre et voir s'il est dans le marché ou fermé, et comment il a été fermé, par prise, stop ou manuellement. A partir de là, nous commencerons à danser dans des directions différentes.

Alors tout sera précis. Et les variables globales peuvent être perdues...

 
artmedia70:

IMHO - il est préférable de trouver votre ordre et de voir s'il est dans le marché ou fermé, et comment il a été fermé, à la prise, au stop ou manuellement. A partir de là, vous devez commencer à danser dans différentes directions.

Alors tout sera précis. Mais les variables globales peuvent être perdues...


Qu'entendez-vous par "perdre des variables" ? Voulez-vous dire qu'il faut trouver un moyen pour que l'EA vérifie cela aussi ?