Comment coder ? - page 96

 
 

Bonjour à tous,

C'est une question de codage stupide, et je sais que je l'ai déjà vu quelque part, mais j'ai besoin d'aide.

Je suis en train de coder un indicateur personnalisé, et tout ce que je veux qu'il fasse, c'est lire le prix actuel de l'offre au SEULEMENT AU DÉBUT d'une NOUVELLE barre. Je ne peux pas simplement utiliser Open[0] car à chaque fois qu'un nouveau tick arrive, il retournera la valeur ouverte de la barre actuelle. Je veux que la valeur soit renvoyée une seule fois, jusqu'à ce qu'une nouvelle barre soit formée.

Je sais qu'il me manque quelque chose de très simple, mais j'ai un peu de mal à le comprendre. Quelqu'un pourrait-il m'aider ?

Merci,

-wolfe

 
wolfe:
Bonjour à tous,

C'est une question de codage stupide, et je sais que je l'ai déjà vu quelque part, mais j'ai besoin d'aide.

Je suis en train de coder un indicateur personnalisé, et tout ce que je veux qu'il fasse, c'est lire le prix d'achat actuel AU SEULEMENT AU DÉBUT d'une NOUVELLE barre. Je ne peux pas simplement utiliser Open[0] car à chaque fois qu'un nouveau tick arrive, il retournera la valeur ouverte de la barre actuelle. Je veux que la valeur soit renvoyée une seule fois, jusqu'à ce qu'une nouvelle barre soit formée.

Je sais qu'il me manque quelque chose de très simple, mais j'ai un peu de mal à le comprendre. Quelqu'un pourrait-il m'aider ?

Merci,

-wolfe

Il suffit de stocker le temps de la barre actuelle (Time[0]) - lorsque cette valeur change, vous avez une nouvelle barre, donc récupérer votre prix, stocker la nouvelle valeur et répéter...

 
omelette:
Il suffit de stocker le temps de la barre actuelle (Time[0]) - lorsque cette valeur change, vous avez une nouvelle barre, donc récupérer votre prix, stocker la nouvelle valeur et répéter...

Merci omelette,

J'aurais dû y penser, je suis un peu déçu de moi-même !

Merci pour votre aide !

 

Quelqu'un peut-il me montrer ce que je fais de mal dans ce code ?

J'aimerais y ajouter d'autres délais, comme le délai quotidien, mais je ne sais pas ce qui ne va pas.

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

//| #MTF_Hi_Low_Middle.mq4

//| Base de spudfibo.Upgrade par Darkkiller

// : Merci à Mladen de m'avoir aidé à faire quelques corrections.

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

#property indicator_chart_window

extern string note1 = "H4 Higher,Middle,Lower colors" ;

extern color H4HigherColor = DeepSkyBlue ;

extern color H4MiddleColor = Yellow ;

extern color H4LowerColor = HotPink ;

extern string note2 = "Dessiner H4 Higher,Lower et Middle ?

extern bool H4HiLow = true ;

extern bool H4Mid = true ;

extern string note3 = "Couleurs D1 Higher,Middle,Lower" ;

extern color D1HigherColor = DeepSkyBlue ;

extern color D1MiddleColor = Yellow ;

extern color D1LowerColor = HotPink ;

extern string note4 = "Dessiner D1 Higher,Lower et Middle ?

extern bool D1HiLow = true ;

extern bool D1Mid = true ;

double HiPrice, LoPrice, Range, D1HiPrice, D1LoPrice, D1Range ;

datetime StartTime ;

int init()

{

retourne(0) ;

}

int deinit()

{

ObjectDelete("H4Higher") ;

ObjectDelete("H4Lower") ;

ObjectDelete("H4Middle") ;

ObjectDelete("D1Higher") ;

ObjectDelete("D1Lower") ;

ObjectDelete("D1Middle") ;

return(0) ;

}

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

//| Draw Fibo

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

int DrawFibo()

{

///////////////////////////////////////////HILO/////

if(H4HiLow)

{

if(ObjectFind("H4Higher") == -1)

ObjectCreate("H4Higher", OBJ_FIBO, 0, StartTime, HiPrice+Range, StartTime, HiPrice) ;

sinon

{

ObjectSet("H4Higher",OBJPROP_TIME2, StartTime) ;

ObjectSet("H4Higher",OBJPROP_TIME1, StartTime) ;

ObjectSet("H4Higher",OBJPROP_PRICE1,HiPrice+Range) ;

ObjectSet("H4Higher",OBJPROP_PRICE2,HiPrice) ;

}

ObjectSet("H4Higher", OBJPROP_LEVELCOLOR, H4HigherColor) ;

ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1) ;

ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0,0.0) ; ObjectSetFiboDescription("H4Higher", 0, "H4 HIGHER- %$") ;

ObjectSet("H4Higher", OBJPROP_RAY,true) ;

ObjectSet("H4Higher", OBJPROP_BACK,true) ;

ObjectSet("H4Higher", OBJPROP_COLOR,EMPTY) ;

if(ObjectFind("H4Lower") == -1)

ObjectCreate("H4Lower", OBJ_FIBO, 0, StartTime, LoPrice-Range, StartTime, LoPrice) ;

sinon

{

ObjectSet("H4Lower", OBJPROP_TIME2, StartTime) ;

ObjectSet("H4Lower", OBJPROP_TIME1, StartTime) ;

ObjectSet("H4Lower", OBJPROP_PRICE1,LoPrice-Range) ;

ObjectSet("H4Lower", OBJPROP_PRICE2,LoPrice) ;

}

ObjectSet("H4Lower", OBJPROP_LEVELCOLOR, H4LowerColor) ;

ObjectSet("H4Lower", OBJPROP_FIBOLEVELS, 1) ;

ObjectSet("H4Lower", OBJPROP_FIRSTLEVEL+0,0.0) ; ObjectSetFiboDescription("H4Lower", 0, "H4 LOWER - %$") ;

ObjectSet("H4Lower", OBJPROP_RAY, true) ;

ObjectSet("H4Lower", OBJPROP_BACK, true) ;

ObjectSet("H4Lower", OBJPROP_COLOR, EMPTY) ;

}

if(D1HiLow)

{

if(ObjectFind("D1Higher") == -1)

ObjectCreate("D1Higher", OBJ_FIBO, 0, D1StartTime, D1HiPrice+D1Range, D1StartTime, D1HiPrice) ;

sinon

{

ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime) ;

ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime) ;

ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range) ;

ObjectSet("D1Higher", OBJPROP_PRICE2, D1HiPrice) ;

}

ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor) ;

ObjectSet("D1Higher", OBJPROP_FIBOLEVELS,1) ;

ObjectSet("D1Higher", OBJPROP_FIRSTLEVEL+0,0.0) ; ObjectSetFiboDescription("D1Higher", 0, "H4 HIGHER- %$") ;

ObjectSet("D1Higher", OBJPROP_RAY, true) ;

ObjectSet("D1Higher", OBJPROP_BACK, true) ;

ObjectSet("D1Higher", OBJPROP_COLOR, EMPTY) ;

if(ObjectFind("D1Lower") == -1)

ObjectCreate("D1Lower", OBJ_FIBO, 0, D1StartTime, D1LoPrice-D1Range, D1StartTime, 1LoPrice) ;

sinon

{

ObjectSet("D1Lower", OBJPROP_TIME2, D1StartTime) ;

ObjectSet("D1Lower", OBJPROP_TIME1, D1StartTime) ;

ObjectSet("D1Lower", OBJPROP_PRICE1, D1LoPrice-D1Range) ;

ObjectSet("D1Lower", OBJPROP_PRICE2, D1LoPrice) ;

}

ObjectSet("D1Lower", OBJPROP_LEVELCOLOR, D1LowerColor) ;

