[Je vais écrire un conseiller GRATUITEMENT. - page 13

 

Bonjour !

Quelqu'un peut-il savoir comment prescrire correctement ce qui suit dans le code :

Il existe un indicateur MACD Histogramm WIS. L'histogramme est calculé dans son code et ses barres colorées, en fonction de la direction de la ligne et du filtre macd dans différentes couleurs.

int start()
{
int limit,i ;
int counted_bars = IndicatorCounted() ;

if(counted_bars > 0) counted_bars-- ;
limit = iBars(NULL,0) - counted_bars ;

BufferResize(Filter) ;
BufferResize(Histogram) ;

for(i = 0 ; i <= limite ; i++)
MACD[i] = iMA(NULL, 0, FastMA, 0, MAMethod, MAAppliedPrice, i) - iMA(NULL, 0, SlowMA, 0, MAMethod, MAAppliedPrice, i) ;
for(i = 0 ; i <= limite ; i++)
Signal[i] = iMAOnArray(MACD, iBars(NULL,0), SignalMA, 0, MAMethod, i) ;
for(i = 0 ; i <= limite ; i++)
Histogram[i] = MACD[i] - Signal[i] ;
CalcFilter(Line, limit) ;
for(i = limit ; i >= 0 ; i--)
{
if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0 ;
HistogramSell[i] = 0.0 ;
HistogramBuy[i] = Histogram[i] ;
}
if(Histogram[i] < Histogram[i+1] && Filter[i] < Filter[i+1])
{
HistogramWaitClose[i] = 0.0 ;
HistogramSell[i] = Histogram[i] ;
HistogramBuy[i] = 0.0 ;
}
if((Histogram[i] >= Histogram[i+1] && Filter[i] <= Filter[i+1]) || (Histogram[i] <= Histogram[i+1] && Filter[i] >= Filter[i+1])
{
HistogramWaitClose[i] = Histogram[i] ;
HistogramSell[i] = 0.0 ;
HistogramBuy[i] = 0.0 ;
}
}

return(0) ;
}

J'essaie de prescrire dans le Conseiller Expert, une des conditions, l'ouverture des positions à la hausse si :

if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0 ;
HistogramSell[i] = 0.0 ;
HistogramBuy[i] = Histogram[i] ;

mais j'ai besoin de comparer seulement 2 barres fermées, c'est à dire la première et la deuxième (zéro ne se touchent pas), pas toutes (i-bars), c'est à dire qu'il faut comparer la première et la deuxième barre, et si la barre du graphique de la première barre est supérieure à la deuxième et respecte les filtres et autres conditions de l'EA, acheter, pour les ventes au contraire .... comment le prescrire correctement, s'il vous plaît conseillez, une théière autodidacte)

Merci

 
kvg31:

J'écrirai un conseiller de n'importe quelle complexité. L'essentiel est d'avoir une bonne idée. Comment vous l'utiliserez Je m'en fiche : vendra - Je m'en fiche (je ne demanderai pas d'argent).

P. S. Si vous avez besoin d'un indicateur, vous devez m'indiquer la stratégie dans laquelle vous souhaitez l'utiliser.


Je ne connais rien à la programmation et je suis un débutant.

Peut-être que ce conseiller a déjà, en général, si :

Selon le principe de "l'oscillation", deux croisements d'EMA ferment la précédente et en ouvrent une nouvelle, les EMA doivent être variables.

Je pense que sur H1, H4 est tout à fait pertinent.

 
riabusha:


Peut-être qu'un tel EA existe déjà, voici comment il fonctionne :

Selon le principe du "rollover" : le croisement de deux EMA ferme la précédente et en ouvre une nouvelle, les EMA doivent être variables.

Je pense que sur H1, H4 est tout à fait pertinent.

Oui, il s'agit de la moyenne mobile standard incluse dans le package MT4. Mais ce n'est pas l'EMA, mais la SMA (Simple Moving Average), ce qui ne change rien à l'affaire. Bien sûr, nous pouvons changer le type de MA dans l'EA ou même le déplacer vers des paramètres externes, mais cela ne deviendra pas un graal.
 

Bonjour.

Veuillez créer un conseiller expert simple qui ouvre un ordre pour un certain nombre de points et si le prix les dépasse et ferme du côté positif, l'ordre se ferme et s'ouvre à nouveau du côté positif. S'il est en position négative, il s'inverse en position négative.

Paramètres à définir - Taille du lot et nombre de points à passer.

Merci d'avance.

Salutations Dimitriy.

 
kvg31:

J'écrirai un conseiller de n'importe quelle complexité. L'essentiel est d'avoir une bonne idée. Comment vous l'utiliserez Je m'en fiche : vendra - Je m'en fiche (je ne demanderai pas d'argent).

P. S. Si vous avez besoin d'un indicateur, vous devez me parler de la stratégie dans laquelle vous voulez l'utiliser.


Bonjour chers développeurs. Veuillez m'aider à créer un indicateur basé sur l'indicateur SSL_fast_sBar_mtf.

Je veux qu'il dessine deux "règles", une avec la valeur "Lb" plus grande et une autre avec une valeur plus petite (ou TIME FREAM plus grande et plus petite). Si sur la barre les couleurs

si les deux "règles" sont les mêmes (et sur la précédente, elles étaient différentes), alors au début de la prochaine barre, vous devez donner le signal d'ouverture (placez la flèche).

Les flèches doivent être dessinées à l'aide de tampons indicateurs, et non d'objets graphiques. Les données des deux "règles" sont requises dans la fenêtre des paramètres externes.

(pour une sélection plus poussée de leurs paramètres).

 

http://savepic.ru/1965498.gif

Je ne sais pas comment envoyer un lien vers l'indicateur. Il se trouve dans la bibliothèque de MQL4.com.

 

Bonjour !

Je demande beaucoup à faire un expert (enfin je ne suis pas un programmeur) :((.

Paramètres techniques :
1) Nous travaillons sur un graphique en chandelier de 4 heures en croisant deux lignes deMoyenne Mobile : l'une(Rouge) période 18, méthode Exponentielle, aux prix declôture, l'autre(Jaune) période 8, méthode également Exponentielle, aux prix de clôture.

2) Taille de la transaction : 1 lot

3) Nous travaillons de lignes de croisement à lignes de croisement. Dès que la lignejaune croise la ligne rouge(Red) dans le sens de la hausse (nord), ordre d'achat, le deuxième croisement de lignes, la ligne jaune croise en conséquence la rouge de haut en bas - fixation de l'ordre ouvert, avec ouverture simultanée d'un nouvel ordre de vente, et ainsi de suite.

4) Un stop loss de 35 points est fixé pour toutes les transactions.

Le graphique en 4 heures vous permet d'éviter les mouvements inutiles, contrairement au graphique horaire, qui fonctionne à coup sûr.

Si l'on ne regarde que les paires de devises, l'idée se justifie (pas de trades à perte, autour de zéro au pire), bien sûr, il faut tenir compte de la tendance et utiliser l'Expert Advisor en la regardant. Par exemple, pour l'EUR/USD, si le 1er septembre nous achetons +139 points avant de franchir +115 points, puis nous achetons à nouveau avant de franchir +1184 points le 12 octobre. Prenez au mois d'août la même image +368 points de vente, puis achat vente au même niveau sans aucune perte et +181 points de baisse sur vente de bénéfices. Plus loin, par exemple l'or GOLD(la commission est de 70 points, mais le point est de 2,5 dollars par lot) et donc à partir du 31 août acheter +1789 points, à la fois vendre +547 points, acheter +4557 points, vendre zéro, +4328 acheter, vendre zéro et jusqu'à ce week-end encore +3636 points.

Salutations, Yuriy

 
Bonjour, les gars, je n'arrive pas à comprendre mql4(( Je veux écrire un petit EA basé sur deux EMA (moyennes mobiles) qui donnent un bip après le croisement ? Pouvez-vous me dire quelque chose sur ce programme ? Merci d'avance ! !!
 
