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

 

Je fixe des drapeaux pour la direction de la transaction. Condition : Si elle tombe dans une zone entre les lignes, alors achetez et ne vendez pas, si dans une autre zone, alors n'achetez pas et vendez. Je règle ce processus avec des lignes horizontales.

extern bool    Покупать  = false;
extern bool    Продавать = false; 


   if ( pcb < Ask && Ask < pl )       // Если Аск цены попал в зону между Уровнем и КлозеБай,
    {                             
     Покупать = false;                // останавливаем покупку
     Продавать = true;
    }
   if ( pl < Bid && Bid < pcs )       // Если Бид цены попал в зону между Уровнем и КлозеСелл,
    {                            
     Продавать = false;               // останавливаем продажи (контрольный флаг)
     Покупать = true;
    }
   if ( pl < Bid && Bid < pb )        // Если Бид цены попал в зону между Уровнем и Покупкой,
    {                                 // начинаем покупать
     Покупать = true;
    }
   if ( pl > Ask && Ask > ps )        // Если Аск цены попал в зону между Уровнем и Продажей,
    {                                 // начинаем продавать
     Продавать = true;             
    }

Avant cela, je demande les prix des lignes exposées. Et après cela, un bloc d'ordres de placement ou de clôture - en fonction du drapeau.

Le code est trivialement simple. Mais... - Question...

Lorsque cette conception commence à fonctionner, les valeurs d'achat et de vente s'avèrent imprévisibles (chaotiques). Pourquoi cela se produit-il ? Parce qu'il existe des conditions claires pour la fonction "si" et les opérateurs "fin" et "plus/moins".

C'est-à-dire que le programme se comporte selon ses propres raisons : il achète ou vend, ou ne fait rien, indépendamment de ce qui est écrit dans les valeurs des variables.


Comment et que dois-je écrire pour que les conditions soient réunies et, surtout, pour qu'elles fonctionnent ? Qu'est-ce que je fais mal et qu'est-ce que je ne prends pas en compte ? (Je pense avoir mentionné tout ce dont j'ai besoin dans les conditions de fonctionnement).


Il y a également un autre problème à ce sujet : lorsque les variables changent en fonction des conditions, leurs valeurs dans les paramètres du conseiller expert (lorsqu'on y accède via F7) seront les mêmes que celles définies par l'utilisateur. Il n'est donc pas possible de voir les valeurs actuelles de ces variables. Comment pouvons-nous faire en sorte que nous puissions voir quelles sont leurs valeurs du moment ?

 
Dimka-novitsek:
Bonjour ! La condition ne fonctionne pas

J'ai déjà regardé la chaîne ife, je l'ai regardée, je l'ai regardée, je l'ai regardée, je l'ai regardée..... Il doit y avoir une raison, je peux être confus et ne pas voir quelque chose de simple et élémentaire, cela arrive.

J'ai regardé dans la matinée. Je suis sorti. Je suis revenu et j'ai regardé à nouveau. C'est plus facile maintenant, si, plus, moins... Je ne comprends pas du tout.



Et ça, c'est sous mon départ.


p.s. Tout cela fait partie de cette condition de stratégie

L'EMA - période 10 croise de haut en bas l'EMA - période 200, le CCI croise 0.100 ou 100 de haut en bas ; la bougie ferme ou est en dessous de la LMA - période 100.


Mettez une parenthèse pour montrer comment et ce qui est fait.

if( CCI_50S>100&&CCI_50<100 ||CCI_50S>0&&CCI_50<0|| CCI_50S>-100&&CCI_50<-100 )CCInapravlenie=true;
 
Chiripaha:

Je fixe des drapeaux pour la direction de la transaction. Condition : Si elle touche une zone entre les lignes, alors achetez et ne vendez pas, si elle touche une autre zone, alors n'achetez pas et vendez. Je règle ce processus avec des lignes horizontales.

Avant cela, je demande les prix des lignes exposées. Et après cela, un bloc d'ordres de placement ou de clôture - en fonction du drapeau.

Le code est trivialement simple. Mais... - Question...

Lorsque cette conception commence à fonctionner, les valeurs d'achat et de vente s'avèrent imprévisibles (chaotiques). Pourquoi cela se produit-il ? Parce qu'il existe des conditions claires pour la fonction "si" et les opérateurs "fin" et "plus/moins".

C'est-à-dire que le programme se comporte selon ses propres raisons : il achète ou vend, ou ne fait rien, indépendamment de ce qui est écrit dans les valeurs des variables.

Comment et que dois-je écrire pour que les conditions soient réunies et, surtout, pour qu'elles fonctionnent ? Qu'est-ce que je fais mal et qu'est-ce que je ne prends pas en compte ? (Je pense avoir mentionné tout ce dont j'ai besoin dans les conditions de fonctionnement).

Il y a également un autre problème à ce sujet : lorsque les variables changent en fonction des conditions, leurs valeurs dans les paramètres du conseiller expert (lorsqu'on y accède via F7) seront les mêmes que celles définies par l'utilisateur. Il n'est donc pas possible de voir les valeurs actuelles de ces variables. Comment faire pour que je puisse voir quelles sont leurs valeurs en ce moment ?

Commencez par regrouper les conditions :

    extern bool    Покупать  = false;
    extern bool    Продавать = false; 

    if (pl > Ask) {if (Ask > psb || Ask > ps) Продавать = true;}
    else {if (pl < Bid) if (Bid < pcs || Bid < pb) Покупать = true;}
Peut-être que de cette façon, ce sera plus facile à comprendre ! (Je ne suis pas entré dans la signification du code lui-même).
 

À première vue, il s'agit probablement des variables, et non des conditions. Je commencerais par sortir les variables avec des alertes, car le code lui-même semble NORMAL ! !!

Alert(" pcb " , pcb ) ; Alert(" pl " , pl ) ; Alert(" pb " , pb ) ;

 

comment changer le format des données lors de l'écriture dans un fichier?

il écrit dans des polices illisibles :(

 
TarasBY:

Remplacer :

Pour :

Et pourquoi l'ordre SELL s'ouvre (dans votre variante) (sur la base de ce que j'ai dit plus tôt) trouvez la réponse MOI-MÊME ! !!


Il s'avère qu'il n'est pas nécessaire d'appeler les paramètres à partir de l'indicateur. Tout peut être enregistré directement dans le conseiller expert.

Je vais analyser mon erreur.

J'ai réécrit mon indicateur avec les fonctions iLowest et iHighest, ce code est-il correct ou peut-il être tronqué ?

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Red

extern int Quant_Bars = 5; //количество баров

//--- buffers
double Line_1[];     //объявление массивов под..
double Line_2[];     //..буферы индикаторов

int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);    //стиль линии
   SetIndexBuffer(0,Line_1);                    //назнач. массива буферу
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);    //стиль линии
   SetIndexBuffer(1,Line_2);                    //назнач. массива буферу
//----
   return(0);                                      
  }

int start()
  {                        
   double Minimum;
   double Maximum;
   int k;
   
   Maximum= High[iHighest(NULL,0,MODE_HIGH,Quant_Bars,1)];
   Minimum= Low[iLowest(NULL,0,MODE_LOW,Quant_Bars,1)];
   
   for(k=1; k<=Quant_Bars; k++)
      {
       Line_1[k]= Minimum;
       Line_2[k]= Maximum;
      }
    return(0);
    }
               
 
Maintenant... Mon frère est là, l'aîné... Les supports sont probablement juste obstrués. Maintenant
 
Dimka-novitsek:

À première vue, il s'agit probablement des variables, et non des conditions. Je commencerais par sortir les variables avec des alertes, car le code lui-même semble NORMAL ! !!

Alert(" pcb " , pcb ) ; Alert(" pl " , pl ) ; Alert(" pb " , pb ) ;


Je l'ai déjà fait - toutes les variables sont correctes : les prix et les paramètres sont définis.
 
TarasBY:

Commencez par regrouper les conditions :

Peut-être que de cette façon, ce sera plus facile à comprendre ! (Je ne suis pas entré dans la signification du code lui-même).


Si vous le réglez de cette façon, ce sera une autre affaire - si c'est en dessous de la ligne, alors... Et j'ai besoin qu'elle tombe entre des lignes spécifiques - dans la zone de ces lignes.

 
Pacman:


Il s'avère qu'il n'est pas nécessaire d'appeler les paramètres à partir de l'indicateur. Tout peut être prescrit dans le conseiller expert.

Je vais devoir trouver quelle est mon erreur.

J'ai réécrit mon indicateur avec les fonctions iLowest et iHighest, ce code est-il correct ou peut-il être raccourci ?

Dès que vous introduisez l'indicateur dans l'EA, c'est une "herse pour le cheval" lorsque vous travaillez dans le testeur. Dans votre cas, l'indicateur n'est PAS nécessaire !!!
Raison: