[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 412
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
C'est-à-dire que le descripteur de fenêtre est simplement le numéro ORDER de la fenêtre, en partant de 0 (fenêtre principale) ?
Non
Bonjour à tous ! en écrivant un expert waggle, je cherchais des points de sortie plus précis et je suis tombé sur un croisement entre RSI (8) et ADX(25). visuellement tout va bien quand on trade manuellement sur la démo.
Question : comment écrire la condition de croisement de RSI (8) avec ADX(25) DI + par exemple si, RSI (8) a une limite de 0 à 100, et ADX(25) n'a pas de limite. C'est-à-dire, si vous jetez ADX sur le graphique sans limite et ensuite jetez RSI dessus, alors RSI s'échelonne par max et min ADX. Si ADX spécifie une limite de 0 à 100, alors il y a très peu de croisements clairs de ADX avec RSI.
Est-il possible de définir la valeur du RSI lorsqu'il est mis à l'échelle par ADX.
Non
Est-il possible de définir la valeur du RSI lorsqu'il est mis à l'échelle par ADX.
J'ai un indicateur avec environ 8 paramètres, j'ai entré tous les paramètres correctement, je l'ai vérifié plusieurs fois, mais à la compilation l'erreur ')' apparaît toujours. - Nombre de paramètres erronés D:\InstaTrader\experts_2.mq4 (11, 280)
Y a-t-il une limite au nombre de paramètres dans un indicateur non standard, lorsqu'il est connecté via iCustom ?
J'ai un indicateur avec environ 8 paramètres, j'ai entré tous les paramètres correctement, je l'ai vérifié plusieurs fois, mais à la compilation l'erreur ')' apparaît toujours. - Nombre de paramètres erronés D:\InstaTrader\experts_2.mq4 (11, 280)
? ???... si vous le voulez bien, donnez une réponse plus détaillée... et ce serait formidable si vous pouviez donner au moins un script simple comme exemple, qui aiderait à comprendre à quoi sert la fonction WindowHandle.
Au niveau actuel de vos connaissances, vous n'en avez pas vraiment besoin.
Si vous avez le désir de devenir un programmeur, alors mâchez la science avec l'aide de Google. Requête "descripteur de fenêtre site:mql4.com"
Je demande au gourou de la programmation de me répondre sur ma question, est-il même réaliste de faire ce conseiller ?
Tout est possible, si vous le voulez.
voir les choses suivantes :
1) Contrôle de l'ouverture du bar
2) Envoi de la commande
Essayez et essayez, et les gourous corrigeront...
Voici un EA pour que l'ordre s'ouvre sur la CLOSE de la bougie, et pas seulement sur une croix.
Qui aidera à l'avance merci.
//+------------------------------------------------------------------+
//| RSI_MA.mq4 |
//| Copyright © 2008, AEliseev k800elik@gmail.com |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Andrey E. k800elik@gmail.com"
#lien de propriété "http://www.metaquotes.net"
//---- paramètres d'entrée
extern CCI_Per=14 ;
extern MA_Per=20 ;
extern CCI_close_Per=14 ;
extern double TakeProfit=500 ;
extern double StopLoss=150 ;
extern double Lots=0.01 ;
externe interne Dépôt=1000 ;
extern bool MM=false ;
extern inttern _MagicNumber=131313 ;
extern int_Sleep=5000 ;
int LotA=1, Err=0 ;
int j=0 ; var2,var1 ;
int counter=0 ;
int ticket ;
bool var3 ;
bool order=false ;
//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert |
//+------------------------------------------------------------------+
int init()
{
Comment("CCI_MA v1.5 © 2008, Andrey E. k800elik@gmail.com") ;
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation des experts |
//+------------------------------------------------------------------+
int deinit()
{
/* int i, a1, a2 ;
//----
si (OrdersTotal()>0)
{
for (i=0 ; i==OrdersTotal() ; i++)
{
OrderSelect(i,SELECT_BY_POS) ;
si (OrderMagicNumber()==131313)
{
a1=OrderClose(LotA*Lots,Ask,5,Red) ;
//a2=OrderClose(var1,LotA*Lots,Ask,5,Red) ;
}
}
} */
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()
{
//----
si (isNewBar()) EveryBar() ;
EveryTick() ;
//----
retour(0) ;
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Vérifier la présence d'une nouvelle barre |
//+------------------------------------------------------------------+
bool isNewBar()
{ static datetime TimeBar=0 ;
bool flag=false ;
if(TimeBar!=Time[0])
{
TimeBar=Time[0] ;
flag=true ;
}
retour(drapeau) ;
}
//+------------------------------------------------------------------+
//| Exécuter l'action lorsque la nouvelle barre apparaît |
//+------------------------------------------------------------------+
void EveryBar()
{
// Print("Un nouveau bar est arrivé !")
double MA[100], CCI[100], CCIclose[100], StandDevi[100] ;
int i,limit=ArraySize(CCI) ;
double SL, TP ;
Sleep(_Sleep) ;
SL = NormalizeDouble(Ask - StopLoss*Point, Digits) ;
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits) ;
pour(i=0 ; i<limite ; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i) ;
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i) ;
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i) ;
}
// vérifier s'il y a assez d'argent pour ouvrir une nouvelle commande
si(AccountFreeMargin()<(1000*Lots))
{
Print("Nous n'avons pas d'argent. Marge libre = ", AccountFreeMargin()) ;
retour(0) ;
}
//=================================================================================
int _GetLastError = 0, _OrdersTotal = OrdersTotal() ;
//---- passer en revue tous les postes ouverts
for ( int z = _OrdersTotal - 1 ; z >= 0 ; z -- )
{
//---- si une erreur survient lors de la sélection de la position, passez à la suivante.
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError() ;
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError) ;
continuer ;
}
// si une position n'est pas ouverte pour le symbole courant, elle est ignorée.
si ( OrderSymbol() != Symbol() ) continuez ;
// si le MagicNumber n'est pas égal à _MagicNumber, passez.
// cette position
si ( OrderMagicNumber() != _MagicNumber ) continuez ;
//---- si une position BAY est ouverte,
si ( OrderType() == OP_BUY )
{
//---- si le CCI franchit la ligne 190 vers le bas
si (((CCIclose[2]>190) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2])
{
//---- position fermée
if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 10, Green ) )
{
_GetLastError = GetLastError() ;
Print("OrderClose error # , _GetLastError ) ;
Err=1 ;
retour(-1) ;
}
}
// si le signal n'a pas changé, sortez - il est trop tôt pour ouvrir.
//nouvelle position
sinon
{ return(0) ; }
}
//---- si une position de vente est ouverte,
si ( OrderType() == OP_SELL )
{
//---- si le CCI franchit la ligne -190 à la hausse,
si (((CCIclose[2]<-190) && (CCIclose[1]>=-300)) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2]))
{
//---- position fermée
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 10, Red ))
{
_GetLastError = GetLastError() ;
Print("OrderClose error # ", _GetLastError ) ;
Err=2 ;
retour(-1) ;
}
}
// si le signal n'a pas changé, sortez - il est trop tôt pour ouvrir.
// nouvelle position
sinon retour(0) ;
}
}
//+------------------------------------------------------------------+
//| si l'exécution a atteint ce point, il n'y a pas de position ouverte
//| vérifier s'il est possible d'ouvrir une position |
//+------------------------------------------------------------------+
Sleep(_Sleep) ;
//---- si le CCI a croisé le MACD de bas en haut,
SL = NormalizeDouble(Bid - StopLoss*Point, Digits) ;
TP = NormalizeDouble(Bid + TakeProfit*Point, Digits) ;
si ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<MA[limit-MA_Per-2])
{
//---- position ouverte BAY
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 5, SL, TP, "CCI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError() ;
Print( "OrderSend OP_BUY error # ", _GetLastError ) ;
Err=3 ;
retour(-1) ;
}
retour(0) ;
}
//---- si le CCI a croisé le MACD de haut en bas,
SL = NormalizeDouble(Ask + StopLoss*Point, Digits) ;
TP = NormalizeDouble(Ask - TakeProfit*Point, Digits) ;
si ((CCI[1]<MA[limite-MA_Per-1]) && (CCI[2]>MA[limite-MA_Per-2])
{
//---- ouvrir une position de vente
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 5, SL, TP, "CCI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError() ;
Print("OrderSend OP_SELL erreur # ", _GetLastError ) ;
Err=4 ;
retour(-1) ;
}
retour(0) ;
}
}
//+------------------------------------------------------------------+
//| Effectuer les calculs à chaque changement de prix |
//+------------------------------------------------------------------+
void EveryTick()
{
int i ;
si (MM==vrai)
{
si (AccountBalance()>(2*Dépôt)) LotA=2 ;
si (AccountBalance()>(3*Dépôt)) LotA=3 ;
si (AccountBalance()>(4*Dépôt)) LotA=4 ;
si (AccountBalance()>(5*Dépôt)) LotA=5 ;
si (AccountBalance()>(6*Dépôt)) LotA=6 ; si (AccountBalance()>(6*Dépôt) ; LotA=6 ;
si (AccountBalance()>(7*Dépôt)) LotA=7 ;
si (AccountBalance()>(8*Dépôt)) LotA=8 ;
si (AccountBalance()>(9*Dépôt)) LotA=9 ;
si (AccountBalance()>(10*Dépôt)) LotA=10 ;
si (AccountBalance()>(11*Dépôt)) LotA=11 ;
si (AccountBalance()>(12*Dépôt)) LotA=12 ;
si (AccountBalance()>(13*Dépôt)) LotA=13 ;
si (AccountBalance()>(14*Dépôt)) LotA=14 ;
si (AccountBalance()>(15*Dépôt)) LotA=15 ;
si (AccountBalance()>(16*Dépôt)) LotA=16 ;
si (AccountBalance()>(17*Dépôt)) LotA=17 ;
si (AccountBalance()>(18*Dépôt)) LotA=18 ;
si (AccountBalance()>(19*Dépôt)) LotA=19 ;
si (AccountBalance()>(20*Dépôt)) LotA=20 ;
}
int _GetLastError = 0, _OrdersTotal = OrdersTotal() ;
int z ;
double SL, TP ;
double MA[100], CCI[100], CCIclose[100], StandDevi[100] ;
int limit=ArraySize(CCI) ;
pour(i=0 ; i<limite ; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i) ;
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i) ;
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i) ;
}
switch(Err)
{
cas 1 :
for ( z=_OrdersTotal - 1 ; z >= 0 ; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError() ;
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError) ;
continuer ;
}
si ( OrderSymbol() != Symbol() ) continuez ;
si ( OrderMagicNumber() != _MagicNumber ) continuez ;
si ( OrderType() == OP_BUY )
{
si ((CCIclose[2]>300) && (CCIclose[1]<=300) || (CCI[1]<MA[limite-MA_Per-1]) && (CCI[2]>=MA[limite-MA_Per-2])
{
if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )
{
_GetLastError = GetLastError() ;
Print("CASE OrderClose error # , _GetLastError ) ;
Err=1 ;
retour(-1) ;
}
sinon Err=0 ;
}
}
}
pause ;
//=============================================================================
cas 2 :
for ( z=_OrdersTotal - 1 ; z >= 0 ; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError() ;
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError) ;
continuer ;
}
si ( OrderSymbol() != Symbol() ) continuez ;
si ( OrderMagicNumber() != _MagicNumber ) continuez ;
si ( OrderType() == OP_SELL )
{
si ((CCIclose[2]<-300) && (CCIclose[1]>=-300) || ((CCI[1]>MA[limite-MA_Per-1]) && (CCI[2]<=MA[limite-MA_Per-2]))
{
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red ))
{
_GetLastError = GetLastError() ;
Print("CASE OrderClose error # ", _GetLastError ) ;
Err=2 ;
retour(-1) ;
}
sinon Err=0 ;
}
}
}
pause ;
//==============================================================================
cas 3 :
SL = NormalizeDouble(Bid - StopLoss*Point, Digits) ;
TP = NormalizeDouble(Bid + TakeProfit*Point, Digits) ;
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 7, SL, TP, "AI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError() ;
Print( "CASE OrderSend OP_BUY error # ", _GetLastError ) ;
Err=3 ;
retour(-1) ;
}
sinon Err=0 ;
pause ;
//===================================================================================
cas 4 :
SL = NormalizeDouble(Ask + StopLoss*Point, Digits) ;
TP = NormalizeDouble(Ask - TakeProfit*Point, Digits) ;
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 7, SL, TP, "AI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError() ;
Print("CASE OrderSend OP_SELL erreur # ", _GetLastError ) ;
Err=4 ;
retour(-1) ;
}
sinon Err=0 ;
pause ;
}
}