ObjectSet("D1Lower", OBJPROP_FIBOLEVELS,1) ;

ObjectSet("D1Lower", OBJPROP_FIRSTLEVEL+0,0.0) ; ObjectSetFiboDescription("D1Lower", 0, "H4 LOWER - %$") ;

ObjectSet("D1Lower", OBJPROP_RAY, true) ;

ObjectSet("D1Lower", OBJPROP_BACK, true) ;

ObjectSet("D1Lower", OBJPROP_COLOR, EMPTY) ;

}

/////////////////////////////////////////HILO////////

/////////////////////////////////////////MIDDLE////

if(H4Mid)

if(ObjectFind("H4Middle") == -1)

ObjectCreate("H4Middle", OBJ_FIBO, 0, StartTime, HiPrice, StartTime+PERIOD_H4*60, LoPrice) ;

sinon

{

ObjectSet("H4Middle", OBJPROP_TIME2, StartTime) ;

ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60) ;

ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice) ;

ObjectSet("H4Middle", OBJPROP_PRICE2, LoPrice) ;

}

ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor) ;

ObjectSet("H4Middle", OBJPROP_FIBOLEVELS,1) ;

ObjectSet("H4Middle", OBJPROP_FIRSTLEVEL+0,0.500) ; ObjectSetFiboDescription("H4Middle", 0, "H4 MIDDLE - %$") ;

ObjectSet("H4Middle", OBJPROP_RAY, true) ;

ObjectSet("H4Middle", OBJPROP_BACK, true) ;

ObjectSet("H4Middle", OBJPROP_COLOR, EMPTY) ;

}

if(D1Mid)

if(ObjectFind("D1Middle") == -1)

ObjectCreate("D1Middle", OBJ_FIBO, 0, D1StartTime, D1HiPrice, D1StartTime+PERIOD_D1*60, D1LoPrice) ;

sinon

{

ObjectSet("D1Middle", OBJPROP_TIME2, D1StartTime) ;

ObjectSet("D1Middle", OBJPROP_TIME1, D1StartTime+PERIOD_D1*60) ;

ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice) ;

ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice) ;

}

ObjectSet("D1Middle", OBJPROP_LEVELCOLOR, D1MiddleColor) ;

ObjectSet("D1Middle", OBJPROP_FIBOLEVELS,1) ;

ObjectSet("D1Middle", OBJPROP_FIRSTLEVEL+0,0.500) ; ObjectSetFiboDescription("D1Middle", 0, "D1 MIDDLE - %$") ;

ObjectSet("D1Middle", OBJPROP_RAY, true) ;

ObjectSet("D1Middle", OBJPROP_BACK, true) ;

ObjectSet("D1Middle", OBJPROP_COLOR, EMPTY) ;

}

/////////////////////////////////////////MIDDLE////

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

//| Fonction de démarrage de l'indicateur

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

int start()

{

int shift = iBarShift(NULL, PERIOD_D1, Time[0]) + 1 ; // H4

HiPrice = iHigh(NULL, PERIOD_H4, shift) ;

LoPrice = iLow (NULL, PERIOD_H4, shift) ;

StartTime = iTime(NULL, PERIOD_H4, shift) ;

D1HiPrice = iHigh (NULL, PERIOD_D1, shift) ;

D1LoPrice = iLow (NULL, PERIOD_D1, shift) ;

D1StartTime = iTime(NULL, PERIOD_D1, shift) ;

if(TimeDayOfWeek(StartTime) == 0/*Sunday*/)

{//Ajouter le haut et le bas du vendredi

HiPrice = MathMax(HiPrice, iHigh(NULL,PERIOD_H4, shift+1)) ;

LoPrice = MathMin(LoPrice, iLow(NULL,PERIOD_H4, shift+1)) ;

D1HiPrice = MathMax(D1HiPrice, iHigh(NULL, PERIOD_D1, shift+1)) ;

D1LoPrice = MathMin(D1LoPrice, iLow(NULL, PERIOD_D1, shift+1)) ;

}

Range = HiPrice - LoPrice ;

D1Range = D1HiPrice - D1LoPrice ;

DrawFibo() ;

retour(0) ;

}

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

Ci-dessous, je joins l'original pour H4 high low mid

 

J'aimerais avoir de l'aide s'il vous plaît. J'essaie d'utiliser le delta-stop comme stop loss et stop suiveur.

et un stop suiveur. Vous trouverez ci-joint l'EA.

Est-il possible de le faire ?

Dossiers :
 

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

//| MODIFIED BY Avery T. Horton, Jr. aka TheRumpledOne |

//| |

//| |

//|

//

// recherche google "therumpledone mt4"

//

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

//| _Fibo_Hi_Low_Middle.mq4

//| Base de spudfibo.Upgrade par Darkkiller

// : Merci à Mladen de m'avoir aidé à faire quelques corrections.

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

#property indicator_chart_window

extern int myChartPeriod = 0 ;

extern string note1 = "Higher,Middle,Lower colors" ;

extern color HigherColor = DeepSkyBlue ;

extern color MiddleColor = Yellow ;

extern color LowerColor = HotPink ;

extern string note2 = "Draw middle ?";

extern bool HiLow = true ;

extern bool Mid = true ;

double HiPrice, LoPrice, Range ;

datetime StartTime ;

string tChartPeriod, tHigher, tLower, tMiddle ;

int init()

{

if(myChartPeriod == 0) { myChartPeriod = Period() ; }

tChartPeriod = TimeFrameToString(myChartPeriod) ;

tHigher = tChartPeriod + "H" ;

tLower = tChartPeriod + "L" ;

tMiddle = tChartPeriod + "M" ;

return(0) ;

}

int deinit()

{

ObjectDelete(tHigher) ;

ObjectDelete(tLower) ;

ObjectDelete(tMiddle) ;

return(0) ;

}

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

//| Draw Fibo

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

int DrawFibo()

{

if(HiLow)

{

if(ObjectFind(tHigher) == -1)

ObjectCreate(tHigher,OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice) ;

sinon

{

ObjectSet(tHigher,OBJPROP_TIME2, StartTime) ;

ObjectSet(tHigher,OBJPROP_TIME1, StartTime) ;

ObjectSet(tHigher,OBJPROP_PRICE1,HiPrice+Range) ;

ObjectSet(tHigher,OBJPROP_PRICE2,HiPrice) ;

}

ObjectSet(tHigher,OBJPROP_LEVELCOLOR,HigherColor) ;

ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1) ;

ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0) ;

ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$") ;

ObjectSet(tHigher,OBJPROP_RAY,true) ;

ObjectSet(tHigher,OBJPROP_BACK,true) ;

ObjectSet(tHigher,OBJPROP_COLOR,EMPTY) ;

if(ObjectFind(tLower) == -1)

ObjectCreate(tLower,OBJ_FIBO,0,StartTime,LoPrice-Range,StartTime,LoPrice) ;

sinon

{

ObjectSet(tLower,OBJPROP_TIME2, StartTime) ;

ObjectSet(tLower,OBJPROP_TIME1, StartTime) ;

ObjectSet(tLower,OBJPROP_PRICE1,LoPrice-Range) ;

ObjectSet(tLower,OBJPROP_PRICE2,LoPrice) ;

}

ObjectSet(tLower,OBJPROP_LEVELCOLOR,LowerColor) ;

ObjectSet(tLower,OBJPROP_FIBOLEVELS,1) ;

ObjectSet(tLower,OBJPROP_FIRSTLEVEL+0,0.0) ;

ObjectSetFiboDescription(tLower,0,tChartPeriod+" LOWER - %$") ;

ObjectSet(tLower,OBJPROP_RAY,true) ;

ObjectSet(tLower,OBJPROP_BACK,true) ;

