Comment coder ? - page 221

 

Veuillez m'aider à déplacer la ligne.

--------------------------------------------------------------------------------

L'indicateur fonctionne comme il a été conçu. Il émet une alarme sonore lorsque le prix touche la ligne, mais je veux étendre cette fonction. Je veux ceci :

Copier l'indicateur ci-dessous puis faire ces 2 modifications :

modification #1 :

Créez une ligne stoploss1 (elle est déjà là) et déplacez la ligne à l'endroit où se trouve mon stop loss. Si je n'ai pas défini de stop loss, déplacez la ligne de 500 pips pour empêcher l'alarme de se déclencher.

modification #2 :

Créez une ligne takeprofit1 (ce n'est pas dans le code) et déplacez la ligne jusqu'à l'endroit où se trouve mon stop loss ; si je n'ai pas défini de stop loss, déplacez la ligne à 502 pips pour éviter que l'alarme ne soit activée. J'utilise également des alertes sonores différentes.

En gros, l'indicateur vérifiera ce que sont mon stop loss et mon take profit et se déplacera à leurs prix respectifs. Si le stop loss et le take profit ne sont pas définis, les lignes seront déplacées de 500, 502 pips.

De cette façon, lorsque le marché atteint mon profit ou mon arrêt de perte, le son me le fera savoir lorsque je ne regarderai pas Metatrader ou que la fenêtre sera réduite, et je pourrai revenir en arrière et voir quelles autres configurations je peux avoir.

Merci beaucoup pour votre aide mon frère.

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

//| HLine Alert.mq4 |

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

#property copyright ""

#property indicator_chart_window

extern string LineName="Stoploss1" ;

extern color LineColor=Red ;

extern int LineStyle=STYLE_SOLID ;

extern int AlertPipRange=1 ;

extern string AlertWav="Alert2.wav" ;

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

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

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

int init()

{

//---- indicateurs

//----

return(0) ;

}

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

//| Fonction personnalisée de désinitialisation des indicateurs |

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

int deinit()

{

//----

//----

return(0) ;

}

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

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

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

int start()

{

int counted_bars=IndicatorCounted() ;

ObjectCreate(LineName, OBJ_HLINE, 0, 0, Bid) ;

ObjectSet(LineName, OBJPROP_STYLE, LineStyle) ;

ObjectSet(LineName, OBJPROP_WIDTH, 2) ;

ObjectSet(LineName, OBJPROP_COLOR, LineColor) ;

double val = ObjectGet( LineName, OBJPROP_PRICE1) ;

if (Bid-AlertPipRange*Point = val) PlaySound(AlertWav) ;

//----

//----

return(0) ;

}

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

 
increase:
Voici une version de MTF que j'ai faite pour vous avec l'alerte.

Salut Augmentation...

...J'ai téléchargé votre indicateur (avec l'alerte) et je l'ai corrigé...parce que...il y a une petite erreur...

une fois que la flèche pop up montre l'étiquette vers le bas et vice versa....

Je voudrais donc savoir comment fusionner les deux en un seul... et comment définir l'envoi de l'alerte par e-mail pour tous les TF.

dans tous les TF.

Merci d'avance

Dossiers :
afstar.mq4  6 kb
 

svp j'ai besoin d'aide

s'il vous plaît, quelqu'un peut-il m'aider à écrire des codes ? Je veux développer un robot pour une stratégie scalping que j'ai découverte.

 

Les gars,

Voici un code simple pour une alerte sur le franchissement et la fermeture de la moyenne mobile, comme dans l'image ci-jointe,

Je pense qu'il y a quelque chose qui ne va pas dans l'instruction if, merci de vérifier,

Merci d'avance.

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

#property copyright "Non"

#property link "non"

#property indicator_chart_window

extern int Time_Frame = PERIOD_M5;

extern int MA_Period = 20;

extern int MA_Method = MODE_SMA;

extern int MA_applied_to = PRICE_CLOSE;

extern bool Enabled = true;

extern int WhatCorner=2;

int PrevAlertTime=0;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

ObjectDelete("Alart_Condition");

ObjectDelete("Alart_Setup");

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int BarsCount=IndicatorCounted();

if (Enabled == false)

{

string Alart_Condition = "Alart Disabled";

ObjectCreate("Alart_Condition", OBJ_LABEL, 0, 0, 0);

ObjectSetText("Alart_Condition", Alart_Condition , 12, "Comic Sans MS", Red);

ObjectSet("Alart_Condition", OBJPROP_CORNER, WhatCorner);

ObjectSet("Alart_Condition", OBJPROP_XDISTANCE, 1);

ObjectSet("Alart_Condition", OBJPROP_YDISTANCE, 1);

return (0);

}

// if (!Enabled) return (0);

if (Enabled == true)

{

string Alart_Setup = (GetMethodText1(MA_Method)+ (DoubleToStr(MA_Period,0))+")"+ GetMethodText(MA_applied_to)) ;

ObjectCreate("Alart_Setup", OBJ_LABEL, 0, 0, 0);

ObjectSetText("Alart_Setup", Alart_Setup , 12, "Comic Sans MS", Red);

ObjectSet("Alart_Setup", OBJPROP_CORNER, WhatCorner);

ObjectSet("Alart_Setup", OBJPROP_XDISTANCE, 1);

ObjectSet("Alart_Setup", OBJPROP_YDISTANCE, 1);

}

// if close of i < iMA && iMA < close of i-1 && last time alart .. then sell

for (int i=Bars;i>=1;i--)

{

double m = iMA(NULL,Time_Frame,MA_Period,0,MA_Method,MA_applied_to,i);

if ((CurTime() - PrevAlertTime > 20) && Close < m && m < Close)

{

Alert ("Sell " + Symbol());

PlaySound ("alert.wav");

PrevAlertTime=CurTime();

return(-1);

}

// if close of i-1 < iMA && iMA < close of i && last time alart .. then buy

if ( (CurTime() - PrevAlertTime > 20) && Close < m && m < Close )

{

Alert ("Buy "+ Symbol());

PlaySound ("alert.wav");

PrevAlertTime=CurTime();

return(-1);

}

}

//----

//----

return(0);

}

string GetMethodText1(int MA_Method)

{ switch(MA_Method)

{

case 0 : return("SMA("); break;

case 1 : return("EMA("); break;

case 2 : return("SMMA("); break;

case 3 : return("LWMA("); break; }

}

string GetMethodText(int MA_applied_to)

{

switch(MA_applied_to)

{case 0: return("C"); break; // Close

case 1: return("O"); break; // Open

case 2: return("H"); break; // High

case 3: return("L"); break; } // Low

}

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

Dossiers :
q.gif  10 kb
 

Aide pour le script

Bonjour...

Je suis complètement novice en matière de codage et je me demandais si quelqu'un pouvait me dire ce qui ne va pas avec ce script...

Je continue à obtenir une errer 4109 ERR_TRADE_NOT_ALLOWED.. message dans MT4 est "Invalid price 1.48770000 for OrderSend function" Mais je n'arrive pas à comprendre pourquoi... Alors aidez-moi s'il vous plaît...

int start()

{

double High1;

double Low1;

double TP = 50;

double SL = 50;

int Lots = (((AccountBalance()/15)/50)/10);

//----

{

High1 = iHigh(NULL, PERIOD_D1, 0);

Low1 = iLow(NULL, PERIOD_D1, 0);

double Buy = High1*Point;

double Sell= Low1*Point;

Print(Buy);

Print(Sell);

}

//----

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,Buy,NULL,Ask-SL*Point,Ask+TP*Point);

OrderSend(Symbol(),OP_SELLSTOP,Lots,Sell,3,Bid+SL*Point,Bid-TP*Point);

Alert (GetLastError());

}

//----

return(0);

}
 

Aide

Au moins maintenant j'ai résolu mon problème de trade not allowed...

Mais maintenant je continue à obtenir une erreur"invalid stops"... quelqu'un qui peut m'éclairer ici... ? Je ne comprends pas vraiment ce qui ne va pas ici...

Merci d'avance...

int start()

{

double High1;

double Low1;

int TP = 50;

int SL = 50;

int Lots = (((AccountBalance()/15)/50)/10);

//----

{

High1 = iHigh(NULL, PERIOD_D1, 0);

Low1 = iLow(NULL, PERIOD_D1, 0);

Print(High1);

Print(Low1);

}

//----

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,High1,NULL,Ask-SL*Point,Ask+TP*Point);

OrderSend(Symbol(),OP_SELLSTOP,Lots,Low1,NULL,Bid+SL*Point,Bid-TP*Point);

Alert (GetLastError());

}

//----

return(0);

}
 

Restreindre le nombre de transactions à....

J'essaie d'ajouter un code à un EA qui limitera le nombre de transactions qu'il effectue par jour à seulement deux (2). Seulement UNE transaction longue et UNE transaction courte par jour. C'est le code que j'ai jusqu'à présent, mais sur un back test, il ne fonctionne pas.

Pouvez-vous m'aider ?

datetime LongTrade=0;

datetime ShortTrade=0;

if(countOrders(OP_BUY,magic)==0 && LongTrade!=iTime(NULL,PERIOD_D1,0))

{

OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-stop_loss*Point,lTP,comment + "lTP",magic);

LongTrade=iTime(NULL,PERIOD_D1,0);

return(0);

}

--------------------

if(countOrders(OP_SELL,magic)==0 && ShortTrade!=iTime(NULL,PERIOD_D1,0))

{

OrderSend(Symbol(),OP_SELL,lots,Bid,0,Ask+stop_loss*Point,sTP,comment + "sTP",magic);

ShortTrade=iTime(NULL,PERIOD_D1,0);

return(0);

}

MERCI.

 
ForExTyro:
J'essaie d'ajouter un code à un EA qui limitera le nombre de transactions qu'il effectue par jour à seulement deux (2). Seulement UNE transaction longue et UNE transaction courte par jour. C'est le code que j'ai jusqu'à présent, mais sur un back test il ne fonctionne pas. Pouvez-vous m'aider ?

Remplacer

datetime LongTrade=0 ;

datetime ShortTrade=0 ;

à

static datetime LongTrade=0 ;

static datetime ShortTrade=0 ;

 

Aide avec cet EA et indicateur s'il vous plaît

Je suis un nouveau venu, comme vous pouvez le constater, je n'ai pas de chance avec cet outil.

J'ai cet indicateur (Histogramme / regarde 300 barres en arrière mais il repeint beaucoup trop. J'ai un indicateur (histogramme/regardant les 300 barres précédentes) mais il repeint beaucoup trop souvent.

Salutations CharlieC

histoind.mq4

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 LawnGreen

string gs_unused_124 = "" ;

bool gi_unused_132 = FALSE ;

extern int RISK = 3 ;

extern int CountBars = 300 ;

double g_ibuf_144[] ;

double g_ibuf_148[] ;

int init() {

IndicatorBuffers(2) ;

SetIndexStyle(0, DRAW_ARROW) ;

SetIndexArrow(0, 234) ;

SetIndexStyle(1, DRAW_ARROW) ;

SetIndexArrow(1, 233) ;

SetIndexBuffer(0, g_ibuf_144) ;

SetIndexBuffer(1, g_ibuf_148) ;

Commentaire() ;

retourne (0) ;

}

int start() {

int li_12 ;

double ld_52 ;

double ld_60 ;

double ld_68 ;

double ld_76 ;

double ld_84 ;

double ld_92 ;

double ld_100 ;

double lda_108[50000] ;

SetIndexDrawBegin(0, Bars - CountBars + 11 + 1) ;

SetIndexDrawBegin(1, Bars - CountBars + 11 + 1) ;

int l_ind_counted_8 = IndicatorCounted() ;

int li_20 = RISK * 2 + 3 ;

double ld_36 = RISK + 67 ;

double ld_44 = 33 - RISK ;

int l_period_24 = li_20 ;

if (Bars <= 12) return (0) ;

if (l_ind_counted_8 < 12) {

for (int li_0 = 1 ; li_0 <= 0 ; li_0++) g_ibuf_144[CountBars - li_0] = 0.0 ;

for (li_0 = 1 ; li_0 <= 0 ; li_0++) g_ibuf_148[CountBars - li_0] = 0.0 ;

}

for (int li_4 = CountBars - 11 - 1 ; li_4 >= 0 ; li_4--) {

li_12 = li_4 ;

ld_76 = 0.0 ;

ld_84 = 0.0 ;

for (li_12 = li_4 ; li_12 <= li_4 + 9 ; li_12++) ld_84 += MathAbs(High[li_12] - Low[li_12]) ;

ld_76 = ld_84 / 10.0 ;

li_12 = li_4 ;

ld_68 = 0 ;

while (li_12 < li_4 + 9 && ld_68 < 1.0) {

si (MathAbs(Open[li_12] - (Close[li_12 + 1])) >= 2.0 * ld_76) ld_68 += 1.0 ;

li_12++ ;

}

si (ld_68 >= 1.0) ld_92 = li_12 ;

sinon ld_92 = -1 ;

li_12 = li_4 ;

ld_68 = 0 ;

while (li_12 < li_4 + 6 && ld_68 < 1.0) {

si (MathAbs(Close[li_12 + 3] - Close[li_12]) >= 4.6 * ld_76) ld_68 += 1.0 ;

li_12++ ;

}

si (ld_68 >= 1.0) ld_100 = li_12 ;

sinon ld_100 = -1 ;

si (ld_92 > -1,0) l_période_24 = 3 ;

sinon l_période_24 = li_20 ;

si (ld_100 > -1,0) l_période_24 = 4 ;

sinon l_période_24 = li_20 ;

ld_52 = 100 - MathAbs(iWPR(NULL, 0, l_period_24, li_4)) ;

lda_108[li_4] = ld_52 ;

g_ibuf_144[li_4] = 0 ;

g_ibuf_148[li_4] = 0 ;

ld_60 = 0 ;

if (ld_52 < ld_44) {

for (int li_16 = 1 ; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36 ; li_16++) {

}

if (lda_108[li_4 + li_16] > ld_36) {

ld_60 = High[li_4] + ld_76 / 2.0 ;

g_ibuf_144[li_4] = ld_60 ;

}

}

if (ld_52 > ld_36) {

for (li_16 = 1 ; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36 ; li_16++) {

}

if (lda_108[li_4 + li_16] < ld_44) {

ld_60 = Low[li_4] - ld_76 / 2.0 ;

g_ibuf_148[li_4] = ld_60 ;

}

}

}

return (0) ;

}

Dossiers :
histoind.mq4  3 kb
 

CharlieC

Pendant que j'y suis, est-ce que quelqu'un peut aussi mettre une alerte sonore (Darn Cheeky Ay, for a Newbeeee) ce truc vous fait faire de drôles de choses.

Désolé

CharlieC