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

 
alsu:
Notez ce que vous obtenez et les messages que vous imprimez dans le journal.



J'ai montré où il devrait entrer, mais il n'est pas entré, quelles fractales devraient pointer. j'ai également joint dans l'archive le code et la sortie dans le fichier txt de test (je l'ai changé, ajouté le mien, mais le problème reste toujours). honnêtement, je ne sais même pas quelles variables surveiller (et il y a une image de l'emplacement

)

Dossiers :
ik.zip  4 kb
 

J'ai repris la fonction GetLot (dans le fichier) d'un autre EA. Dans mon ancien EA, il n'y a pas d'erreur en soi, mais dans mon EA, elle génère

'(' - définition de fonction inattendue C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (106, 15)
'Free' - variable non définie C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 28)
'Risk' - variable non définie C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 33)
'Free' - variable non définie C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (115, 17)

Quel est le problème ?

Dossiers :
 
Pourquoi aimez-vous tous autant les archiveurs ? Avez-vous 100500 lignes de code dans votre code source ? !
 

griha:

J'ai repris la fonction GetLot (dans le fichier) d'une autre EA. Dans mon ancienne EA, il n'y a pas d'erreur en soi, mais dans mon EA, elle génère

'(' - définition de fonction inattendue C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (106, 15)
'Free' - variable non définie C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 28)
'Risk' - variable non définie C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 33)
'Free' - variable non définie C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (115, 17)

Quel est le problème ?

Il y a un crochet supplémentaire dans le code de la fonction de démarrage avant le premier If, c'est pourquoi il y a des erreurs. Pour faciliter la lecture des parenthèses, vous devriez toujours essayer de les placer en premier, puis d'écrire tout ce dont vous avez besoin à l'intérieur. Mieux encore, vous devriez les placer sur une nouvelle ligne avec un décalage, afin que les blocs séparés ne soient pas mélangés (par exemple, comme dans le code donné à la page précédente)

P.S. :

Je pense que le calcul du lot par cette formule

 double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;    // откидываем лишние знаки после запятой, оставляем 2 знака
ne fonctionnera pas correctement pour un lot de 0.1 avec un pas supérieur à 0.01, peut-être ai-je raté quelque chose, mais alors le lot sera toujours égal à 0 ( MathFloor (900*2/100/1324/0.02=0.67975831) = 0, donc 0*Step=0)...
 

Je n'arrive pas à trouver comment calculer quelque chose comme OrderProfitPips( ) pour un ordre sélectionné si la paire est arbitraire. C'est-à-dire le profit en pips, et non en devise du compte.

J'ai besoin de pips exactement - pour analyser l'efficacité du trading multidevises sur différentes paires. J'ai besoin de pips à quatre chiffres (ou convenablement à deux chiffres, si la paire est en yens). Considérons que la devise du compte est l'USD, et que la taille du contrat est de 100 000 unités.

Si la paire est EURUSD, tout est simple :

pips = OrderProfit( ) / ( OrderLots( ) * 10. );


Si la paire est AUDCHF, c'est un peu plus compliqué. Si le compte était un compte en francs, la formule serait exactement la même. Mais le compte est un compte en francs, c'est-à-dire que OrderProfit() renvoie en dollars. Mon bénéfice doit donc être converti en francs :

pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );

N'est-ce pas ?

 
Mathemat:

Je n'arrive pas à comprendre comment calculer quelque chose comme OrderProfitPips( ) pour l'ordre sélectionné si la paire est arbitraire. C'est-à-dire le profit en pips, et non en devise du compte.

J'ai besoin de pips exactement - pour analyser l'efficacité du trading multidevises sur différentes paires. J'ai besoin de pips à quatre chiffres (ou convenablement à deux chiffres, si la paire est en yens). Considérons que la devise du compte est l'USD, et que la taille du contrat est de 100 000 unités.

Si la paire de devises est EURUSD, tout est simple :

pips = OrderProfit( ) / ( OrderLots( ) * 10. );


Si la paire est AUDCHF, c'est un peu plus compliqué. Si le compte était un compte en francs, la formule serait exactement la même. Mais le compte est un compte en dollars, c'est-à-dire que OrderProfit() renvoie en dollars. Mon bénéfice doit donc être converti en francs :

pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );

N'est-ce pas ?


Avez-vous lu http://www.fxtrademaker.com/fx_calculation.htm ? Ou est-ce http://thismatter.com/money/forex/leverage-margin-pips.htm ?

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


 

Oui, il semble y avoir une utilité pour les deux liens. Merci.

P.S. J'ai décidé de compter non pas en pips mais en devise du compte. Les pips des croisements en yen sont trop disproportionnés par rapport aux pips habituels. Et j'ai voulu les additionner (de manière conventionnelle, bien sûr)...

 
Mathemat:

Oui, il semble y avoir une utilité pour les deux liens. Merci.

P.S. J'ai décidé de ne pas compter en pips, mais en devise du compte. Les chiffres des pips des croisements de yens sont trop incommensurables avec les chiffres habituels. Et j'ai voulu les additionner (au conditionnel, bien sûr)...


Les pips sont les pips, comment peuvent-ils être disproportionnés ? En quoi un bénéfice de 20 points sur l'EURUSD est-il différent d'un bénéfice de 20 points sur le JPY ? Vous devez mal compter... Mais il est vraiment plus facile de calculer dans la devise du compte.

 
evillive: Pips est pips, comment peuvent-ils être incommensurables ?

Eh bien, sur votre lien (deuxième), tout est visible :

Vous achetez 100 000 unités de EUR/JPY = 164,09 et vendez lorsque EUR/JPY = 164,10, et USD/JPY = 121,35.

Profit en pips JPY = 164.10 - 164.09 = .01 yen = 1 pip (Rappelez-vous l'exception du yen : 1 pip JPY = .01 yen).

Profit total en pips JPY = 1 x 100,000 = 100,000 pips.
Profit total en Yen = 100,000 pips/100= 1,000 Yen.

Comme vous n'avez que la cotation de USD/JPY = 121,35, pour obtenir le bénéfice en USD, vous divisez par le taux de conversion de la devise de la cotation :

Profit total en USD = 1 000/121,35 = 8,24 USD.

Si vous ne disposez que de cette cotation, JPY/USD = 0,00824, qui est équivalente à la valeur ci-dessus, vous utilisez la formule suivante pour convertir les pips en yens en monnaie nationale :

Profit total en USD = 1 000 x 0,00824 = 8,24 USD.

Un bénéfice de 8,24 USD (égal à 0,824 pips sur 1 lot EURUSD, par exemple) équivaut à 100 mille pips yens dans cet exemple !

P.S. Je me sens comme un novice complet...

 
Mathemat:

Votre lien (le deuxième) montre tout :

Un bénéfice de 8,24 USD (égal à 0,824 pips sur 1 lot EURUSD) équivaut à cent mille pips yens !


Vous l'avez mal lu. Pour les paires avec une cotation inversée, prenez la différence entre le prix d'ouverture et le prix actuel et multipliez-la par le multiplicateur obtenu à partir de Digits ( Pips = (Bid -OrderOpenPrice())*Digits_coefficient ; ) , ce qui donne (80.60-80.45=0.15) * MathPow(10,Digits) = 15 pips, où

Digits_coefficient  = MathPow(10,Digits);

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

P.S. : Bien que non, cela pourrait être plus simple ))))

 Pips = (Bid - OrderOpenPrice())/Point; //ордер лонг
 Pips = (OrderOpenPrice() - Ask)/Point; //ордер шорт

Et cette expression est vraie pour TOUTES les paires de devises !

Raison: