[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 - 2. - page 436

 
semiromid:

Прошу помощи .

Как в этот коментарий "Возникла ошибка " можно добавить переменную ?

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, "Возникла ошибка ", 0);


string Stroka ;

double x ;

.............

.............


Stroka=StringConcatenate("Une erreur est survenue ", DoubleToStr(x, 0) );

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, Stroka, 0) ;

 
bercut0077:

Bonjour les experts, dans l'indicateur, je suis intéressé par la valeur obtenue par le conseiller expert.

Constantes spéciales utilisées pour indiquer l'état des paramètres et des variables. Peut prendre les valeurs suivantes :

Constant Valeur Description
NULL 0 Indique un état de chaîne vide
VIDE -1 Indique l'état vide du paramètre
EMPTY_VALUE 0x7FFFFFFFF Valeur par défaut, pointeur vers une valeur vide. Utilisé dans les indicateurs personnalisés
CLR_NONE 0xFFFFFFFFFF Indique l'absence de couleur
WHOLE_ARRAY 0 Utilisé avec les fonctions de tableau. Indique que tous les éléments d'un tableau doivent être traités


0x7FFFFFFFF en hexadécimal est égal à 2147483647 en décimal.

C'est-à-dire qu'à un moment donné, une valeur vide apparaît dans le tampon de l'indicateur - c'est ce que vous voyez dans l'Expert Advisor. Vous pouvez définir la "valeur vide" du tampon de l'indicateur :

void SetIndexEmptyValue( int index, double valeur)

Définit la valeur vide pour la ligne de l'indicateur. Les valeurs vides ne sont pas dessinées ou affichées dans la DataWindow. La valeur par défaut de la valeur vide est EMPTY_VALUE.
Paramètres :
indice - Index - numéro d'index de la ligne. Doit être compris entre 0 et 7.
valeur - Nouvelle valeur "vide".
 
peshihod:


C'est-à-dire que l'heure d'ouverture n'a pas d'importance si elle a été ouverte il y a une minute ou deux ?

Le point 2 n'est pas clair. C'est un peu vague.

L'heure d'ouverture peut être déterminée par OrderOpenTime().

C'est-à-dire que l'heure d'ouverture n'a pas d'importance si elle a été ouverte il y a une minute ou deux ?


Мгновенное открытие

1.Моментальное(Сиюсекундное +0.5 - 2 секунды) определение вновь открывшегося торгового(не отложеных ордеров) ордера(Ордера открытого вручную и открытого спомощью советника).Система идентефецируюет ордер из друх вариантов (Sell или Byu) .

Если система определила ордер который рание не был открыт . то идет продолжение под номером 2.

2. Выполняеться какая то задача (Например,если Sell: Alert("Открытый ордер на продажу"+y);),(Например,если byu: Alert("Открыт ордер на покупку"+w);), всего 1-н раз,именно для этого ордера .

После того как еще открылся один ордер(толи системой, толи вручную ), система вновь действует с пункта 1 по пункт 2 .

 
peshihod:

string Stroka ;

double x ;

.............

.............


Stroka=StringConcatenate("Une erreur est survenue ", DoubleToStr(x, 0) ) ;

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, Stroka, 0) ;


Belle combinaison. Um...
 
artmedia70:

Constantes spéciales utilisées pour indiquer l'état des paramètres et des variables. Peut prendre les valeurs suivantes :

Oui c'est clair, mais ce n'est pas clair comment soigner l'indicateur à partir de ces valeurs vides, c'est pourquoi j'ai publié le code, j'ai besoin d'une aide réelle, c'est-à-dire que j'ai besoin que l'indicateur sorte toujours 1 ou -1.
 
bercut0077:
Oui c'est clair, mais ce n'est pas clair comment guérir l'indicateur de ces valeurs vides, c'est pourquoi j'ai publié le code, j'ai besoin d'une aide réelle, c'est-à-dire que j'ai besoin que l'indicateur sorte toujours 1 ou -1.
J'ai fourni un exemple de fonction qui définit la valeur d'une valeur vide pour une ligne d'indicateur. Vous pouvez le faire d'une manière différente. Si vous n'avez besoin que de deux valeurs +1 et -1, alors lorsqu'une valeur vide apparaît, vérifiez l'état antérieur (+1 ou -1) et saisissez-le à la place de la valeur vide. Il y aura donc toujours +1 ou -1 dans le tampon.
Supposons qu'il existe une valeur de +1. Une valeur vide apparaît. Au lieu de cela, continuez à saisir la valeur précédente (+1) dans le tampon dès que -1 apparaît, puis saisissez-la dans le tampon.
Il y aura maintenant -1 dans le tampon. Dès qu'une valeur vide apparaît, vous vérifiez la valeur précédente (elle est maintenant -1), et l'entrez dans le tampon.
De cette façon, vous aurez toujours +1 ou -1 dans le tampon.
 
artmedia70:

Merci. Une autre tâche s'est présentée...
 
semiromid:

1.Моментальное(Сиюсекундное +0.5 - 2 секунды) определение вновь открывшегося торгового(не отложеных ордеров) ордера(Ордера открытого вручную и открытого спомощью советника).Система идентефецируюет ордер из друх вариантов (Sell или Byu) .

Если система определила ордер который рание не был открыт . то идет продолжение под номером 2.

2. Выполняеться какая то задача (Например,если Sell: Alert("Открытый ордер на продажу"+y);),(Например,если byu: Alert("Открыт ордер на покупку"+w);), всего 1-н раз,именно для этого ордера .

После того как еще открылся один ордер(толи системой, толи вручную ), система вновь действует с пункта 1 по пункт 2 .


Je comprends qu'un ordre en attente et un ordre ouvert sont des ordres différents. Et si l'ordre en attente est ouvert, alors la tâche est réduite à la tâche initiale, à l'ordre ouvert. Si je comprends bien, cela devient très compliqué.

Quelles sont les tâches ? Peut-être, tout peut être fait d'une manière plus simple ?

 
Chers experts, aidez-nous à changer le code, nous devons obtenir
Cur_Trend без пустой величины, тоесть если появляется пустота, то нужно заменить последним известным значением
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightBlue
#property indicator_color2 Magenta

double CrossUp[];
double CrossDown[];
double Cur_Trend[];
int CurrentTrend = 0;
int starttime = 0;
extern int FasterEMA = 5;
extern int SlowerEMA = 8;

int init()
  {
   IndicatorBuffers(3); 
   SetIndexStyle(0, DRAW_ARROW, EMPTY);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, CrossUp);
   SetIndexStyle(1, DRAW_ARROW, EMPTY);
   SetIndexArrow(1, 234);
   SetIndexBuffer(1, CrossDown);
   SetIndexBuffer(2, Cur_Trend);
   starttime = TimeLocal(); 
   return(0);
  }

int deinit()
  {
   return(0);
  }

int start() { 
   int limit, i, counter, loop, ii;
   double fasterEMAnow, slowerEMAnow, fasterEMAprevious, slowerEMAprevious, fasterEMAafter, slowerEMAafter;
   double Range, AvgRange;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   loop = 0;
   for(i = 0; i <= limit; i++) {
      counter=i;
      Range=0;
      AvgRange=0;
      for (counter=i ;counter<=i+9;counter++)
      {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
      }
      Range=AvgRange/10;
      fasterEMAnow = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      fasterEMAprevious = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
      fasterEMAafter = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
      slowerEMAnow = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i);
      slowerEMAprevious = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i+1);
      slowerEMAafter = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i-1); 
      if ((fasterEMAnow > slowerEMAnow) && (fasterEMAprevious < slowerEMAprevious) && (fasterEMAafter > slowerEMAafter)) {
         CrossUp[i] = Low[i] - Range*0.5;
         if ((loop == 0) && (CurrentTrend != 1))  {
            CurrentTrend = 1;
            Cur_Trend[ii]= CurrentTrend;
            }
         if (loop == 0)  {
            loop = 1;
            }
      }
      else if ((fasterEMAnow < slowerEMAnow) && (fasterEMAprevious > slowerEMAprevious) && (fasterEMAafter < slowerEMAafter)) {
              CrossDown[i] = High[i] + Range*0.5;
           if ((loop == 0) && (CurrentTrend != -1))  {
              CurrentTrend = -1;
              Cur_Trend[ii]= CurrentTrend;
           }
           if (loop == 0)  {
              loop = 1;
          }
       }
   }
   return(0);
}
 

Chers experts !

J'ai besoin de votre aide pour répondre à la question suivante. J'ai un indicateur personnalisé qui dessine une ligne bicolore avec une couleur puis une autre. Existe-t-il un moyen d'apprendre à l'Expert Advisor à déterminer la couleur de la ligne en ce moment ?

Dossiers :