Aide au codage - page 22

 

merci pour votre réponse Robert

un tel tableau de bord serait parfait, mais je n'en ai pas trouvé avec bb squeeze, et je n'ai pas la moindre idée de comment changer les tableaux de bord existants pour les détecter sur bb squeeze

ma propre idée était très simple, elle ressemblait à ceci :

int Current;

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

//| expert start function |

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

int start() {

int USDCHF, GBPUSD, EURUSD, AUDUSD;

double upperBB_USDCHF = iBands("USDCHF", 0, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, Current + 0);

double upperKC_USDCHF = iCustom("USDCHF", 0, "Keltner Channels", 20, 0, Current + 0);

double lowerBB_USDCHF = iBands("USDCHF", 0, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, Current + 0);

double lowerKC_USDCHF = iCustom("USDCHF", 0, "Keltner Channels", 20, 2, Current + 0);

if(upperBB_USDCHFlowerKC_USDCHF)

Comment(": BollingerSqueeze for USDCHF");

return(0);

}

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

c'est juste pour plusieurs paires différentes, mais comme je l'ai dit, le 'Commentaire' se rafraîchit tout le temps.

edit : ok je l'ai corrigé, plus besoin d'aide.

 
crexsking:
Bonjour Mladen et tous les autres membres,

Je négocie des modèles de graphiques avec "big candle move" (Open[0]-Close[0] > 32 pips ou vice versa) et je négocie l'eurusd (H1 sur FXOpen <--- taille de bougie et modèle les plus précis)...

Donc, il n'y avait absolument aucun indicateur. Juste une philosophie de trading.

j'essaie de coder un EA sur cette logique mais je pense qu'il manque quelque chose... aidez-moi ! !!

Qu'est-ce que je veux dire par "quelque chose qui manque" ?

-Je veux qu'avant que la "grande bougie" se produise ... le système a calculé les 4 dernières bougies < 20pips (ouverture - fermeture ou vice versa) pour chaque bougie.

Alors que... ce qui s'est passé est que mon codage mql4 ne lit pas les 4 dernières bougies avant la grande bougie... je suis tellement confus....

Ce qui devrait se passer est :

1. Heure de la grande bougie :-

- 3pm,4pm,5pm(London Open) ..n.. 8pm,9pm,10pm(US Open) <---- tous les temps donnés comme je malaysian, donc switch ur computer to GMT 8.00++

2. Grande taille de bougie :-

- 32 pips n au-dessus ( si sideway avant sont 20 pips n en dessous )

- 42 pips au dessus ( si le sideway avant est de 20 pips au dessus )

3. Marché Sideway :-

- inférieur à 50 pips pour les 4 dernières heures minimum et doit avoir une couleur différente.

4. Marché nul ou dangereux (annulation du marché) : <--- pas de transaction si cette condition de marché se produit.

1. Sideway avant l'ouverture de Londres B,B,B,B à la hausse ou S,S,S,S à la baisse. <--- B,B,B,B = Bougies Acheter, acheter, acheter, acheter... en permanence.

2. Grande bougie clôture au maximum de la zon journalière. <---- 75 pips minimum haut bas.

3. Big candle se produisent à 10 pm. <----- GMT 8++ ou heure de la Malaisie.

4. Big candle trop grande et plus de 80 pips.

5. Il y a des bougies de plus de 50 pips avant l'ouverture de Londres.

6. La forme d'un marché à la hausse dans la session de Tokyo et grande bougie à la hausse à l'ouverture de Londres (vice versa pour la baisse).

Les problèmes de codage ci-joint :-

extern double trigger = 32;

extern double sideway = 20;

extern int hour1 = 6;

extern int hour2 = 7;

extern int hour3 = 8;

extern int hour4 = 9;

extern int hourCB = 10;

extern int hourTRADE = 11;

extern int TradeTimeStart = 0;

extern int TradeTimeEnd = 23;

//---Variables

double currentPrice = 0.00000;

static datetime barStart;

string openTrades = "none";

int ticket;

int i = 0;

double lotSize;

double CBB = 0;

double CBS = 0;

double CBBT;

double CBST;

double PreviousCBB;

double PreviousCBS;

double CS1B;

double CS2B;

double CS3B;

double CS4B;

double CS5B;

double CS6B;

double CS1S;

double CS2S;

double CS3S;

double CS4S;

double CS5S;

double CS6S;

double CS1BT;

double CS2BT;

double CS3BT;

double CS4BT;

double CS1ST;

double CS2ST;

double CS3ST;

double CS4ST;

double PreviousCS1B;

double PreviousCS2B;

double PreviousCS3B;

double PreviousCS4B;

double PreviousCS1S;

double PreviousCS2S;

double PreviousCS3S;

double PreviousCS4S;

double GroupSW1B;

double GroupSW2B;

double GroupSW3B;

double GroupSW4B;

double GroupSW5B;

double GroupSW6B;

double GroupSW1S;

double GroupSW2S;

double GroupSW3S;

double GroupSW4S;

double GroupSW5S;

double GroupSW6S;

string permit = "suspended";

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start(){

CBB=(Close[1]-Open[1])/Point;

CBS=(Open[1]-Close[1])/Point;

CBBT=(hourCB==Hour());

CBST=(hourCB==Hour());

PreviousCBB = (CBB == CBBT);

PreviousCBS = (CBS == CBST);

CS1B=(Close[7]-Open[7])/Point;

CS2B=(Close[6]-Open[6])/Point;

CS3B=(Close[5]-Open[5])/Point;

CS4B=(Close[4]-Open[4])/Point;

CS5B=(Close[3]-Open[3])/Point;

CS6B=(Close[2]-Open[2])/Point;

CS1S=(Open[7]-Close[7])/Point;

CS2S=(Open[6]-Close[6])/Point;

CS3S=(Open[5]-Close[5])/Point;

CS4S=(Open[4]-Close[4])/Point;

CS5S=(Open[3]-Close[3])/Point;

CS6S=(Open[2]-Close[2])/Point;

CS1BT=(hour1==Hour());

CS2BT=(hour2==Hour());

CS3BT=(hour3==Hour());

CS4BT=(hour4==Hour());

CS1ST=(hour1==Hour());

CS2ST=(hour2==Hour());

CS3ST=(hour3==Hour());

CS4ST=(hour4==Hour());

PreviousCS1B = (CS1B == CS1BT);

PreviousCS2B = (CS2B == CS2BT);

PreviousCS3B = (CS3B == CS3BT);

PreviousCS4B = (CS4B == CS4BT);

PreviousCS1S = (CS1S == CS1ST);

PreviousCS2S = (CS2S == CS2ST);

PreviousCS3S = (CS3S == CS3ST);

PreviousCS4S = (CS4S == CS4ST);

GroupSW1B = (CS3B<sideway&&CS4S<sideway&&CS5B<sideway&&CS6S=trigger);

GroupSW1S = (CS3S<sideway&&CS4B<sideway&&CS5S<sideway&&CS6B=trigger);

currentPrice = iClose(NULL,0,0);

Comment("Price Continuation\n",

"Status: ",status()

);

//----Trade Algorithm

//trade hours value...

if(TradeTimeStart <= Hour() && Hour() <= TradeTimeEnd){

if(openTrades == "none" && permit == "approved"){

requestLongOrder();

requestShortOrder();

}

else{

requestPermit();

}

}

if(openTrades == "long"){

manageLongTrade();

}

if(openTrades == "short"){

manageShortTrade();

}

return(0);

}

//---FUNCTIONS---

//--

void requestLongOrder(){

if(hourTRADE==Hour() && GroupSW1B){

//--

Lots = CalcLots ();

ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,currentPrice-stopLoss,currentPrice+takeProfit,"My order ",06010,0,Green);

if(ticket<0){

//add email/sms alert here with GetLastError();

}

if(ticket>0){

openTrades = "long";

permit = "suspended";

}

}

}

void requestShortOrder(){

if(hourTRADE==Hour() && GroupSW1S){

//--

Lots = CalcLots ();

ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,currentPrice+stopLoss,currentPrice-takeProfit,"My order ",06010,0,Red);

if(ticket<0){

//add email/sms alert here with GetLastError();

}

if(ticket>0){

openTrades = "short";

permit = "suspended";

}

}

}

* Ce qui devrait se passer comme la capture d'écran ci-jointe.

S'il vous plaît aider ...

Merci...

Regards,

crexsking

Bonjour Crexsking,

La seule chose à laquelle je peux penser est que vous devez convertir pour un courtier à 5 chiffres, après le démarrage, mettez quelque chose comme ceci

double pipMultiplier = 1 ; (avant init)

int start()

{

si (Chiffres==3 || Chiffres==5)

pipMultiplier = 10 ;

sinon pipMultiplicateur = 1 ;

Et ensuite après chaque point, quelque chose comme Point*pipMultiplier.

 

Comment les commentaires ont-ils été résolus ?

Deorn:
Merci pour votre réponse Robert

un tel tableau de bord serait parfait, mais je n'en ai pas trouvé avec bb squeeze, et je n'ai pas la moindre idée de comment modifier les tableaux de bord existants pour les détecter sur bb squeeze

ma propre idée était très simple, elle ressemblait à ceci :

========

C'est juste pour plusieurs paires différentes, mais comme je l'ai dit, le 'Commentaire' se rafraîchit tout le temps.

edit : ok je l'ai réparé, plus besoin d'aide

Bonjour Deorn,

Je suis heureux d'apprendre que vous avez résolu votre problème. Pouvez-vous nous dire ce que vous avez fait pour corriger le rafraîchissement du "commentaire" ?

Amusez-vous bien avec votre codage... !

Robert

 
cosmiclifeform:
Salut Deorn,

Je suis heureux d'apprendre que vous avez résolu votre problème. Vous pouvez nous dire ce que vous avez fait pour corriger le rafraîchissement du "commentaire" ?

Amusez-vous bien avec votre codage... !

Robert

Je l'ai fait avec 'objectcreate' comme vous l'avez dit.

Je l'ai réalisé pour les timeframes M5 à mensuel dans 10 paires différentes :

Les Keltner Channels sont nécessaires avec le nom exact 'Keltner Channels', j'ai choisi les paramètres 20 avec le facteur 1.5.

les deux sont deux indicateurs normaux

Je choisirais une fenêtre vide pour l'installer.

et désolé pour la laideur de la programmation, c'est mon premier indicateur personnel, mais il fait le travail.

salutations

Dossiers :
 
mrtools:
Bonjour Crexsking,

La seule chose à laquelle je pense est que vous pouvez avoir besoin de convertir pour un courtier à 5 chiffres, après le démarrage mettez quelque chose comme ceci

double pipMultiplier = 1 ; (avant init)

int start()

{

si (Chiffres==3 || Chiffres==5)

pipMultiplier = 10 ;

sinon pipMultiplier = 1 ;

Et ensuite, après chaque point, quelque chose comme Point*pipMultiplicateur.

Salut mrtools n merci....

Je vais le faire mais avant cela puis-je demander ... quelle est la relation pour le convertir avec les courtiers à 5 chiffres ?

Je veux dire... avant cela, le système ne peut pas reconnaître une bougie bull ou bear dans les 4 dernières bougies du marché sideway.

Si je mets ce code, le système va le reconnaître ?

Désolé pour mon mauvais anglais...

salutations,

crexsking

 
crexsking:
Bonjour mrtools et merci...

Je vais le faire mais avant cela, je peux vous demander quelle est la relation pour le convertir avec des courtiers à 5 chiffres ?

Je veux dire... avant cela, le système ne peut pas reconnaître une bougie haussière ou baissière dans les 4 dernières bougies du marché latéral.

Si je mets ce code, le système va le reconnaître ?

Désolé pour mon mauvais anglais...

salutations,

crexsking

Crexsking, il va l'amener en pips, donc si par exemple vous avez .91135 pour l'ouverture et .90685 pour la fermeture, la différence est de .0045 si vous êtes sur un courtier à 5 chiffres, le point serait égal à 450 parce qu'il est divisé par .00001, mais si vous utilisez la conversion, il fait correctement 45 pips, parce que vous êtes alors divisé par .0001 ou .00001 x 10. Et en ce qui concerne la reconnaissance des bougies haussières ou baissières, je ne peux vraiment pas le dire parce que je ne vois rien d'autre d'erroné dans votre code.

 

Codage de Big Player... aidez-nous s'il vous plaît...

\\N- ---- Edited

Ok, c'est fait...

Problème résolu.

Salutations,

crexsking

 

Besoin d'aide

Bonjour pour tous les maîtres du codage, j'ai besoin de votre aide s'il vous plaît :

Qu'en est-il du codage si je veux créer des lignes horizontales les bornes supérieures et inférieures sur le groupe de la bougie (close - open) est de petite valeur. Valeur (close - open)*100000 = sans polarité et toujours positive. Le numéro de ma bougie est un contenu externe.

Exemple :

extern int (close - open)*100000 = 10 ; // Sa moyenne (close - open) <= 10

extern int Nombre de bougie maximum = 3 ;

"Horizontal line upper limit" = pris à partir de la plus haute ouverture/fermeture inhérente au groupe.

"Horizontal line lower limit" = prise à partir de la plus haute ouverture/fermeture inhérente au groupe.

Mes meilleures salutations,

Merci

Dossiers :
 

...

Je crains de ne pas comprendre exactement ce que vous voulez dire. Je ne répondrai donc qu'à une partie de votre question.

Si vous multipliez la différence d'un symbole à 5 chiffres sur un courtier à 5 chiffres par 100000, vous obtiendrez la valeur souhaitée, mais si le symbole est par exemple l'un des cross du JPY, vous obtiendrez des valeurs qui dépassent de loin ces valeurs. De même, sur un courtier à 4 chiffres, vous obtiendrez des valeurs plus importantes. Pour éviter cela, le meilleur moyen est de calculer la différence en pips. Voici comment vous pouvez le faire :
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

//

//

// calculate the difference in pips

//

//

double difference = MathAbs((Close[shift] - Open[shift])/(Point*pipMultiplier));[/PHP]

Et ce sera toujours en pips, quel que soit le symbole ou le courtier.

Comme pour le minimum et le maximum, vous pouvez trouver les valeurs les plus basses et les plus hautes d'une série de barres avec un code comme celui-ci (cet exemple est configuré pour regarder une série de 3 barres comme vous en parlez) :
[PHP]double highest = High ;

double lowest = Low ;

paijowijaya:
Bonjour pour tous les maîtres codeurs, j'ai besoin de votre aide s'il vous plaît :

Qu'en est-il du codage si je veux créer des lignes horizontales les limites supérieures et inférieures sur le groupe de la bougie (close - open) est faible en valeur. Valeur (close - open)*100000 = sans polarité et toujours positive. Le numéro de ma bougie est un contenu externe.

Exemple :

extern int (close - open)*100000 = 10 ; // Sa moyenne (close - open) <= 10

extern int Nombre de bougie maximum = 3 ;

"Horizontal line upper limit" = pris à partir de la plus haute ouverture/fermeture inhérente au groupe.

"Horizontal line lower limit" = prise à partir de la plus haute ouverture/fermeture inhérente au groupe.

Mes meilleures salutations,

Merci.
 
mladen:
J'ai peur de ne pas comprendre exactement ce que vous voulez dire, alors je réponds juste à une partie de votre question. Si vous multipliez la différence d'un symbole à 5 chiffres sur un courtier à 5 chiffres avec 100000, alors vous allez obtenir la valeur désirée, mais si le symbole est par exemple l'un des croisements JPY, vous allez obtenir des valeurs qui dépassent de loin ces valeurs. De même, sur un courtier à 4 chiffres, vous obtiendrez des valeurs plus importantes. Pour éviter cela, le meilleur moyen est de calculer la différence en pips. Voici comment vous pouvez le faire :
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

// calculate the difference in pips

double difference = MathAbs((Close[shift] - Open[shift])/(Point*pipMultiplier));[/PHP]

:
[PHP]double highest = High ;

double lowest = Low ;

Grande surprise, je suis très heureux que vous répondiez à ma question Maître Mladen,

Mais désolé, je suis toujours confus, pourriez-vous donner le codage complet ? Valeur * 100000 Je voulais être facile dans les lectures, pas 0,0002 (4 chiffres derrière la virgule), mais si vous avez un moyen plus facile, je vais suivre votre chemin. En substance, lorsque j'ai trouvé trois bougies (la zone d'équilibre ou acheteurs = vendeurs ou zone de côté, chaque TF son nombre différent de bougies) qui est petit (sa valeur est prise de la différence entre Close - Open), je veux dessiner une ligne horizontale tout comme l'image que j'ai téléchargé. Ainsi je connais l'offre et la demande dans le graphique à l'aide de la ligne. Ou bien avez-vous un tel indicateur ?

Mes meilleures salutations,

Merci Maître Mladen