Comment coder ? - page 149

 

Problème de signal nonlagzigzag

Salut kevin07,

Les alertes pour nonlagzigzag fonctionnent mais elles ne correspondent pas à une ligne zigzag. J'ai reçu plusieurs alertes mais la ligne en zigzag ne s'est pas affichée. De plus, lorsque je charge l'indicateur pour la première fois, il donne une alerte. Pouvez-vous regarder le code et voir si vous pouvez repérer le problème ? L'alerte e-mail fonctionne très bien aussi, merci de l'avoir incluse. Tout ce que vous pouvez faire sera très apprécié.

Meilleures salutations, Tom

 

nonlagzigzag

Bonjour tk748, L'alerte initiale qui s'est affichée lorsque vous avez chargé l'indi indique la direction actuelle du commerce depuis le dernier plus haut ou plus bas (qui peut avoir eu lieu plusieurs bougies en arrière). Désolé d'apprendre que les alertes intermédiaires sont émises avant que la ligne suivante ne soit tracée. L'instruction IF pour l'alerte pourrait avoir un filtre supplémentaire pour vérifier que CurrentDirection != PreviousDirection afin que les alertes supplémentaires ne s'affichent pas avant que la ligne suivante soit tracée. (Je suis impliqué dans la finition de mon EA et je ne peux pas m'attaquer à cela pour vous pour le moment). Pendant la journée, je dois travailler. La nuit, je dois dormir. Sans un EA, je n'obtiendrai pas beaucoup (pas du tout) de transactions. Ma priorité est d'utiliser un zigzag ou un indice de volitilité comme filtre pour empêcher l'ouverture de certaines transactions non rentables.

Si je trouve comment ajouter ce code supplémentaire dans le processus, je vous le ferai savoir.

Meilleurs vœux, kevin07

 

Script Straddle

J'ai reçu ce script mais j'aimerais avoir la possibilité de régler une minuterie pour qu'il négocie à l'ouverture de Londres... Est-ce que cela serait difficile à ajouter et pourriez-vous m'indiquer la bonne direction ou me montrer le code pour le faire ?

Comme toujours... J'apprécie votre aide !

#include

#include

#define LOOK_TO_BUY 1

#define LOOK_TO_SELL 2

extern int Magic_Number = 412625; // set this to a unique number if you intend to use the script simulataneously across many charts on the same account.

extern int UserDefinedSpread = 0; // set this to 0 if you want to use market spread. valid value is >= 0

extern double LotSize = 0.1;

extern int Slippage = 3;

extern int StopLoss = 25; // If you set StopLoss to 0, no stop loss level will be placed.

extern int TakeProfit = 0; // If you set TakeProfit to 0, no stop loss level will be placed.

extern bool OneCancelsOther = true; // This determines if you want the script to stay running and track, then delete the opposite pending order when an order has executed.

extern int NumOfCandles = 3; // This determines how many previous candles you want the EA to look for the High Lows. (buy and sell prices). valid value is > 0

extern int PositionalMarginPips = 40; // The distance excluding spread from the high lows for the opening prices. valid value is >= 0

extern int intervalseconds = 1.0; //The time interval for the script to check your trades. allows fractional seconds.

double BuyPrice = 0;

double SellPrice = 0;

int CustomSpread = 0;

bool KeepRunning = true;

int ticketToDelete = 0;

void GetPrices()

{

double HighestHigh = High[1];

if (NumOfCandles > 1)

{

for (int i=2; i<=NumOfCandles; i++)

{

if (High > HighestHigh)

{

HighestHigh = High;

}

}

}

BuyPrice = HighestHigh + (PositionalMarginPips * Point);

BuyPrice = NormalizeDouble(BuyPrice,Digits);

double LowestLow = Low[1];

if (NumOfCandles > 1)

{

for (i=2; i<=NumOfCandles; i++)

{

if (Low < LowestLow)

{

LowestLow = Low;

}

}

}

SellPrice = LowestLow - (PositionalMarginPips * Point);

BuyPrice = NormalizeDouble(BuyPrice,Digits);

}

void PlaceTrades()

