Comment coder ? - page 164

 
MiniMe:
Merci Ralph, mais il me manquerait le swap, et je veux inclure le profit/la perte du swap dans la décision de clôture des ordres.

Mais la première boucle accumule à la fois le profit et le swap, n'est-ce pas ?

Je pensais que le chiffre de l'équité est celui à comparer avec ce que 5 pips signifieraient pour les lots ouverts.... et vous n'avez donc pas besoin de calculer réellement le prix d'équilibre.

 

Bonjour Ralph

J'ai 3 variables

OrdLots ; en lots et représente les lots ouverts mais ceci ne tiendra pas compte du swap.

Equity ; il s'agit de la perte totale de profit et celle-ci inclura le swap.

MinPro ; c'est mon take profit qui est de 5 pips + le seuil de rentabilité.

Je ne peux pas utiliser OrdLots pour trouver le profit/la perte en pips car cela ne tiendrait pas compte du swap.

Je ne peux pas utiliser Equity pour trouver le profit/la perte en pips car pour cela, j'ai besoin de savoir combien de lots sont utilisés mais mon calcul pour les lots ignore le swap.

D'une manière ou d'une autre, je dois utiliser une fonction de OrdLots et d'Equity pour savoir combien de pips sont ouverts.

Il pourrait y avoir quelque chose de prêt dans MT4 qui relie le solde du compte ou les fonds propres du compte, mais je n'ai rien trouvé.

La solution que vous avez proposée avec les remerciements trouvera le profit/la perte en pips sans tenir compte du swap, mais j'ai déjà mis une fonction pour cela ... Je veux sortir à 5 pips au-dessus du breakeven avec le swap.

 

Comparer les temps et la boucle do

Bonjour tout le monde.

Je suis très inexpérimenté avec le langage Mql4. Je veux comparer le temps de l'ordre ouvert avec une variable Int et si cela dépasse un certain temps et que les ordres sont toujours ouverts, je veux augmenter le nombre d'ordres ouverts autorisés afin d'essayer d'atteindre une situation de Breakeven ou peut-être une situation de profit et ensuite fermer tous les ordres ouverts en même temps et remettre le nombre maximum d'ordres à son maximum autorisé à l'origine. Quelqu'un peut-il m'aider ou me montrer un code sur un autre post qui fait déjà quelque chose comme ça.

J'utilise ce code mais il semble qu'il ne fonctionne pas.

// Si les ordres sont ouverts pendant une longue période, fermez-les et essayez de rentrer dans vos frais.

void TimeProtection()

{

int totalorders = OrdersTotal() ;

for(int i=totalorders-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS) ;

si ( OrderSymbol()==Symbol() )

{

prTime = OrderOpenTime() ;

prTime = prTime * CallTime ;

si (prTime >= TimeCurrent())

{

MaxAllowable_Trades = MaxAllowable_Trades + 3 ;

flag = 1 ;

pause ;

}

}

}

retour ;

}

J'aimerais vraiment que vous m'aidiez sur ce point.

Merci

 
MiniMe:
Bonjour Ralph

J'ai 3 variables

OrdLots ; en lots et représente les lots ouverts mais ceci ne tiendra pas compte du swap.

Equity ; c'est la perte totale de profit et celle-ci inclura le swap.

MinPro ; c'est mon take profit qui est de 5 pips + le seuil de rentabilité.

Je ne peux pas utiliser OrdLots pour trouver le profit/la perte en pips car cela ne tiendrait pas compte du swap.

Je ne peux pas utiliser Equity pour trouver le profit/la perte en pips car pour cela, j'ai besoin de savoir combien de lots sont utilisés mais mon calcul pour les lots ignore le swap.

D'une manière ou d'une autre, je dois utiliser une fonction de OrdLots et d'Equity pour savoir combien de pips sont ouverts.

Il y a peut-être quelque chose de prêt dans MT4 qui concerne le solde du compte ou les fonds propres du compte, mais je n'ai rien trouvé.

La solution que vous avez proposée avec les remerciements trouvera le profit/la perte en pips sans considérer le swap, mais j'ai déjà mis une fonction pour cela.... Je veux sortir à 5 pips au-dessus du breakeven avec le swap.

Ah... peut-être que je comprends... Donc, si vous accumulez également le profit sans swap dans EquityNoSwap dans la première boucle, alors vous pourriez utiliser cela plutôt que Equity dans mon instruction "if". ( ?) Parce qu'alors le test serait "y a-t-il 5 pips de profit par rapport au prix breakeven+swap ?" ce qui est en fait la même chose que "y a-t-il 5 pips de profit en ignorant le swap ?". (ou peut-être que je ne comprends toujours pas)

Fondamentalement, "profits+swap" est le "breakeven" relatif, et donc "profits" est le "breakeven+swap" relatif, et "profits" est distribué sur "OrdLots". En somme, vous n'avez toujours pas besoin de déterminer un prix réel en pips pour le "seuil de rentabilité".

 

Meilleure idée de codage EA

Je suis en train d'apprendre à coder pour l'indicateur ci-joint, mais cela n'a pas fonctionné, quelqu'un peut-il m'aider ? C'est un indicateur très fiable et si quelqu'un pouvait faire un EA pour lui, c'est presque le Saint Graal.

Le principe de base est le suivant :

1.ouvrir une position de vente lorsque la flèche rouge apparaît,

2.ouvrir une position d'achat lorsque la flèche blanche apparaît et fermer automatiquement toutes les positions de vente.

3.s'applique à n'importe quelle période de temps.

4.pas de stop loss,

5.ajouter la fonction d'ordre.

J'attends votre réponse avec impatience !

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

//| IINWMARROWS.mq4 |

//| Basé sur EMA_CROSS.mq4 |

//| Copyright ?2006, MetaQuotes Software Corp. |

//| Logiciel de trading Forex : Plateforme de trading Forex MetaTrader 4 | //|

| //| Dernière petite modification par Iin Zulkarnain |

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

#property copyright "Copyright ?2006, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

//----

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 Red

#property indicator_width1 2

#property indicator_width2 2

//----

double CrossUp[] ;

double CrossDown[] ;

extern int FasterMode=3 ; //0=sma, 1=ema, 2=smma, 3=lwma

extern int FasterMA= 3 ;

extern int SlowerMode=3 ; //0=sma, 1=ema, 2=smma, 3=lwma

extern int SlowerMA= 3 ;

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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- indicateurs

SetIndexStyle(0, DRAW_ARROW, EMPTY) ;

SetIndexArrow(0, 233) ;

SetIndexBuffer(0, CrossUp) ;

SetIndexStyle(1, DRAW_ARROW, EMPTY) ;

SetIndexArrow(1, 234) ;

SetIndexBuffer(1, CrossDown) ;

//----

return(0) ;

}

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

//| Fonction personnalisée de désinitialisation de l'indicateur |

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

int deinit()

{

//----

//----

return(0) ;

}

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

//| Fonction d'itération de l'indicateur personnalisée |

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

int start()

{

int limite, i, compteur ;

double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter ;

double Range, AvgRange ;

int counted_bars=IndicatorCounted() ;

//---- vérifier les erreurs éventuelles

if(counted_bars<0) return(-1) ;

//---- dernière barre comptée sera recomptée

if(counted_bars>0) counted_bars-- ;

//----

limit=Bars-counted_bars ;

for(i=0 ; i<=limit ; i++)

{

counter=i ;

Gamme=0 ;

AvgRange=0 ;

for(counter=i ;counter<=i+9;counter++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]) ;

}

Range=AvgRange/10 ;

fasterMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i) ;

fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1) ;

fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1) ;

//----

slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i) ;

slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1) ;

slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1) ;

if ((fasterMAnow > slowerMAnow) && (fasterMAprevious slowerMAafter))

{

CrossUp=Low - Range*0.5 ;

}

else if ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter))

{

CrossDown=High + Range*0.5 ;

}

}

return(0) ;

}

//+------------------------------------------------------------------+ce fil pour apprendre à coder correctement, j'apprends à coder pour

 

Aux grands et courageux codeurs

quelqu'un peut-il ajouter des positions maximales pour cet EA

ou le laisser fonctionner sur une seule position ?

Merci d'avance

Dossiers :
reverse_1.mq4  16 kb
 

Poste supprimé

 

Question hors sujet

İstil possible de renifler les données d'un programme non ouvert ?

Ils ont un langage de programmation pauvre (similaire à Metastock mais plus pauvre, aucune fonction ''précédente'' autorisée).Ils n'autorisent que leurs propres indicateurs et ils ont le monopole des données (par la loi).İt n'est pas possible d'écrire une extension DLL pour faire fonctionner mes indicateurs en temps réel.J'ai entendu quelque chose comme ''port listening function in excell'' mais je n'ai aucune idée de ce que c'est.

La réponse de tous les programmeurs est très appréciée.

 

Ordre ouvert pour une autre paire

Bonjour,

Existe-t-il un moyen d'ouvrir un ordre pour une autre paire de devises?

Par exemple, l'EA fonctionne dans un graphique EURUSD, mais je veux ouvrir un ordre pour USDJPY.

Est-ce possible ?

Merci d'avance

 

OrderSend("USDJPY",OP_BUY,0.1,MarketInfo("USDJPY",MODE_ASK),10,0,0, "Com",0,0,CLR_NONE) ;

Raison: