[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

 
7777877:
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.

 
PapaYozh:

Non
? ???... 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 montrerait clairement à quoi sert la fonction WindowHandle.
 
drimara: Si l'ADX est spécifié avec des limites de 0 à 100, il y aura très peu de croisements évidents entre l'ADX et le RSI.

Est-il possible de définir la valeur du RSI lorsqu'il est mis à l'échelle par ADX.

Et si vous le déplacez ensuite de gauche à droite, les points de croisement commenceront à s'écarter
 
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)
 
sss2019:
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)
Afficher le code + les paramètres d'entrée dans l'indicateur
 
7777877:
? ???... 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 aux gourous de la programmation de me répondre à ma question : est-il réaliste de faire ce conseiller ?
 
stater:
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 ;

}

}