{

double TakeProfitPrice, StopLossPrice;

if (TakeProfit==0)

{

TakeProfitPrice = 0;

}

else

{

TakeProfitPrice = BuyPrice + (TakeProfit * Point);

TakeProfitPrice = NormalizeDouble(TakeProfitPrice,Digits);

}

if (StopLoss == 0)

{

StopLossPrice = 0;

}

else

{

StopLossPrice = BuyPrice - (StopLoss * Point);

StopLossPrice = NormalizeDouble(StopLossPrice,Digits);

}

SendOrders (LOOK_TO_BUY, LotSize, BuyPrice, Slippage, StopLossPrice, TakeProfitPrice, "Straddle Buy", 0);

if (TakeProfit==0)

{

TakeProfitPrice = 0;

}

else

{

TakeProfitPrice = SellPrice - (TakeProfit * Point);

TakeProfitPrice = NormalizeDouble(TakeProfitPrice,Digits);

}

if (StopLoss == 0)

{

StopLossPrice = 0;

}

else

{

StopLossPrice = SellPrice + (StopLoss * Point);

StopLossPrice = NormalizeDouble(StopLossPrice,Digits);

}

SendOrders (LOOK_TO_SELL, LotSize, SellPrice, Slippage, StopLossPrice, TakeProfitPrice, "Straddle Sell", 0);

}

void SendOrders (int BuyOrSell, double LotSize, double PriceToOpen, double Slippage, double SL_Price, double TP_Price, string comments, datetime ExpirationTime)

{

int PositionType, ticket, errorType;

if (BuyOrSell == LOOK_TO_BUY)

{

if (PriceToOpen > Ask)

{

PositionType = OP_BUYSTOP;

}

if (PriceToOpen < Ask)

{

PositionType = OP_BUYLIMIT;

}

Print("Bid: "+Bid+" Ask: "+Ask+" | Opening Buy Order: "+Symbol()+", "+PositionType+", "+LotSize+", "+PriceToOpen+", "+Slippage+", "+SL_Price+", "+TP_Price+", "+comments+", "+Magic_Number+", "+ExpirationTime+", Green");

ticket=OrderSend(Symbol(),PositionType,LotSize,PriceToOpen,Slippage,SL_Price,TP_Price,comments,Magic_Number,ExpirationTime,CLR_NONE);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("BUY order opened : ",OrderOpenPrice());

}

}

else

{

errorType = GetLastError();

Print("Error opening BUY order : ", ErrorDescription(errorType));

}

}

if (BuyOrSell == LOOK_TO_SELL)

{

if (PriceToOpen < Bid)

{

PositionType = OP_SELLSTOP;

}

if (PriceToOpen > Bid)

{

PositionType = OP_SELLLIMIT;

}

Print("Bid: "+Bid+" Ask: "+Ask+" | Opening Sell Order: "+Symbol()+", "+PositionType+", "+LotSize+", "+PriceToOpen+", "+Slippage+", "+SL_Price+", "+TP_Price+", "+comments+", "+Magic_Number+", "+ExpirationTime+", Red");

ticket=OrderSend(Symbol(),PositionType,LotSize,PriceToOpen,Slippage,SL_Price,TP_Price,comments,Magic_Number,ExpirationTime,CLR_NONE);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("Sell order opened : ",OrderOpenPrice());

}

}

else

{

errorType = GetLastError();

Print("Error opening SELL order : ", ErrorDescription(errorType));

}

}

}

void GetSpread()

{

if (UserDefinedSpread <= 0)

{

CustomSpread = MarketInfo(Symbol(),MODE_SPREAD);

}

else

{

CustomSpread = UserDefinedSpread;

}

}

int GetNumberOfPending()

{

int count = 0;

int total = OrdersTotal();

if (total > 0)

{

for(int cnt=0;cnt<total;cnt++)

{

if(OrderSelect(cnt,SELECT_BY_POS))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic_Number)

{

if(OrderType() != OP_BUY && OrderType() != OP_SELL)

{

ticketToDelete = OrderTicket();

count++;

}

}

}

}

}

return (count);

}

void ManageTrades()

{

// If there's only one pending trade left, assume the other one is opened.

// So Delete this one.

if (GetNumberOfPending() == 1)

{

if (OrderDelete(ticketToDelete))

{

KeepRunning = false;

Alert ("Straddle script has ended");

}

}

}

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

