Pensez-vous que des personnes dont la langue maternelle n'est pas l'anglais puissent comprendre votre histoire ? Je comprends mouton et berger M. John, mais l'histoire n'a aucun sens pour moi. (C'est peut-être moi... alors je suis désolé).
Pourriez-vous expliquer votre problème en "anglais international" en utilisant les définitions générales du trading/mql4 ?
Que signifie cette phrase ?
Pensez-vous que des personnes dont la langue maternelle n'est pas l'anglais puissent comprendre votre histoire ? Je comprends mouton et berger M. John, mais l'histoire n'a aucun sens pour moi. (C'est peut-être moi... alors je suis désolé).
Pourriez-vous expliquer votre problème en "anglais international" en utilisant les définitions générales du trading/mql4 ?
Que signifie cette phrase ?
SEULE BOUGIE - Comment ouvrir la position ? - cela devrait être le prochain sujet. Modérateur, qu'en pensez-vous ? Puis-je le faire ?
Nous mettons en œuvre le scénario sélectionné
Comment envoyer un ordre ?
int start() // start program { // We have some function here like "int CalculateCurrentOrders(string symbol)" and "double LotsOptimized()" // many different thing, suddenly! we have our "CheckOpen();" //-------------------------------- void CheckOpen() // void - because function return nothing { // start body int res; // we will use changeable "res" this is "int" value if( Bid==Close[1]+4*Point) // check conditions: Bid or Ask must be 4 Point above a BAR if no - nothing happen if Yes go below { // start body if res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,Open[1]+37*Point,0,"",MAGICMA,0,Red); // start "res" and "res" is sending message to platform to open position // what position is in "()" allways must be the same sequence symbol , op_*** , lot size , ...) return; // if "res" do it then retunrn too ... y ... "if". Because "if" is done return too CheckOpen(). Because "CheckOpen()" is done stop and end. } // stop body if } // stop body function "void CheckOpen()" //--------------------------------
Nous avons un ordre
Mais que dois-je faire pour ouvrir deux positions en une seule fonction?
Nous avons notre scénario CheckForOpenS1() dans ce scénario nous achetons deux fois si notre prix sera au bon endroit bien sûr.
//-------------------------------- void CheckOpen1() // define first function { int res; if( Bid==Close[1]+4*Point) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } } void CheckOpen2() // define second function { int res; if( Bid==Close[1]+8*Point) // change 8 Point ( 4 ==> 8 ) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } } // I DONT KNOW.............. //-------------------------------- / our scenario void CheckForOpenS1()= true; void CheckOpen1() void CheckOpen2() //-------------------------------- / OR LIKE THESE int res; if ( CheckForOpenS1() == true) { res= CheckOpen1() CheckOpen2(); }
SEULE BOUGIE - Comment ouvrir la position ? - cela devrait être le prochain sujet. Modérateur, qu'en pensez-vous ? Puis-je le faire ?
Nous mettons en œuvre le scénario choisi
Comment envoyer un ordre ?
Nous avons un ordre
Mais que dois-je faire pour ouvrir deux positions dans une seule fonction ?
Nous avons notre scénario CheckForOpenS1() dans ce scénario Nous achetons deux fois si notre prix est au bon endroit bien sûr.
Je ne comprends pas vraiment ce que vous demandez... vous n'êtes pas très clair... ou peut-être que c'est juste moi.
Ce code va vous poser des problèmes cependant....
if( Bid == Close[1] + 4 * Point)
Lisez ce fil de discussion :Can price != price ?
pourrait autrement
comment écrire un EA simple avec plusieurs scénarios d'événements
était une petite bougie - ouvrir les fonctions 1
était la bougie moyenne - ouvrir les fonctions 2
était une grande bougie - ouvrir les fonctions 3
switch () est approprié à ce stade, je pense
La fonction 1 ouvre 1 position et s'assure qu' elle se ferme
La 2 ouvre 2 positions en les gardant et se ferme
Les trois ouvrent 2 positions mais à un prix différent ....
chaque fois que nous avons une bougie, chaque fois il y a une autre fonction qui fait des choses différentes
Je sais que vous ne pouvez pas écrire pour moi, mais tout conseil....
Comme promis, j'ai regardé à nouveau, mais cela n'a toujours pas de sens pour moi, je suis désolé.
Cela ne fonctionnera jamais :
double bull() // check first candle -mabey is bull { double A=Open[1]; // we use double because euro/usd have point example 1.9865 double B=Close[1]; double C=B-A; return(C); // <-- C is probably never 1,2,3,4,5..... } // when we have bull catalog/ segregate him.. switch(bull()) // <-- the expression here is something like 0.00123. None of your case statements will be executed. { case 1 : break; // nothing happen case 2 : break; // nothing happen case 3 : break; // nothing happen case 4 : CheckForOpenS1(); break; // start CheckForOpenS1()- take it and go thrue with this.. we will see want is '...S1' case 5 : CheckForOpenS2(); CheckForOpenS3() break; // start CheckForOpenS2() and S3 .... }
Lisez ici comment utiliser le commutateur : https://docs.mql4.com/basis/operators/switch
Ce n'est pas clair du tout :
void CheckOpen2() // define second function { int res; if( Bid==Close[1]+8*Point) // change 8 Point ( 4 ==> 8 ) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } }
L'expression égale n'est peut-être pas souhaitée, mais que devrait-elle être ?
Si elle doit être lue comme <, alors elle enverra immédiatement un ordre de VENTE lorsqu'une nouvelle barre arrive (car le prix d'ouverture de la nouvelle barre est peut-être inférieur au prix de clôture de la barre précédente+8*Point).
Si la valeur est >, il attendra que le prix augmente un peu et enverra un ordre de VENTE. Je ne comprends pas vraiment votre stratégie, donc c'est peut-être voulu comme ça.
Je peux aussi imaginer que vous voulez dire :
if(Bid<Close[1]-8*Point)
Traitez-vous avec un courtier à 4 chiffres où 1 point est égal à 1 pip ? Sinon, le prix ne doit bouger que de 0,8 pips, ce qui n'est probablement pas ce que vous voulez (et le spread pourrait également le rendre confus).
Je pense que vous devriez revoir votre code et le corriger là où vous le pouvez. N'hésitez pas à poser d'autres questions si vous en avez de spécifiques. Sachez que votre stratégie peut fonctionner tout à fait autrement, uniquement parce qu'un codeur a mal compris ce que vous avez voulu dire.
Ma stratégie est la suivante
si la bougie apparaît BULL de 4 à 5 points , après la bougie (jamais, dans n'importe quelles conditions) préparez-vous à envoyer deux ordres d' achat (si le prix atteint notre niveau requis pour acheter un, et comment atteindre l' achat2)
si la bougie apparaît BULL de 6 à 7 points, après la bougie (toujours, dans n'importe quelles conditions) préparez-vous à envoyer troisordres d'achat ( si leprix atteint notre niveau requis pour acheter un, et comment atteindre l ' achat2et 3).
J'ai une petite erreur quelque part dans le Bid ou Ask pourquoi EA ne fonctionne pas ... (Je ne peux pas trouver cette erreur mais normalement EA fonctionne très bien pour ce que j'ai écrit ... achète et ferme) mais il montre mon plan technique.
JE CORRIGE, IL FONCTIONNE MAINTENANT
Comme vous regardez en bas , il devient très encombré et parfois remplace l' EA Bull4 scénarios et le scénario s'ouvre Bull6 Bull4 et comme je l' ai réalisé il change soudainement d' avis et de terminer le Bull6 Bull6
Peut-on le simplifier ?
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #define MAGICMA 20050610 //+------------------------------------------------------------------+ //| Calculate open positions HOW MEANY OF THIS | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; } } //---- return orders volume return(buys); } //+------------------------------------------------------------------+ //| Calculate candle | //+------------------------------------------------------------------+ bool BULL4() { if(Close[1]-Open[1]>=4*Point && Close[1]-Open[1]<=5*Point) return(true); } bool BULL6() { if(Close[1]-Open[1]>=6*Point && Close[1]-Open[1]<=7*Point) return(true); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpenBULL41() { int res; if(Bid==Close[1]+3*Point) { res=OrderSend(Symbol(),OP_BUY,0.41,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue); return; } } void CheckForOpenBULL42() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.42,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue); return; } } void CheckForOpenBULL61() { int res; if(Bid==Close[1]+4*Point) { res=OrderSend(Symbol(),OP_BUY,0.61,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } void CheckForOpenBULL62() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.62,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } void CheckForOpenBULL63() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.63,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForCloseBULL() { RefreshRates(); if(OrderOpenPrice()+4*Point< Ask) for (int i = OrdersTotal(); i >= 0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol()) { bool ticket = true; if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid,1,Black); } } } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { if(BULL4()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL41(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL42(); else CheckForCloseBULL(); //---// if(BULL6()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL61(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL62(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==2) CheckForOpenBULL63(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==3) CheckForOpenBULL63(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==4) CheckForCloseBULL(); } //+------------------------------------------------------------------+
Ma stratégie est la suivante
si la bougie apparaît BYK de 4 à 5, après la bougie (jamais, dans toutes les conditions) se préparer à envoyer deux ordres d'achat de données (si le prix atteint notre niveau requis pour acheter un, et comment atteindre zkup 2)
si la bougie apparaît BYK de 6 à 7, après la bougie (jamais, dans n'importe quelles conditions) préparez-vous à envoyer trois ordres d'achat ( si leprix atteint notre niveau requis pour acheter un, et comment atteindre zkup 2 et 3)
J'ai une petite erreur quelque part dans le Bid ou Ask pourquoi EA ne fonctionne pas ... (Je ne peux pas trouver cette erreur mais normalement EA fonctionne très bien pour ce que j'ai écrit ... achète et ferme) mais il montre mon plan technique.
Comme vous regardez en bas , il devient très encombré et parfois remplace l' EA Bull4 scénarios et le scénario ouvre Bull6 Bull4 et comme je l' ai réalisé , il change soudainement d' avis et de terminer le Bull6 Bull6.
Peut-on le simplifier ?
BYK ? ?
C'est faux...
for (int i = OrdersTotal(); i >= 0;i--)
... les positions commencent à 0, donc vous devez compter à partir de OrdersTotal() - 1.
Vous faites cela....
void CheckForCloseBull() // close ALL AT ONCE buy of course { RefreshRates(); if( OrderOpenPrice() > Ask+6*Point)
. . . vous obtenez leOrderOpenPrice() mais pour quel ordre ? vous aurez plusieurs ordres ouverts ... .
Vous utilisez la variableres pour contenir la valeur de retour de vos appels OrderSend() ... et qu'en faites-vous ? rien, pourquoi ?
Que sont les valeurs de retour des fonctions ? Comment les utiliser ?
Très bonne réponse RaptorUK
1. problème de résolution
J'étudie la résolution de la moyenne mobile EA il n' y a que 3 fois, tous en fonction du temps, après pour elle n'existe pas.
La première fois il est utilisé pour l'information "hello we will be use res"
une deuxième fois pour envoyer la commande. OrderSend renvoie le nombre de commandes, qui est notre res = 343321, en dehors de la fonction 'void CheckForOpen () " res n'existe pas.
mais...
Je pense que si le "void CheckForOpen ()" Observer la vérité de cette commande OrderSelect en quelque sorte apporter ce nombre sauf "void CheckForOpen ()" Je vais essayer ....
2. Problème de OrderOpenPrice()
Vous avez tout à fait raison, mais cette syntaxe fonctionne étonnamment bien :) Je vais essayer de faire quelque chose à cet endroit.
3. OrdersTotal() - 1 vous aveztout à fait raison,
4. BYK (POLOGNE)= BULL traducteur ont problème
Pour ceux qui ne comprennent toujours pas mon EA, écrivez une histoire: D hehehehe
Toutes les étapes que nous faisons, sont les fonctions. Je suis en train d' écrire sur un ordinateur est une fonction.Je regarde une émission de télévisionest la deuxième fonction, etc.
Maintenant, passons à la cuisine ...
Nous avons un livre de cuisine, ouvrir la table des matières et lire les points séquentiels
Premièrement, comment faire des côtelettes de porc - mettre la viande dans un bol, ajouter du sel, du poivre, éplucher les pommes de terre.
Sur la gauche de l'événement - les caractéristiques de droite , et un peu de thème - pas moins facile !
Après avoir lu comment faire des côtelettes de porccommencer à le faire, à faire des choses. Steak obtient 25 minutes, et comme je l'ai commencé à avoir une fin.
Il a été cinq minutes M5 ( cinq minutes plus tard)nous commençons à lire le point suivant un livre de cuisine.
Deuxièmement Comment faire une salade - Éplucher les carottes, éplucher les oignons, et d'autres conneries.
Et là, la magie opère, car elle a créé le double, l'érable (deuxième personne). On fait ça sur les côtes de porc et la salade en même temps.On commence àavoir dans la cuisine deux personnes en une.
Plus vous lisezde points, plus les personnes dans la cuisine apparaissent. Les personnes dans la cuisine disparaîtront après avoir terminé leurs tâches et laver la vaisselle.
L'événement est bougies - dispose de diverses options pour l' achat et la vente ou la fermeture.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
BOUGEE UNIQUE - Comment cataloguer ou séparer les bougies ?
MERCI DE ME CORRIGER !
Nous avons des bougies haussières et baissières, je veux les isoler.
C'estcomme un berger. Le berger a une ferme, une ferme et des moutons.
Quand c'est la saison de raser les moutons, le berger M. JOHN va à la ferme, attrape les moutons et...
Le premier mouton attrapé est trop petit pour être rasé - John le laisse partir.
Le prochain mouton est bon, John prend des ciseaux et le mouton est nu.
Lemouton suivant est bon et a une grosse laine - John prend de GROS ciseaux et le mouton est nu.
Le mouton suivant est un Bélier - John prend un couteau et le Bélier est eunuque à ce moment-là.
Je veux faire la même chose avec les bougies et les barres.
Notre bougie va Bar[0].... nous attendons..... elle va, nous attendons.... 15 minutes (M15) et voilà ! ... qu'est-ce que c'est ? vérifier !
Si j'ai Bullisch Candle et Candle (prix d'ouverture [1]- prix de fermeture [1]) ont 2 point trop petit - laisser aller, nous ne faisons rien
Si j'ai Bullisch Candle et Candle (prix d'ouverture [1]- prix de fermeture [1]) ont 4 points - alors démarrer le programme
CheckForOpenS1() ; lancer la fonction d' achat si notre prix est + 4 Point au-dessus de notre bougie (scénario1)
Si j'ai une bougie Bullisch et que la bougie (prix d'ouverture [1]- prix de fermeture [1]) a 5 points - c'est une très grosse bougie - alors lancez le programme.
CheckForOpenS2() ; lancement de la fonction d'achat si le prix est supérieur de 14 points à notre bougie (scénario 2).
Je veux que cette sorcière à chaque bougie, je veux démarrer le programme BUY si j'ai une grande bougie, si j'ai une trop petite bougie je vais attendre la prochaine.
Donc... c'est correct mais j'ai une idée :)
S'il vous plaît, n'écrivez pas ce qui n'est pas nécessaire.