![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
étudier les graphiques de 2010
en utilisant votre modèle pour créer quelque chose -- sur la ligue de la stochastique
comme nous avons utilisé nos graphiques stochastiques dans les premiers jours -- cela s'applique-t-il toujours aux graphiques de 2010 -- ce sont de vrais traders, bud et vous pourriez avoir ses missions -- je suis dans la programmation mathématique intégrale de Lebesgue sans bandes -- rappelez-vous le film She's Out of My League --- un bon travail signifie un bon salaire -----
lisez les codes -- un peu moins sophistiqués que le style d'investissement actuel en 2010
J'ai essayé à peu près toutes les combinaisons possibles de la maudite erreur de parenthèse que j'obtiens en essayant de compiler. Je l'ai regardé pendant de nombreuses heures mais je n'ai pas réussi à le réparer. J'ai trouvé une section de code qui fait échouer le script. Quelqu'un peut-il me conseiller sur ce qui ne va pas (à part le fait que je sois un crétin) ?
void ScanForClosure ()
{
int cash = OrderProfit() + OrderSwap() + OrderCommission()
int MacdCurrent, MacdPrevious, SignalCurrent ;
int SignalPrevious, MaCurrent, MaPrevious ;
int total2 = OrdersTotal() ;
int numords2 = 0 ;
bool type = false ;
int trd2 = 0 ;
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) ;
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1) ;
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0) ;
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1) ;
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0) ;
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1) ;
ArrayResize(lastOrders,5) ;
ArrayInitialize(lastOrders,0) ;
//
for(int cnt=0 ; cnt<total2 ; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS) ;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) ;
{
si ((OrderType()==OP_BUY)&&
(MacdCurrent>0)&&
(MacdCurrent<SignalCurrent)&&
(cash > 0)&&
(MacdPrevious>SignalPrevious) && MacdCurrent>(MACDCloseLevel*Point)) ;
{
CloseOrder(1) ;
}
si ((OrderType()==OP_SELL)&&
(cash > 0)&& (MacdCurrent<0 ) &&
(MacdCurrent>SignalCurrent)&&
(MacdPrevious<SignalPrevious)&&
(MathAbs(MacdCurrent))>(MACDCloseLevel*Point)) ;
{
CloseOrder(2) ;
}
}
}
}Salut Scotty,
Je copie l'exemple de macd
if(OrderType()==OP_BUY)
{
if(MacdCurrent>0 && cash > 0 && MacdCurrentSignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
retour(0) ;
}
else
{
if(MacdCurrent 0 && MacdCurrent>SignalCurrent &&
MacdPrevious(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // position fermée
retour(0) ;
}
Salutations
outils
pourquoi ce code donne-t-il une erreur de nombre de paramètres erroné ?
for(int i = 0;i < 3;i++)
{
kline = iStochastic(NULL,TimeFrame1, Period(), 4, 3, 3, MODE_SMA, 1, MODE_MAIN, i) ;
dline = iStochastic(NULL,TimeFrame1, Period(), 4, 3, 3, MODE_SMA, 1, MODE_SIGNAL, i) ;
}Devrait être
int counted_bars = IndicatorCounted() ;
int limite,i ;
if(counted_bars<0) return(-1) ;
if(counted_bars>0) counted_bars-- ;
limit = Bars - counted_bars ;
for(int i=limite ; i>=0 ; i--)
{
kline = iStochastic(NULL,TimeFrame1, 4, 3, 3, MODE_SMA, 1, MODE_MAIN, i) ;
dline = iStochastic(NULL,TimeFrame1, 4, 3, 3, MODE_SMA, 1, MODE_SIGNAL, i) ;
Salutations
outils
Merci M. Tools, peut-être que je l'ai rendu trop complexe, mais quel était le problème ? Est-ce que l'exemple affiché va scanner tous les tickets ouverts ? Je pense qu'il n'en scannera que 2 (un seul achat et un seul vente), probablement le même à chaque fois :/ Je suis très nouveau dans la programmation de mt4 mais je suis sûr que c'est ce qui se passe.
J'ai trouvé une solution.
C'est incroyable que vous fixiez le même problème pendant 10 heures d'affilée et que vous ne puissiez pas le résoudre. J'ai jeté un autre coup d'oeil. Quand je me suis réveillé, je l'ai résolu en 5 minutes. Il semble que ce code MT4 soit très serré. Vous semblez avoir besoin de coder précisément ce qu'il recherche (que vous puissiez ou non faire exactement la même chose dans 10 autres langues et que cela fonctionne).
J'ai créé des bots pour World of Warcraft pour qu'un personnage se déplace tout seul dans un jeu pour localiser et tuer des choses, mais lorsque j'essaie de créer une simple routine d'achat et de vente dans MT4, j'ai du mal.![](https://c.mql5.com/forextsd/smiles/frown.png)
Quoi qu'il en soit, la leçon que j'en ai tirée est de limiter ce que vous mettez sur une ligne avec un if. J'espère avoir épargné à d'autres la peine que j'ai eue.
OrderSelect(cnt, SELECT_BY_POS) ;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
si (OrderType()==OP_BUY)
si (profit>0)
si (MacdCurrent<SignalCurrent)
si (MacdCurrent>0)
si (MacdPrevious>SignalPrevious)
si (MacdCurrent>(MACDCloseLevel*Point))
{
CloseOrder(1) ;
}
si (OrderType()==OP_SELL)
si ((MacdCurrent<0 ) )
si (profit >0 )
si (MacdCurrent>SignalCurrent)
si (MacdPrevious<SignalPrevious)
si (MathAbs(MacdCurrent) >(MACDCloseLevel*Point))
Aide au code - Fractales
Bonjour,
Je cherche un peu d'aide sur le code nécessaire pour faire ce qui suit dans le cadre d'un système sur lequel je travaille :
Valide Long if :
(numéroté du plus ancien au plus récent 1-x)
-> La fractale pointant vers le bas 1 est supérieure à la fractale pointant vers le bas 2
-> La fractale vers le haut 1 est formée et crée la condition de break-long possible, cependant
-> La Fractale vers le bas 3 doit être plus élevée que la Fractale vers le bas 2
-- Cela valide le changement de tendance. Une rupture de prix de la fractale supérieure serait un VRAI valide. Si une nouvelle fractale supérieure inférieure se forme, c'est le nouveau point de rupture SAUF s'il y a une fractale inférieure à la fractale inférieure précédente. Les fractales inférieures devraient atteindre des sommets plus élevés.
L'inverse est vrai pour la validation à court terme.
Cheers
Aaron
Je peux essayer d'expliquer un peu mieux![](https://c.mql5.com/forextsd/smiles/smile.png)
Il y a donc une tendance à la hausse du prix, une fractale supérieure est formée. Le prix se rétracte et une fractale inférieure se forme. Le prix continue de se replier et une autre fractale inférieure se forme.
Ensuite, le prix monte pour former une nouvelle fractale supérieure, inférieure.
Le prix retrace et une autre fractale inférieure se forme, mais elle est plus haute que la fractale inférieure précédente.
Le prix casse la fractale supérieure précédente, condition de rupture longue valide.
PS Si une nouvelle fractale supérieure inférieure est formée, mais que les fractales inférieures continuent à atteindre des sommets plus élevés, le nouveau point de rupture est la fractale supérieure la plus récente.
PPS Si des fractales inférieures commencent à se former, les conditions sont réinitialisées et nous continuons à chercher les conditions ci-dessus ou les conditions inverses pour une validation courte d'une rupture.
Cheers
Aaron
Et de quelle aide à la programmation avez-vous besoin exactement ? Vous avez besoin de faire programmer tout le système ?
Juste la partie logique.
Disons qu'un bool qui est ValidBuy = FALSE ;
si la condition logique ci-dessus se produit, il prend la valeur VRAI.
Je suis sûr qu'il s'agit d'un tableau qui compare des valeurs de tableau, mais je ne suis pas très doué pour coder les tableaux.
Merci
Aaron
Vous n'avez pas besoin d'utiliser de tableaux. Il suffit de créer une fonction qui trouvera le niveau de la fractale donnée, et vous pouvez l'appeler comme ceci :
first parameter being number of fractal (0-last, 1-one before last, etc.) and second parameter telling if you want upper or lower fractal.
Then, you can code like this:
[CODE]double last_lower_fractal = FindFractal( 0, MODE_LOWER );
double previous_lower_fractal = FindFractal( 1, MODE_LOWER );
if( last_lower_fractal > previous_lower_fractal )
{
//we have found that most recent lower fractal is higher than its predecessor, do rest of your logic here.
}