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

 
pigvin:

Le problème est que l'EA rouvre constamment des ordres, c'est-à-dire qu'il y a un signal d'achat - il ouvre un ordre, puis le ferme à profit, et les conditions sont toujours préservées il l'ouvre à nouveau.

Je pensais que cela pouvait être résolu avec le traditionnel compteur d'achat et de vente - si l'ordre d'achat ouvre le compteur +1 et un nouvel achat ne peut être ouvert tant que le compteur n'est pas au-dessus de 0 et le compteur n'est remis à zéro qu'après la vente.

C'est-à-dire qu'il y a un signal sur une barre mais qu'elle a déjà été utilisée ?

Vous pouvez le faire comme suit

datetime save_time; 
int tf=0;
старт
...
if(total<1)//проверка количества ордеров 
   {
         if(save_time!=iTime(0,tf, iBarShift(0,tf,Time[0])))
            save_time =iTime(0,tf, iBarShift(0,tf,Time[0]));
         else return;


  ...
 if(ticket>0)
                      {
                         if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("открыта позиция BUY : ",OrderOpenPrice());
      
                         else Print("Ошибка при открытии BUY позиции : ",GetLastError()); 
                        }else{ save_time =0;}// так как ошибка запретим ретурн (см. выше)
 
Operr:

Essayez comme ça.

if (OrderOpenTime()+2*1440*60  > Time[0])   //т.е. последнее время текушего графика а не локальное

Cela devrait fonctionner dans les deux sens.

C'est plus logique pour moi.

if (Time[0]-OrderOpenTime() >= 2*1440*60 )   
 

Bonjour à tous !

Désolé pour le hors-sujet, le sujet est en demande, c'est pourquoi j'écris ici, pouvez-vous me donner un indice ? Coincé.

Comment, en utilisant uniquement des opérations élémentaires (+-*/%), effectuer l'exponentiation (y compris réelle) d'un nombre réel ? Par exemple, le calculateur de vent, appliqué à la puissance de 1,2, donne le résultat 1,2445647472073939777218169154111826. Intéressé par l'algorithme, la langue n'a pas d'importance, aucune. Je vais le traduire moi-même.

ZS. Combien de tests de programmation n'ont pas été faits, je vois un tel problème pour la première fois, bien qu'il puisse être trivial pour quelqu'un ?

 

Bonjour à tous !

J'ai cherché dans de nombreux forums et articles sur Google , mais je n'ai pas trouvé de réponse.

J'ai décidé d'écrire un EA pour trader sur deux ordres opposés sur М1.

L'idée est simple : mettre deux ordres opposés avec de petits TP, puis, lorsque le TP de l'un d'entre eux pour le second timer activé est le nombre de barres (disons 5), il sera SL temporaire. Le calcul est que si la devise évolue dans la même direction, les pertes lorsque le deuxième ordre déclenche le SL temporaire seront minimes, mais si le graphique se retourne, nous sommes dans le noir sur deux positions.

Je ne sais pas comment écrire un fragment de code avec"quand un TP de l'un d'entre eux se déclenche, le timer du second se met en route comme un nombre de barres".

je n'ai actuellement qu'une minuterie pour deux commandes à la fois, mais je n'arrive pas à en tirer grand chose

PS depuis un mois ne peut pas résoudre ce problème, s'il vous plaît aidez conseil ou code :)

voici le code du conseiller

extern int SL=100;

extern int TP=100;

extern double StartLot=0.1;

extern double StopLot=1.0;

extern int bar_time=20;


double Lot()

{

double lt;

if(OrdersHistoryTotal()==0) return (StartLot);

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()<0)

{

lt=OrderLots()*2;

if(lt>StopLot) return (StartLot);

else return (lt);

}

else

return (StartLot);

}

else

return (StartLot);

}

int start()

{

double lot;

if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

{

int order;

{

lot=Lot();

order=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);

order=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);

}

}

//вот здесь должно быть что-то что является решением проблемы и связующим звеном

{

int bars = iBarShift( Symbol(), PERIOD_M1, OrderOpenTime() ) ;

if ( iTime( Symbol(), PERIOD_M1, bars ) > OrderOpenTime() ) { bars ++; }

if ( bars >= bar_time )

OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5,White);

}

return(0);

}


Merci d'avance

 
En principe, nous ne devrions pas ouvrir dans cette tendance tant qu'il n'y a pas de signal de retournement ou de turbulence du marché !
costy_:

C'est-à-dire qu'il y a un signal sur une barre, mais il a déjà été utilisé ?

Vous pourriez faire ceci

 
snail09:

Bonjour à tous !

Désolé pour le hors-sujet, le sujet est en demande, c'est pourquoi j'écris ici, pouvez-vous me donner un indice ? Coincé.

Comment, en utilisant uniquement des opérations élémentaires (+-*/%), effectuer l'exponentiation (y compris réelle) d'un nombre réel ? Par exemple, le calculateur de vent, appliqué à la puissance de 1,2, donne le résultat 1,2445647472073939777218169154111826. Intéressé par l'algorithme, la langue n'a pas d'importance, aucune. Je vais le traduire moi-même.

ZS. Combien de tests de programmation je n'ai pas fait, je vois un tel problème pour la première fois, bien qu'il puisse être trivial pour quelqu'un ?

https://docs.mql4.com/ru/math/MathPow non ? Ou les opérations élémentaires sont une condition du problème. Alors l'option http://bpascal.ru/download/desc/436.php si vous faites tout à la main, puis implémentez l'exposant et le logarithme avec vos propres fonctions.

 
индикаторcosty_:

Vous utilisez while(i>=0), donc quand une nouvelle bougie apparaît i=1 (pour être sûr que les données de la bougie précédente sont calculées sur les données fixes une fois).

Pourquoi entrer some_time=D'1971.01.11 00:00' ; utiliser Bars, IndicatorCounted ne fonctionne pas pour moi (enfin, l'erreur est probablement due à la first_t_bar).

Votre algorithme et vous devriez le réparer.

"Je suis nouveau dans la programmation."Je suis nouveau dans la programmation depuis 2007).


Tout de même, je ne comprends pas pourquoi mon design fonctionne bien et pas le standard. some_time=D'1971.01.11 00:00' ; ici il est utilisé une fois au démarrage. La date est alors remplacée par une autre, mais cela n'a rien à voir, car cela fonctionne dans un cas et pas dans l'autre. Je referai l'indicateur plus tard. Il s'agit d'une version modifiée d'un autre indicateur. Merci pour la réponse !

 
Sonne:

Bonjour à tous !

J'ai cherché dans de nombreux forums et articles sur Google , mais je n'ai pas trouvé de réponse.

J'ai décidé d'écrire un EA pour trader sur deux ordres opposés sur М1.

L'idée est simple : mettre deux ordres opposés avec de petits TP, puis, lorsque le TP de l'un d'entre eux pour le second timer activé est le nombre de barres (disons 5), il sera SL temporaire. Le calcul est que si la devise évolue dans la même direction, les pertes lorsque le deuxième ordre déclenche le SL temporaire seront minimes, si le graphique se retourne, nous sommes dans le noir sur deux positions.

Je ne sais pas comment écrire un fragment de code avec"quand un TP de l'un d'entre eux se déclenche, le timer du second se met en route comme un nombre de barres".

je n'ai actuellement qu'une minuterie pour deux commandes à la fois, mais je n'arrive pas à en tirer grand chose

PS Je n'ai pas résolu ce problème depuis un mois, merci de m'aider avec des conseils ou un code :)

voici le code

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

Je ferai de mon mieux avant, merci d'avance.

1. S'il y a une position fermée sur un Takei...

1.1 Si son type est OP_BUY, ...

1.1.2 S'il existe une position ouverte OP_SELL, ...

1.1.3 Si le temps de la barre actuelle moins le temps de la barre ouvrant la position de vente est supérieur ou égal au nombre de barres pour le délai, .....

1.1.4 On ferme la position de vente

1.2 Si son type est OP_SELL, ...

1.2.2 S'il existe une position ouverte OP_BUY, ...

1.2.3 Si le temps de la barre actuelle moins le temps d'ouverture de la position d'achat est supérieur ou égal au nombre de barres à maintenir, .....

1.2.4 Fermer la position d'achat

 
Bonjour, pourriez-vous nous indiquer où obtenir une histoire normale (sans trous) et si l'histoire minute de MT5 pour MT4 ?
 

Bonsoir à tous, je m'excuse pour la question stupide précédente ;)

Je veux savoir s'il est possible pour un EA où il y a une variable, disons "A", de recevoir une valeur de prix à l'instant et de faire des transactions. Si nous voulons changer cette valeur en une valeur historique quelconque, par exemple, prenons n'importe quelle valeur mensuelle et dérivons la valeur souhaitée à partir de l'analyse de l'histoire. J'ai essayé de le faire dans le testeur de stratégie, mais j'ai de nombreux doutes quant à son exactitude. Ou devrai-je le refaire et travailler avec des tableaux ? Merci à tous.

p.s. Je veux savoir puisque je ne l'ai pas trouvé dans le manuel et le tutoriel MQL.

Raison: