[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 387

 
biragr:

Je vous remercie de votre attention, mais je ne comprends pas votre question. Vous pouvez définir la ligne pour n'importe quelle date, et lorsque le graphique l'atteint, l'EA se déclenche ? Ou peut-être que je ne comprends pas quelque chose, si vous voulez bien l'expliquer.
Vous avez fixé la ligne sur le graphique journalier. Et si elle se trouve sur la montre ? L'heure d'ouverture de l' ordre sera-t-elle fixée par la ligne ou strictement fixée ? Faut-il définir le calendrier pour un mois avec des lignes ou un conseiller expert suivant mon lien est-il suffisant ?
 
kolyango:

À l'aide, s'il vous plaît ! L'indicateur https://www.mql5.com/ru/code/10067 doit être converti en un simple EA fonctionnel (à titre d'exemple). Principe d'action :

Sur la paire sur laquelle l'EA sera lancé, dès que la valeur est égale à 0.9570, ouvrez un ordre de marché pour vendre 0.1 lot avec un numéro majuscule (pour que les EAs dans différentes fenêtres ne confondent pas les ordres), Stop-Loss 100p, Take-Profit 200p.

Professionnels, nous ne pouvons pas nous passer de vous !



Aidez un débutant !
 

kolyango:

Sur la paire sur laquelle l'EA sera lancé, dès que la valeur est égale à 0.9570, ouvrez un ordre de marché pour vendre 0.1 lot avec un numéro majuscule (afin que les EAs dans différentes fenêtres ne confondent pas les ordres), Stop-Loss 100p, Take-Profit 200p.

Aide pour un débutant !
Quel est l'intérêt d'écrire une évaluation environnementale unique ? Mettez un ordre en attente et cela fonctionnera comme vous le souhaitez. Et mettez en place des EA sur les majors, car la pause n'aura pas de majors.
 
Reshetov:
Quel est l'intérêt de rédiger une évaluation environnementale ponctuelle ? Mettez une pause et il se déclenchera de la façon dont vous le souhaitez. Et configurez les EAs pour les majors, car la pause n'aura pas de majors.

J'ai besoin de comprendre comment faire ça à partir d'un indicateur...
 

Quel est le problème ? Le problème est que l'ordre ne s'ouvre pas toujours lorsque la ligne est franchie, c'est-à-dire que parfois il s'ouvre et parfois il ne s'ouvre pas... Bien qu'il fonctionne sur le même principe...

//+------------------------------------------------------------------+
//|                                                      Вайкофф.mq4 |
//|                                                   Sergey Kodolov |
//|                                              84232676421@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Kodolov"
#property link      "84232676421@mail.ru"



int total,sum,sumr;  
datetime TimeBarH, TimeBarL;

int Crossed (double nach, double kon, double cenaniz, double cenaverh)
{
   static int last_dir = 0;
   static int cur_dir = 0;
   
   if(nach<cenaverh && kon>cenaverh)cur_dir=1;
   if(nach>cenaniz && kon<cenaniz)cur_dir=2;
   
   if(cur_dir != last_dir)
   {
      last_dir=cur_dir;
      return(last_dir);
   }
   else
      return(0);
}


  
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
                     
bool NewBar = New(); //работаем только с нового бара

int volot = volotilnost(NewBar); //определяем волотильность
Hfr(NewBar,volot); //определяем фрактал верхний
Lfr(NewBar,volot); //определяем фрактал нижний

      double BuyLine, SellLine;
   
      BuyLine = ObjectGet("upline",OBJPROP_PRICE1);
      SellLine = ObjectGet("downline",OBJPROP_PRICE1);

int isCrossed = Crossed(Open[0],Bid,SellLine,BuyLine); //говорит о пересечении баром линии
OrderOpenFunction(isCrossed);



//----
   return(0);
  }
//+------------------------------------------------------------------+


bool New()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   //Print("lastbar = ",lastbar," curbar = ",curbar);
   if(lastbar!=curbar)
   {
      lastbar = curbar;
      //Print("ypa");
      return(true);
   }
   else
      return(false);
}

int volotilnost (bool NewBar)
{
   if(NewBar == true)
   {
      for(int i=0;i<=kolbar;i++)
      {
         sum = sum + MathAbs(High[i]-Low[i])*1000;
         //Print(sum);
      }
      sumr = sum/kolbar;
      Print(sumr);
      return(sumr);
   }   
}

void Hfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iHigh(Symbol(),TF,5)<iHigh(Symbol(),TF,4))
         {
            if(iHigh(Symbol(),TF,4)<iHigh(Symbol(),TF,3))
            {
               if(iHigh(Symbol(),TF,2)<iHigh(Symbol(),TF,3))
               {
                  if(iHigh(Symbol(),TF,1)<iHigh(Symbol(),TF,2))
                  {
                     ObjectDelete("upline");
                     ObjectCreate("upline",OBJ_HLINE,0,0,(iHigh(Symbol(),TF,3)));
                     TimeBarH = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}
         

void Lfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iLow(Symbol(),TF,5)>iLow(Symbol(),TF,4))
         {
            if(iLow(Symbol(),TF,4)>iLow(Symbol(),TF,3))
            {
               if(iLow(Symbol(),TF,2)>iLow(Symbol(),TF,3))
               {
                  if(iLow(Symbol(),TF,1)>iLow(Symbol(),TF,2))
                  {
                     ObjectDelete("downline");
                     ObjectCreate("downline",OBJ_HLINE,0,0,(iLow(Symbol(),TF,3)));
                     TimeBarL = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}

void OrderOpenFunction(int isCrossed)
{
   total = OrdersTotal();
   if(total<1)
   {
      if(isCrossed == 1)
      {
         OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"Покупка",Magic,0,Green);
      }
      if(isCrossed == 2)
      {
         OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продажа",Magic,0,Red);
      }
   }   
}
Je pense que l'erreur se trouve dans isCrossed, mais je ne la trouve pas là... J'ai supprimé une partie du code (où j'enregistre des données dans des tableaux), parce qu'elle surcharge le code, mais si j'en ai besoin, je serai aussi heureux de la partager avec vous
 
Bonsoir, j'ai placé un ordre bylimit en attente, sans stop, erreur 130 ! !!!. Qu'est-ce que ça peut être ? Ou est-ce que je me trompe encore ? S'il vous plaît, conseillez-moi !
 

Bonjour à tous.

Pouvez-vous me dire comment décrire le croisement de la ligne principale et de la ligne de signal de la stochastique ?

 

Quelque chose comme ça, dans mon esprit

F=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_MAIN , 0) ;
   SIGNAL=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_SIGNAL , 0) ;
   if (F==SIGNAL) {Урра!!!!; }
 

une autre question, pourquoi le programme dit que l'objet existe, alors qu'en fait il n'existe pas (je regarde juste le moniteur et je ne vois pas clairement l'objet).

void DrawLines()
{
   ObjectCreate("line1",OBJ_TREND,0,ArrayH[1],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[1])),ArrayH[2],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[2])));
   Print(GetLastError());
}

iBarShift(Symbol(),TF,ArrayH[1]) - donne le numéro de la barre, j'ai vérifié tout ça par Print(). Mais GetLastError me donne l'erreur 4200 - je ne comprends pas ce qui se passe =)

 
kolyango:

Je dois trouver comment faire ça à partir d'un indicateur...

Il n'y a pas moyen de sortir de l'indicateur
Raison: