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

 
evillive: Ça ne pourrait pas être plus simple, n'est-ce pas ?

Je suppose que oui. Je te l'avais dit - je suis un idiot, je suis un idiot... Le bénéfice dans la ligne supérieure est indiqué en pips, uniquement en 3 chiffres :


D'après ce que j'ai compris, PipProfit = USDprofit/lot/Point pour EURUSD. Pour les paires avec une cotation inverse, nous devons prendre la différence entre le prix d'ouverture et le prix actuel et la multiplier par Digits : Pips = OrderOpenPrice()-Bid*Digits_coefficient ; où
Digits_coefficient = MathPow(10,Digits) ;

Vous n'avez pas besoin de prendre la différence, il y a la fonction OrderProfit().

Revoyons tout ça pour que ça reste dans ta tête. Donc, achetons GBPJPY.

1. OrderProfit() est égal à -15.27 USD = -1228.32 JPY (pour la conversion en yen, multiplier par le taux USDJPY).

2. Diviser le bénéfice par le lot, égal à 0,1.

3. Nous divisons le résultat par le prix d'un pip d'un lot, égal à 0,01 JPY * 100000 = 1000 JPY. Nous obtenons -12,28 points, c'est-à-dire comme il se doit.

Il s'agit d'une erreur subtile, car les chiffres ne sont pas pris à un seul et même moment, mais le yen se renforce fortement.

Formule pour XXXYYY :

pips = ( USDYYY ou 1/YYYUSD ) * OrderProfit() / ( OrderLots( ) * Point ).

Ici, Point est le prix ponctuel d'un lot dans la devise YYYY, égal à 100000 * MathPow( 10, - Digits ).

 

Bon après-midi.

Quelles peuvent être les raisons pour lesquelles l'EA n'est pas optimisée ?

Il y a un paramètre optimisé, les indicateurs sont standard.

Le test se déroule normalement.

 
DOCTORS:

Pouvez-vous me donner un indice ?

Le script ferme les commandes qui se chevauchent... Mais il y a un problème - pour une raison quelconque, il ne ferme pas les ordres avec une taille de lot différente...

Pouvez-vous nous dire où se situe le problème ?


Tout d'abord, remplacez le sens de la vérification par

for(int i=1 ; i<=OrdersTotal() ; i++) // boucle la commande

à l'adresse

for(int i=OrdersTotal() - 1 ; i>=0 ; i--) // Boucle de commande


partout

 
sting-igor:

Pourquoi certains EAs fonctionnent-ils bien dans le testeur d'abord et ensuite n'ouvrent pas une seule transaction ? Je ne me souviens pas des noms des EAs, mais j'en avais trois, peut-être que je fais quelque chose de mal ? mt4

Si votre EA est mal écrite, elle peut effectuer une division par zéro et cesser de fonctionner. Regardez dans le journal pour l'erreur ZeroDevide...
 
ilunga:

Eh bien, pour commencer, remplacez le sens de contrôle par

for(int i=1 ; i<=OrdersTotal() ; i++) // Boucle de commande

à l'adresse

for(int i=OrdersTotal() - 1 ; i>=0 ; i++) // Boucle de commande


partout


Retiré, car le scénario était extrêmement incorrect... Beaucoup de choses à faire... Je voulais qu'il fasse chevaucher les transactions à zéro... mais il a juste chevauché... Merci beaucoup pour votre aide... ...quand je ferai le chevauchement zéro, je le posterai pour les questions.
 

Mathématiquement, si vous n'avez besoin que du nombre de pips en profit/perte, vous pouvez le faire d'une manière encore plus simple, je dormais hier quand j'ai écrit :))).

Elles semblent être des formules universelles, adaptées à toutes les paires de devises :

double tickvalue = MarketInfo(OrderSymbol(),MODE_POINT); //если нужно значение тика для инструмента в окне которого установлен эксперт, то просто используем Point в дальнейшем

Pips = (OrderOpenPrice()-Ask)/tickvalue; // order short

Pips = (Bid - OrderOpenPrice())/tickvalue; // order long

.

 

Messieurs, s'il vous plaît, aidez-nous.

J'ai besoin d'une fonction qui vérifie si le prix a touché le poignet au cours des X dernières barres ?

S'il vous plaît, ne me donnez pas de coups de pied trop durs, car je suis un parfait imbécile.

 

Comment réécrire l'indicateur Awesome pour 1H seulement. Supposons que j'attache Awesome à 4H, je veux que l'indicateur affiche les données relatives à 1H et non à 4H.

//---- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur
IndicatorShortName("AO") ;
SetIndexLabel(1,NULL) ;
SetIndexLabel(2,NULL) ;

ExtBuffer0[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,i) ;

Je change NULL en PeriodH1, mais cela n'aide pas.

 
flintz:

Comment réécrire l'indicateur Awesome pour 1H seulement. Supposons que j'attache Awesome à 4H, je veux que l'indicateur affiche les données relatives à 1H et non à 4H.

//---- nom pour le DataWindow et l'étiquette de la sous-fenêtre de l'indicateur
IndicatorShortName("AO") ;
SetIndexLabel(1,NULL) ;
SetIndexLabel(2,NULL) ;

ExtBuffer0[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,i) ;

Je change NULL en PeriodH1, mais cela n'aide pas.

Passez de NULL à "0" (le paramètre à côté de NULL).
 
Merci ! !!