Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 483

 
culler:

Aidez-moi à résoudre un problème pour déterminer le moment d'intersection de deux lignes MA.

Je n'arrive pas à trouver comment le décrire.

Il y a MAfast et MAslow

double MAfast=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1) ;

double MAslow=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1) ;

si(MAfast>MAslow) cela ne fonctionne que si MAfast est en bas, quand il le croise, il attrape le moment du croisement, mais alors MAfast est en haut et l'ordre va BUY ))))

Je l'ai dans mon code. Alors comment déterminer exactement le moment du croisement et le comparer avec le BUY du bas vers le haut ou vice versa.

Dans mon code, c'est simplement plus ou moins. D'où les erreurs.

si ((x1 - y1)*(x2 - y2) < 0)
{
// nous avons une intersection
}
 
culler:

Aidez-moi à résoudre un problème pour déterminer le moment d'intersection de deux lignes MA.

Je n'arrive pas à trouver comment le décrire.

Il y a MAfast et MAslow

double MAfast=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1) ;

double MAslow=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1) ;

si(MAfast>MAslow) cela ne fonctionne que si MAfast est en bas, quand il le croise, il attrape le moment du croisement, mais alors MAfast est en haut et l'ordre va BUY ))))

J'ai dans mon code comment déterminer le moment du croisement et comparer sa direction de bas en haut ou vice versa.

Dans mon code, c'est simplement plus ou moins. D'où les erreurs.

Il y a beaucoup de choses à voir et à faireici.
 
artmedia70:
si ((x1 - y1)*(x2 - y2) < 0)
{
// nous avons une intersection
}


TarasBY:
Il y a beaucoup de choses intéressantes qui vous attendent ici.

Merci. Merci.
 
culler:

Aidez-moi à résoudre un problème pour déterminer le moment d'intersection de deux lignes MA.

Je n'arrive pas à trouver comment le décrire.

Il y a MAfast et MAslow

double MAfast=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1) ;

double MAslow=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1) ;

si(MAfast>MAslow) cela ne fonctionne que si MAfast est en bas, quand il le croise, il attrape le moment du croisement, mais alors MAfast est en haut et l'ordre va BUY ))))

J'ai dans mon code comment déterminer le moment du croisement et comparer sa direction de bas en haut ou vice versa.

Dans mon code, c'est simplement plus ou moins. D'où les erreurs.


Un fil de discussion très utile, et sur votre question !
 
La documentation dit :

bool WindowIsVisible( int index)
Renvoie TRUE si la sous-fenêtre du graphique est visible, sinon renvoie FALSE. La sous-fenêtre du graphique peut être masquée en raison des propriétés de visibilité de l'indicateur qui y est placé.
Paramètres :
indice - Index de la sous-fenêtre du graphique.
Exemple :
 int maywin=WindowFind("MyMACD") ; if(maywin>-1 && WindowIsVisible(maywin)==true) Print("La fenêtre MyMACD est visible") ; sinon Print("La fenêtre MyMACD n'a pas été trouvée ou n'est pas visible")
;
Veuillez expliquer ce que signifie : "Une sous-fenêtre graphique peut être masquée en raison des propriétés de visibilité de l'indicateur qui y est placé" ? Qu'est-ce que cet indicateur propriété ????
 

Est-ce que stopplay ne renvoie pas un int ?

Le compilateur donne un avertissement "perte possible de données due à la conversion de type" à ce code :

   int slevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
да и на 
   int digits = MarketInfo( Symbol(), MODE_DIGITS);
тоже
 

Une aide est nécessaire, une partie de la position ne se ferme pas lors du test de l'EA.

void Zacritie_poz_sell ()
{
 
 int    i, k=OrdersTotal();
 string sy=Symbol();
 
for (i=0; i<k; i++) 
{
 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
 {
  if ( OrderSymbol() == sy)
   {
    if (OrderType()==OP_SELL)
     {
       if ( OrderMagicNumber()==Magic)
       {
        double TP = OrderTakeProfit();
        double Prise = OrderOpenPrice();
        double Close_poz = NormalizeDouble( Prise-(Prise-TP)/2,Digits);
        double Lots1 = NormalizeDouble (Lots/4,Digits);
        double TP1 = OrderTakeProfit()+1*Point;
        double SL = OrderOpenPrice()-20*Point;
         if ( Bid == Close_poz && OrderStopLoss() != SL && TP == TP1 && Lots != Lots1)
         {
          
           OrderClose(OrderTicket(),Lots1, Bid, 40*Point, Yellow);

           break;
           Sleep (1000*5);
           RefreshRates();
         
          
         }
         
       }
     }
  
    }
   }
 }
}
 
miha91:

Une aide est nécessaire, une partie de la position ne se ferme pas lors du test de l'EA.


for (i=k-1; i>=0; i--)
 
evillive:

Est-ce que stopplay ne renvoie pas un int ?

Le compilateur génère l'avertissement "possible loss of data due to type conversion " sur un code comme celui-ci :

Conversion explicite des types :

int slevel = (int)MarketInfo(Symbol(), MODE_STOPLEVEL);
Voir... La fonction est de type double, mais l'identifiant de la demande peut définir le type de retour int. C'est pour ça que c'est un juron.
 

Je suis en train d'optimiser un EA, il y a beaucoup de dépassement, environ 10^17 degrés, il y a plus de paramètres, mais ils ne peuvent plus être optimisés. Pourquoi y a-t-il de telles restrictions ?

Plus une question sur l'algorithme génétique. Il semble cesser de fonctionner correctement sur de si grosses données, le bénéfice final fait un bond assez spectaculaire, souvent vers le bas. C'est-à-dire qu'il a trouvé des paramètres rentables maintenant, mais pas à un autre moment. Les développeurs vont-ils le réparer ?