ObjectSet(tLower,OBJPROP_COLOR,EMPTY) ;

}

/////////////////////////////////////////MIDDLE///////////////////////////

if(Mid)

if(ObjectFind(tMiddle) == -1)

ObjectCreate(tMiddle,OBJ_FIBO,0,StartTime,HiPrice,StartTime+myChartPeriod*60,LoPrice) ;

sinon

{

ObjectSet(tMiddle,OBJPROP_TIME2, StartTime) ;

ObjectSet(tMiddle,OBJPROP_TIME1, StartTime+myChartPeriod*60) ;

ObjectSet(tMiddle,OBJPROP_PRICE1,HiPrice) ;

ObjectSet(tMiddle,OBJPROP_PRICE2,LoPrice) ;

}

ObjectSet(tMiddle,OBJPROP_LEVELCOLOR,MiddleColor) ;

ObjectSet(tMiddle,OBJPROP_FIBOLEVELS,1) ;

ObjectSet(tMiddle,OBJPROP_FIRSTLEVEL+0,0.500) ;

ObjectSetFiboDescription(tMiddle,0,tChartPeriod+" MIDDLE - %$") ;

ObjectSet(tMiddle,OBJPROP_RAY,true) ;

ObjectSet(tMiddle,OBJPROP_BACK,true) ;

ObjectSet(tMiddle,OBJPROP_COLOR,EMPTY) ;

}

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

//| Fonction de démarrage de l'indicateur

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

int start()

{

int shift = iBarShift(NULL,myChartPeriod,Time[0]) + 1 ; //

HiPrice = iHigh(NULL,myChartPeriod,shift) ;

LoPrice = iLow (NULL,myChartPeriod,shift) ;

StartTime = iTime(NULL,myChartPeriod,shift) ;

if(TimeDayOfWeek(StartTime)==0/*Sunday*/)

{//Ajouter le haut et le bas du vendredi

HiPrice = MathMax(HiPrice,iHigh(NULL,myChartPeriod,shift+1)) ;

LoPrice = MathMin(LoPrice,iLow(NULL,myChartPeriod,shift+1)) ;

}

Range = HiPrice-LoPrice ;

DrawFibo() ;

// Comment( "Period_", tChartPeriod ) ;

return(0) ;

}

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

string TimeFrameToString(int tf)

{

string tfs ;

switch(tf) {

case PERIOD_M1 : tfs="M1" ; break ;

case PERIOD_M5 : tfs="M5" ; break ;

case PERIOD_M15 : tfs="M15" ; break ;

case PERIOD_M30 : tfs="M30" ; pause ;

case PERIOD_H1 : tfs="H1" ; break ;

case PERIOD_H4 : tfs="H4" ; pause ;

case PERIOD_D1 : tfs="D1" ; pause ;

case PERIOD_W1 : tfs="W1" ; break ;

case PERIOD_MN1 : tfs="MN" ;

}

return(tfs) ;

}

C'est comme ça que j'ai fait.

P.S. pourquoi mes pièces jointes sont-elles supprimées ?

Dossiers :
highlower.gif  14 kb
 

MoveStopOnce

Bonjour, j'essaie de faire fonctionner ce code MoveStopOnce mais les transactions de vente ne semblent pas être modifiées par le code, seulement les achats. Y a-t-il un problème ?

//Buys

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

[/code]

[code]

//Sells

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

 

MoveStopOnce

J'ai eu ce problème.

Je pense que vous devez ajouter :

si (OrderType() == OP_BUY)

ET utiliser OP_SELL pour le code de vente.

Big Be

 
Big Be:
J'ai eu ce problème.

Je pense que vous devez ajouter :

if (OrderType() == OP_BUY)

ET utiliser OP_SELL pour le code de vente.

Big Be

Ok, j'essaierai quand je serai chez moi mais alors pourquoi cela fonctionne-t-il déjà avec les ordres d'achat ?

Merci