silmin85:
Bonjour, les gars, je n'arrive pas à comprendre mql4(( Je veux écrire un petit EA basé sur deux EMA (moyennes mobiles) qui donnent un bip après le croisement ? Pouvez-vous me parler de ce programme ? Merci d'avance ! !!
Prenez la moyenne mobile standard incluse dans le paquet comme base et expérimentez-la. Vous pouvez remplacer MA par EMA.
 
goldtrader:
Prenez la moyenne mobile standard fournie comme base et expérimentez-la. Vous pouvez remplacer la MA par l'EMA.
Le problème est que je veux un simple EA qui émet un bip chaque fois qu'il croise deux EMA ! MetaTradere dispose d'une moyenne mobile.mq4 dans les experts

Voici la description complète :

//+------------------------------------------------------------------+

//| Moving Average.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp.
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA 20050610

extern double Lots = 0.1 ;
extern double MaximumRisk = 0.02 ;
extern double DecreaseFactor = 3 ;
extern double MovingPeriod = 12 ;
extern double MovingShift = 6 ;
//+------------------------------------------------------------------+
//| Calculer les positions ouvertes |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0 ;
//----
for(int i=0;i<OrdersTotal();i++)
{
si(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
si(OrderType()==OP_BUY) achète++ ;
si(OrderType()==OP_SELL) vend++ ;
}
}
//---- volume des commandes de retour
if(buys>0) return(buys) ;
sinon retour(-vendues) ;
}
//+------------------------------------------------------------------+
//| Calculer la taille optimale du lot |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots ;
int orders=HistoryTotal() ; // total des commandes historiques
int pertes=0 ; // nombre d'ordres de pertes sans pause
//---- sélectionner la taille du lot
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1) ;
//---- calcule le nombre d'ordres de pertes sans rupture.
si(Facteur de diminution>0)
{
for(int i=ordres-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Erreur dans l'historique !") ; break ; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continuer ;
//----
si(OrderProfit()>0) break ;
si(OrderProfit()<0) pertes++ ;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1) ;
}
//---- retourner la taille du lot
si(lot<0.1) lot=0.1 ;
retour(lot) ;
}
//+------------------------------------------------------------------+
//| Vérifier les conditions d'un ordre ouvert |
//+------------------------------------------------------------------+
void CheckForOpen()
{
double ma ;
int res ;
//---- ne négocient que pour les premiers tiks du nouveau bar.
si(Volume[0]>1) retour ;
//---- obtenir la moyenne mobile
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0) ;
//---- conditions de vente
if(Open[1]>ma && Close[1]<ma)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,",MAGICMA,0,Red) ;
retour ;
}
//---- conditions d'achat
si(Open[1]<ma && Close[1]>ma)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,",MAGICMA,0,Blue) ;
retour ;
}
//----
}
//+------------------------------------------------------------------+
//| Vérifier les conditions d'ordre de fermeture |
//+------------------------------------------------------------------+
void CheckForClose()
{
double ma ;
//---- ne négocient que pour les premiers tiks du nouveau bar.
si(Volume[0]>1) retour ;
//---- obtenir la moyenne mobile
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0) ;
//----
for(int i=0;i<OrdersTotal();i++)
{
si(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continuer ;
//---- type d'ordre de contrôle
si(OrderType()==OP_BUY)
{
if(Open[1]>ma && Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White) ;
pause ;
}
si(OrderType()==OP_SELL)
{
if(Open[1]<ma && Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White) ;
pause ;
}
}
//----
}
//+------------------------------------------------------------------+
//| Démarrer la fonction |
//+------------------------------------------------------------------+
void start()
{
//---- vérifier l'historique et le commerce
si(Bars<100 || IsTradeAllowed()==false) return ;
//---- calculer les ordres ouverts par le symbole actuel
si(CalculateCurrentOrders(Symbol())==0) CheckForOpen() ;
sinon CheckForClose() ;
//----
}

//+------------------------------------------------------------------+

Comment puis-je le changer ici pour que ça marche pour moi, je ne comprends pas ! Je veux juste 50EMA et 100EMA et un bip à chaque croisement ! !!