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

 
Zhunko:

Une description de quoi ? Qu'entendez-vous par description ? Tout est là.

Description des fonctions dans le fichier d'en-tête. Exemples d'utilisation dans le script de test.


Désolé, je l'ai vu. Je l'ai vu.
 

Bonjour. Aidez-moi à réparer le code d'une EA. Le problème dans le code est le suivant : si le prix > ou = les niveaux prescrits alors une transaction s'ouvre. Le prix peut être autant qu'il veut > ces niveaux, respectivement, l'EA ouvre un tas de trades.

Je veuxenlever le symbole">"du code et ne laisser que"=". J'ai moi-même enlevé le symbole ">" mais j'obtiens beaucoup d'erreurs lors de la compilation.AIDEZ-MOI.

 
// < 0 - Dn
// > 0 - Up
int Signal()
{
double RSI = iRSI(NULL,15,RSIperiod,RSI_price,SignalBar);
double Stoch = iStochastic(NULL,15,Stoch_K,Stoch_D,Stoch_slowing,Stoch_method,Stoch_price,Stoch_mode,SignalBar);
double CCI = iCCI(NULL,15,CCI_period,CCI_price,SignalBar);

double MA2 = iMA(NULL,15,ma2_period,ma2_shift,ma2_method,ma2_price,SignalBar);
double IchiA = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 3, SignalBar);
double IchiB = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 4, SignalBar); 

    if(GO && SignalType_1 && RSI >= 65 && Stoch >= 80 && CCI >= 100) {GO=false; return(+1);}//запретить повторный вход (+1);
    if(GO && SignalType_2 && Bid >= MA2 && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход return(+1);
    if(GO && SignalType_3 && Bid >= IchiA && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход (+1);
    
   
    
    if(GO && SignalType_1 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_2 && Ask <= MA2 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_3 && Ask <= IchiB && RSI <= 35 && Stoch <= 20&& CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    
    if(OrdersTotal()==0)GO=true;
    
    return(0);
}


C'est une partie du code, si vous avez besoin du code entier, je le posterai.

Merci d'avance.
 

Mettez une ligne avant la vérification de la condition

si(OrdersTotal()>0)return(0) ;

J'ai regardé à nouveau et j'ai réalisé que le code n'est pas le vôtre et que vous n'avez aucune idée de comment le réparer. Vous avez déjà tout dans votre code, cherchez l'endroit où il passe des commandes et pourquoi il ignore la variable GO.

 
Roger:

Mettez une ligne avant la vérification de la condition

si(OrdersTotal()>0)return(0) ;

J'ai regardé à nouveau et j'ai réalisé que le code n'est pas le vôtre et que vous n'avez aucune idée de comment le réparer. Vous avez déjà tout dans votre code, cherchez l'endroit où il passe des commandes et pourquoi il ignore la variable GO.

Le code n'est pas le mien, mais il a été écrit pour moi dans le cadre de mon travail technique et je n'ai aucune idée de la façon de le réparer, c'est pourquoi je l'ai adressé. Merci pour la réponse
 

Bon après-midi.

Pouvez-vous me dire s'il vous plaît (dans un message privé) où se trouvent les devis le week-end ?

 

Bonjour à tous, j'ai besoin d'aide. Je ne sais pas où se trouve l'erreur !

Le point est le suivant. Nous définissons le point de référence dans le temps, disons le 29/10/2012 00:00. Créez un tableau et placez-y les valeurs du point de départ au moment présent. Ensuite, vérifiez les conditions d'écarts de prix que j'ai fixées. Si nous atteignons la déviation ==10. Nous affichons un message et déplaçons le point de celui que nous avons défini précédemment à 2 jours en avant. Et répétez la procédure. Le problème est que le tableau suivant doit être constamment réapprovisionné, disons à partir d'un point 29/10/2012 00:00 nous n'avons pas assez de valeurs et chaque nouvelle barre minute formée doit être placée dedans et vérifiée et le point de référence n'est pas déplacé jusqu'à ce que les conditions coïncident ==10 fois. Mais pour une raison quelconque, à chaque tic, il recommence à compter les valeurs à partir du point de départ !!!!.

Aidez-nous à résoudre ce problème ! MERCI À TOUS POUR VOTRE AIDE ! !!

//-----------------------------------------------------------------------------------------------------------------------------------
datetime Tochka_History = D'2012.10.10 17:30';           
double d[];                                            
double a;                                                 
int i;                                                   
int r=0;                                                 
int j=0;                                                  
int c=0;                                                    
datetime time;                                              
int bars;                                                   
string l;
//-----------------------------------------------------------------------------------------------------------------------------------
int start(){
if(j==0){
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Точка отсчета - ",l,"; Счетчик c - ",c);                                                                          
if(TimeCurrent()>=Tochka_History){                                                                                   
bars=iBarShift(NULL,PERIOD_M1,Tochka_History,false);                                                                 
time=iTime(NULL,PERIOD_M1,i);                                                                                                                                            
ArrayResize(d,bars);                                                                                                 
for(i=bars;i>0;i--) d[i]=(iHigh(NULL,PERIOD_M1,i)+iLow(NULL,PERIOD_M1,i))/2;                                        
for(i=bars;i>0;i--) Uslovie();}}}                                                                                     
//-----------------------------------------------------------------------------------------------------------------------------------
void Uslovie(){
if(r==0){a=d[i];r=1;}
if(a+10*Point<=d[i] && r==1){r=0; c=c+1; Alert("Счетчик c - ",c);}
if(c==10){Alert("Значение С достигло 10"); j=1; Smeshenie();}}
//-----------------------------------------------------------------------------------------------------------------------------------
void Smeshenie(){
Tochka_History=Tochka_History+2*24*60*60;
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Новая точка отсчета времени - ",l);
if(TimeDayOfWeek(Tochka_History)==6||TimeDayOfWeek(Tochka_History)==0){
Tochka_History=Tochka_History+1*24*60*60;
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Новая точка отсчета времени, если выпали выходные - ",l);} j=0;}
//-----------------------------------------------------------------------------------------------------------------------------------
 
merkulov.artem:

Bonjour à tous, j'ai besoin d'aide. Je ne sais pas où se trouve l'erreur !

Le point est le suivant. Nous définissons le point de référence dans le temps, disons le 29/10/2012 00:00. Créez un tableau et mettez-y les valeurs du point de départ au moment présent. Ensuite, vérifiez les conditions d'écarts de prix que j'ai fixées. Si nous atteignons la déviation ==10. Nous affichons un message et déplaçons le point de celui que nous avons défini précédemment à 2 jours en avant. Et répétez la procédure. Le problème est que le tableau suivant doit être constamment réapprovisionné, disons à partir d'un point 29/10/2012 00:00 nous n'avons pas assez de valeurs et chaque nouvelle barre minute formée doit être placée dedans et vérifiée et le point de référence n'est pas déplacé jusqu'à ce que les conditions coïncident ==10 fois. Mais pour une raison quelconque, il recommence à compter les valeurs à partir du point de départ à chaque tic-tac ! !!

Aidez-moi à résoudre ce problème ! MERCI À TOUS POUR VOTRE AIDE !

La troisième fois que je vois votre demande et que personne ne réagit, pourquoi pensez-vous cela ? Il est probable que les gens ne comprennent pas ce qu'on attend d'eux.

Si nous atteignons des déviations ==10. Nous affichons un message et déplaçons le point de 2 jours par rapport à celui que nous avions fixé précédemment......Mais pour une raison quelconque, il commence à recalculer les valeurs à partir du point de départ à chaque tic-tac !!!

C'est parce que votre code ne vérifie pas d'où il part. Il reprend donc chaque fois le point de départ. Vérifiez avec votre imprimeur s'il y a un écart de 10 et si cela décale vraiment le point de 2 jours. S'il est décalé de 10 et que le point de départ est décalé de 2 jours, il est nécessaire de vérifier, avant de saisir le prochain point, s'il est vraiment nécessaire de saisir le point de départ ou s'il est déjà saisi.

Vous avez une façon compliquée d'obtenir la vérité. Je suis sûr que si vous formulez le problème lui-même, il vous indiquera une façon plus simple de le résoudre.

P.S.

De toutes les solutions à un problème, la plus simple est toujours la plus difficile à trouver, car pour la trouver, il faut recycler et passer au crible un tas d'ordures. Alors, n'hésitez pas à formuler - solution simple ne veut pas dire solution rapide. Peut-être que les gens ici vous sauveront plus d'un jour de votre vie.

 

Bonne journée ! !! Question super super géniale. Comment arrêter le testeur lorsqu'il atteint le bon endroit dans le code ? Je ne vois rien de tel dans l'aide. Cela ne peut pas du tout être cela, et la fonction serait précieuse !

2. Le comportement de la fonction iCustom. En réalité, la fonction produit toujours une impression -1 (sauf quand un tampon coince le zigzag). Mais dans le testeur, tout est à 0. Pourquoi une telle différence ?

double strela1 = iCustom(NULL, taymfreym, "индикатор", 2, 1);
            double strela2 = iCustom(NULL, taymfreym, "индикатор", 3, 1);
            
            int BUY=0,SELL=0;int ticket; 
            Print (  " strela1 " , strela1 , "   strela2  " , strela2 );


 
Dimka-novitsek:
Bonne journée ! !! Question super super géniale. Comment arrêter le testeur lorsqu'il atteint le bon endroit dans le code ? Je ne vois rien de tel dans l'aide. Cela ne peut pas du tout être cela, et la fonction serait précieuse !

lui envoyer une pression sur le bouton "Pause/Break".

recherchez un article sur la façon de l'envoyer.

 
Merci ! Je vais le chercher !