//| script program start function |

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

int start()

{

//----

GetSpread();

GetPrices();

PlaceTrades();

Alert ("Pending Trades Placed. Please Wait...");

int intervalMilliseconds = intervalseconds * 1000;

while (KeepRunning && OneCancelsOther)

{

Sleep(intervalMilliseconds);

ManageTrades();

}

//----

return(0);

}

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

 

alerte nonlagzigzag

Salut kevin07,

Merci pour le travail que tu as fait sur cet indicateur. Peut-être que pendant le codage de votre EA, vous aurez une idée sur la façon de faire apparaître les signaux au bon moment. En attendant, peut-être que quelqu'un d'autre ici aura le temps de résoudre le problème. Bonne chance avec votre EA.

Salutations,

Tom

 

Veuillez m'aider à ajouter le code matigale

Je viens de créer cet EA en utilisant ce site : Expert Advisor Builder pour MetaTrader 4 basé sur des règles simples pour trader.

Vous pouvez essayer cet EA pour voir le résultat. Définissez SL = 100, TP = 300, trailing stop = 70 et exécutez-le sur EUR/USD H4.

Pourriez-vous m'aider à mettre martigale pour trader ce système :

Utilisez un montant tel que 100 pips = 2% du solde du compte.

Si le trade n-1 est perdu, doubler le montant du trade n jusqu'à fermer la position avec un profit.

Merci beaucoup !

Dossiers :
 
vinafx:
Je viens de créer cet EA en utilisant ce site : Expert Advisor Builder pour MetaTrader 4 basé sur des règles simples pour trader.

Vous pouvez essayer cet EA pour voir le résultat. Définissez SL = 100, TP = 300, trailing stop = 70 et exécutez-le sur EUR/USD H4.

Pourriez-vous m'aider à mettre martigale pour trader ce système :

Utilisez un montant tel que 100 pips = 2% du solde du compte.

Si le trade n-1 est perdu, doubler le montant du trade n jusqu'à fermer la position avec un profit.

Merci beaucoup !

Cela vaut la peine de passer un peu de temps, mes amis ! Voici le résultat du trading sans le code Martigale. Dépôt initial : 10000 ; 1 lot par transaction. SL = 100 ; TP = 300 ; Trailing ST : 70 ; EUR/USD H4.

Dossiers :
 

comment simplifier ce code ?

la différence entre a et b <= c alors trade = true, sinon false ...

jusqu'à présent c'est ce que j'ai fait si quelqu'un peut me montrer une façon plus courte de coder ceci...

si ( a >= b)

{

si (a - b <= c ) trade = true ;

si (a - b > c) trade = false ;

}

si ( a < b)

{

si (b - a <= c ) commerce = vrai ;

si (b - a > c) commerce = faux ;

}

 

essayez ceci (je suppose que c est >= 0)

trade = (MathAbs(a-b) <= c);

Salutations

mladen

fercan:
comment simplifier ce code ?

la différence entre a et b <= c alors commerce = vrai, sinon faux...

jusqu'à présent, c'est ce que j'ai fait si quelqu'un peut me montrer une façon plus courte de coder ceci...

si ( a >= b)

{

si (a - b <= c ) trade = true ;

si (a - b > c) trade = false ;

}

si ( a < b)

{

si (b - a <= c ) commerce = vrai ;

si (b - a > c) trade = false ;

}
 
mladen:
essayez ceci (je suppose que c est >= 0)
trade = (MathAbs(a-b) <= c);

salutations

mladen

merci... je cherchais quelque chose comme cela avant... merci...

 

test des alertes NonLagZigZag_Signal_v2

tk748:
Salut kevin07,

Merci ... Peut-être ... vous aurez une idée sur la façon de faire apparaître les signaux au bon moment ...

Salutations,

Tom

Salut Tom,

J'ai pu revenir à cet indicateur ZigZag et filtrer les alertes intermédiaires. J'envoie ceci immédiatement et ne l'ai pas testé. S'il vous plaît laissez-moi savoir si vous trouvez des problèmes liés à l'alerte avec elle.

Merci

kevin07

Dossiers :