Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 934

 
Aleksei Beliakov:

Pourquoi la dernière ligne ne comporte pas de barre oblique et est-il possible de renvoyer une valeur à partir d'une macro ?

c'est la syntaxe de substitution des macros, le collage des chaînes de caractères

voici un exemple de retour d'une valeurhttps://www.mql5.com/ru/forum/318246/page10#comment_12652228

 
S'il vous plaît, quelqu'un peut-il m'aider ?
 
jaffer wilson:
S'il vous plaît, quelqu'un peut-il m'aider ?
au lieu de paroles - posez des questions. La personne qui est à l'antenne tiendra compte de la substance du forum et y contribuera.
 
si (MA5>MA20)
{
Signal=1 ;
}

if(Signal>TradeLevel) // TradeLevel est fixé à 0.
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point, "Optim",16384,0,Blue) ;
}



Pouvez-vous me dire pourquoi cette logique ne fonctionne pas ? (mql4)
Les contrats ne s'ouvrent pas

(tout le reste, les variables, tout est décrit - modèle standard owl en MT, aucune erreur de compilation)
 
Ivan Butko:

   if (MA5>MA20)
     {
      Signal=1;
     }
   if(Signal>TradeLevel) // TradeLevel установлен в 0.
     {
      ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
     } 


Veuillez me dire pourquoi cette logique ne fonctionne pas. (mql4)
Les métiers ne s'ouvrent pas

(tout le reste, les variables, tout est décrit - modèle standard owl en MT, aucune erreur de compilation)

La logique ne fonctionne pas ou les positions de l'EA ne s'ouvrent pas ?

C'est une bonne habitude de regarder d'abord le magazine "Experts" - il y a beaucoup de choses à écrire. Et je ferais bien aussi de vérifier le "Journal".

Je vois exactement deux erreurs et une incertitude lors de l'envoi d'une demande de transaction.

 
Artyom Trishkin:

La logique ne fonctionne pas ou les positions de l'EA ne s'ouvrent pas ?

C'est une bonne habitude de regarder d'abord le magazine "Experts" - il y a beaucoup de choses à écrire. Et cela ne fait pas de mal de regarder le "Journal" aussi.

De mémoire, je vois exactement deux erreurs et une incertitude lors de l'envoi d'une demande d'échange.

Merci, ça marche !

Je viens de réintégrer cette logique dans l'EA MACD standard.
J'avais juste besoin d'une base pour déployer différents signaux et les résumer.

Toutes mes excuses pour le dérangement. (le journal était vide d'ailleurs, pas d'erreur non plus, il n'a juste pas ouvert les transactions et c'est tout).

Si cela ne vous dérange pas, veuillez quand même signaler l'erreur

 

Il existe un code primitif

templ(T)class CData{
public:CData(){};~CData(){};
       T Total(T &mas[]  ,int y){return(ArraySize(mas));}    
       T Total(T &mas[][],int y){return(ArraySize(mas));}}

Question comment appeler la fonctionTotal(), je veux l'appeler par exemple dans OnInit(), les gars s'il vous plaît ne soyez pas impolis, je suis un crétin, je ne comprends pas l'aide ? Dois-je supprimer la mémoire de la classe, et si oui, où et comment ?

 

PROBLÈME LORS DU CALCUL DU RISQUE PAR TRANSACTION.

TÂCHE : Calculez la taille du lot pour un niveau de risque acceptable par transaction de 250 $ pour n'importe quel instrument (y compris le forex, les mullions, les CFD).

MA RÉALISATION (pour BUY, extrait du code de fonction) :

//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(currencySelect,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*MarketInfo(symb,MODE_TICKVALUE)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

LE PROBLÈME : Ce code calcule correctement les pertes pour tous les actifs, y compris les paires de devises (y compris les croisements), l'or, le pétrole, MAIS les INDEX, nq100, par exemple,NE CALCULENT PAS correctement. À savoir, les données de mon script (pertes potentielles de transactions) sont systématiquement 10 fois MOINS élevées que ce que le testeur de stratégie MT4 lit !

QUELQUES NOTES :

1. Les tests ont été effectués dans le terminal Alpari.

2. Selon le terminal, le mode de calcul des profits sur XAUUSD, BRN (pétrole) et NQ100 est "CFD", sur les paires de devises, respectivement, "forex".

Je pense que le problème réside dans la taille des contrats, que je ne prends pas en compte (pour le pétrole - 1000, pour XAUUSD - 100, pour NQ100 - 10). Mais alors pourquoi XAUUSD, BRN comptent-ils correctement (et les paires de devises aussi), mais pas le NQ100 ? Peut-être, malgré le fait que dans les propriétés du symbole du terminal Alpari la méthode de calcul des bénéfices est "CFD", mais en réalité elle est comptée comme "Forex" ? Est-ce que c'est possible ?

En général, j'apprécierais que quelqu'un m'explique mon erreur de script et comment la corriger.

MERCI !

 
Сергей Михеев:

UN PROBLÈME LORS DU CALCUL DU RISQUE PAR TRANSACTION.

MODE _TICKSIZE

 
Yurij Kozhevnikov 2019.08.10 17:57 FR
Сергей Михеев:

PROBLÈME DANS LE CALCUL DU RISQUE PAR TRANSACTION.

MODE _TICKSIZE

Lire xxxxxxxx

Cela ne résout pas le problème, malheureusement. J'ai...

MODE_TICKVALUE равно MODE_POINT и равно MODE_TICKSIZE (для NQ100 это 0.1)

J'ai également essayé cette variante du code :

double StoimPunkt(string B){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));return(S);
}
//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(symb,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*StoimPunkt(symb)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

LE RÉSULTAT EST EXACTEMENT LE MÊME QUE DANS MON EXEMPLE CI-DESSUS.

D'autres idées ?