Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
( Avant d'essayer d'écrire ce commentaire, je pense avoir fait de nombreuses recherches pour trouver une solution, oui j'ai trouvé des fils similaires, mais je n'ai pas trouvé de solution pour ce problème. )
J'utilise le code ci-dessous pour l'ordre de vente qui me montre le Stop Loss en pips, il me montre la valeur correcte jusqu'à ce que le Stop Loss devienne positif.
Donc, je n'ai aucune idée de la façon dont je peux essayer de résoudre ce problème.
N'importe quel commentaire serait le bienvenu, s'il vous plaît.
( note : Je n'utilise pas de Trailing Stop pour le moment. Aussi le code ci-dessous juste pour les mises à jour d'information, pas pour OrderSend() ou des choses similaires. )
{
riskinpips=change_to_pips(OrderStopLoss()-OrderOpenPrice());
}
Print("stop loss in pips",DoubleToString(riskinpips,2));
Merci d'avance.
(Note : les étiquettes de capture d'écran ont été faites par le programme d'édition de photos pour décrire mon problème.)C'est la valeur la plus élevée moins la valeur la plus basse qui donne le résultat. Vous pouvez donc vérifier laquelle est la plus élevée.
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
C'est la valeur la plus élevée moins la valeur la plus basse qui donne le résultat. Vous pouvez donc vérifier laquelle est la plus élevée.
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Je me moque de moi-même en disant que ça ne me dérange pas. Je pense que ça pourrait m'aider. Je vais bientôt l'essayer.
Merci beaucoup M. Marco
#Profit Currency Calculate - Fermé
Cela fonctionne parfaitement jusqu'à présent.
Merci beaucoup @Marco vd Heijden et @whroeder1
#Time - Ouvert
Depuis que j'ai commencé à faire des recherches sur le temps / l'horloge pour mon EA. Je vois que les auteurs utilisent start() JUST dans l'indicateur pour cela.
J'utilise OnTimer() et OnTick() dans mon EA, je ne voudrais pas utiliser start().
J'ai donc juste besoin d'être sûr / d'apprendre quelle fonction spéciale serait meilleure pour la fonction Time and Clock ?
Je vais continuer à faire des recherches sur cette question 10 heures plus tard.
(note : J'ai déjà trouvé quelques indicateurs de temps et d'horloge sur la page Codebase de Mql5.com - mais je n'aime pas copier et coller).
Tout bon commentaire, partage de forum, et liens et autre serait mieux pour moi.
Merci d'avance.
La fonction de démarrage est remplacée par OnStart uniquement dans les scripts. Dans les Expert Advisors et les indicateurs, elle doit être renommée respectivement en OnTick et OnCalculate. Le code qui doit être exécuté lors d'une opération du programme mql5 doit être situé dans ces trois fonctions :
Voir : https://www.mql5.com/en/docs/migration
La fonction de démarrage est remplacée par OnStart uniquement dans les scripts. Dans les Expert Advisors et les indicateurs, elle doit être renommée respectivement en OnTick et OnCalculate. Le code qui doit être exécuté pendant une opération du programme mql5 doit se trouver dans ces trois fonctions :
#Time - Ouvert
Depuis que j'ai commencé à faire des recherches sur le temps et l'horloge pour mon EA. Je vois que les auteurs utilisent start() JUST dans l'indicateur pour cela.
J'utilise OnTimer() et OnTick() dans mon EA, je ne voudrais pas utiliser start().
J'ai donc juste besoin d'être sûr / d'apprendre quelle fonction spéciale serait meilleure pour la fonction Time and Clock ?
Je vais continuer à faire des recherches sur cette question 10 heures plus tard.
(note : J'ai déjà trouvé quelques indicateurs de temps et d'horloge sur la page Codebase de Mql5.com - mais je n'aime pas copier et coller).
Tout bon commentaire, partage de forum, et liens et autre serait mieux pour moi.
Merci d'avance.
Utilisez OnTimer().
L'utilisation de TimeLocal() donnera une meilleure apparence, mais elle ne sera pas synchronisée avec le fuseau horaire du courtier.
L'utilisation de TimeCurrent() sera synchronisée avec votre courtier, mais peut être décalée puis "sauter" des secondes en fonction de l'arrivée des ticks. Cet exemple va mettre en évidence le problème :
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
#Timer - Fermé
Utilisez OnTimer().
Utiliser TimeLocal() donnera une meilleure apparence, mais ne sera pas synchronisé avec le fuseau horaire du courtier.
L'utilisation de TimeCurrent() sera synchronisée avec votre courtier, mais peut être décalée puis "sauter" des secondes en fonction de l'arrivée des ticks. Cet exemple met en évidence le problème :
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
conseiller expert - questions diverses
honest_knave, 2016.11.30 01:28
IMHO il serait mieux que vous gardiez tous vos calculs de lot ensemble, plutôt que de les diviser entre OnChartEvent() et _lotCalc(). Une fonction qui vérifie min / max / pas et fait l'incrémentation / décrémentation.
const long & lparam , // Parameter of type long event
const double & dparam , // Parameter of type double event
const string & sparam // Parameter of type string events
)
{
_lotCalc();
//-------Process Button---------------------------------------------------------|
if ( sparam == _btnLotMinus )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
_lotSize = fmax(_lotMin, _lotSize-_lotStep);
_calcUpdade( CALC_CHANGE_LOT );
printf( " | Lot: %.2f ", _lotSize );
return;
} //---if Close
// ...
}
void _lotCalc()
{
//---
_lotMin = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MIN );
_lotMax = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MAX );
_lotStep = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP );
//---
}
#Lot Step - ReOpen
@honest_knave- merci pour votre grande aide concernant la taille de lot et le pas de lot.
J'ai juste besoin d'améliorer cette partie du code pour que lorsque " Taille du lot >= ( Lot Step * 100 ) ", le Lot Step augmente de " Lot Step * 100 ".
if(sparam==lotbuttonplus)
{
if(lotsize>=(lotstep*100))
{
lotstep=lotstep*100;
Print("lot step: ",lotstep);
}
lotmaxdivide=lotmax/lotmax *(lotvalue*10);
lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? lotstep*10 : lotstep));
// global variable
infoupdate();
printf("Lot: %.2f ",lotsize);
ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
return;
}
Merci d'avance.