Comment coder ? - page 60

 

Merci Kalenzo,

J'ai essayé avec OP_BUYLIMIT mais cela ne fonctionne pas.

Je vais essayer avec OP_BUYSTOP.

 

Petite question de codage

Comment mettre une ligne horizontale à l'écran à la valeur moyenne (de tous les prix de clôture) ? Existe-t-il un code spécifique pour cela ?

 

simple breakout EA

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

//| SimpleBreakoutEA.mq4 |

//| |

//| |

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

#property copyright "jjk2"

#property link ""

//---- input parameters

extern int ____TIME_RANGE____;

extern int TimeRange = 1; // # of Hours to look back from TimeEnd. ex) if breakout is @ 22:00 GMT to 23:00 GMT. Total TimeRange to lookback is 8 hrs.

extern int TimeBegin = 22;

extern int TimeEnd = 23;

extern int CancelTime = 20; // ALL REMAINING ORDERS WILL BE CANCELED AT THIS INDICATED TIME.

extern int ______FILTERS______;

extern int TriggerFilter = 0;

extern bool AllowBreakEven = True;

extern int ______ORDERS______;

extern double Lots = 0.1;

extern int StopLoss = 50;

extern int TakeProfit = 100;

extern int Slippage = 2;

extern int MagicNumber = 23423;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

// OPEN ORDERS @ HIGH/LOW from TIMEBEGIN to TimeEND

if (Hour() >= TimeBegin-1 && Hour() >= TimeEnd)

{

int HH = iHighest(NULL, 0, MODE_HIGH,TimeRange,0);

int LL = iLowest(NULL, 0, MODE_LOW,TimeRange,0);

}

double SL_High = Ask - (StopLoss * Point);

double SL_Low = Bid + (StopLoss*Point);

double TP_High = Ask + (TakeProfit*Point);

double TP_Low = Bid - (TakeProfit*Point);

if ( Ask > HH + TriggerFilter) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL_High, TP_High, "Breakout Buy", MagicNumber, NULL, Blue);

if ( Bid < LL + TriggerFilter) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL_Low, TP_Low, "Breakout Sell", MagicNumber, NULL, Red);

// MOVE SL @ BreakEven if allowed. MarketPrice distance Open Price > stop*point, then stop must equal to MarketPrice - Stop*point as new stoploss.

int total = 0;

if ( AllowBreakEven == True )

{

for(total = OrdersTotal() - 1; total >= 0; total--)

{

OrderSelect(total, SELECT_BY_POS);

if ( Bid - OrderOpenPrice() > SL_High*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - SL_High*Point, OrderTakeProfit(),0, CLR_NONE);

if ( OrderOpenPrice() - Ask > SL_Low*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + SL_Low*Point , OrderTakeProfit(),0, CLR_NONE);

}

}

return(0);

}

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

pour une raison quelconque, il ne fonctionne pas.... quelqu'un sait pourquoi ?

 
 

Comment transformer un indicateur en EA ?

Bonjour, puis-je savoir comment transformer un indicateur en EA ?

Beaucoup d'indicateurs ont le signe de la flèche quand il s'agit de certaines conditions et je voudrais les tester avec EA.

Je voudrais que l'EA prenne le trade en fonction de la flèche formée.

Quelqu'un peut-il m'aider ? Merci.

 

Celui-ci est conforme à la flèche du panneau

https://www.mql5.com/en/forum/173249/page51

 

Et si on transformait l'indicateur ci-joint en EA ?

Quelqu'un peut-il vous aider ? Merci.

 
Dossiers :
envelopes.mq4  3 kb
 

Structure du code

Bonjour,

Je suis nouveau sur Metatrader mais très expérimenté en programmation. J'ai créé quelques exemples d'Expert Advisors et quelques indicateurs légèrement compliqués dans MT. Ce qui n'est pas clair, c'est comment structurer un EA assez compliqué. Je veux que l'EA appelle des fonctions de "signal" pour vérifier les différentes conditions de configuration.

Comment dois-je coder ces fonctions ?

1. En tant que fonctions "en ligne" dans l'EA

2. En tant qu'indicateurs "séparés" qui renvoient une valeur au lieu de l'afficher à l'écran ?

3. une autre fonction "séparée" à appeler comme l'appel à iMA.

Si je choisis l'alternative 1, est-ce que la fonction en ligne dans l'EA peut parcourir les 200 dernières barres en utilisant Close et appeler iMA ?

L'alternative 2 est-elle acceptable ? Lors du codage d'un indicateur, toutes les barres "disponibles" sont traitées, ce qui n'est bien sûr pas nécessaire pour l'EA.

L'alternative 3 me semble être le choix logique mais je ne sais pas comment la structurer pour qu'elle fonctionne en backtesting et ce que je dois lui passer et ce à quoi la fonction a accès par défaut, comme par exemple Close.

Par exemple, ce que je dois établir dans la fonction "signal", c'est quelle est la tendance actuelle et quand a-t-elle commencé. J'ai codé cela dans un indicateur, donc je sais comment faire le code réel.

Je vous remercie pour tout conseil.

Ingvar

 
ingvar_e:
Bonjour,

Je suis nouveau sur Metatrader mais très expérimenté en programmation. J'ai créé quelques exemples d'Expert Advisors et quelques indicateurs légèrement compliqués dans MT. Ce qui n'est pas clair, c'est comment structurer un EA assez compliqué. Je veux que l'EA appelle des fonctions de "signal" pour vérifier les différentes conditions de configuration.

Comment dois-je coder ces fonctions ?

1. Comme fonctions "en ligne" dans l'EA

2. En tant qu'indicateurs "séparés" qui renvoient une valeur au lieu de l'afficher à l'écran ?

3. une autre fonction "séparée" à appeler comme l'appel à iMA.

Si je choisis l'alternative 1, est-ce que la fonction en ligne dans l'EA peut parcourir les 200 dernières barres en utilisant Close et appeler iMA ?

L'alternative 2 est-elle acceptable ? Lors du codage d'un indicateur, toutes les barres "disponibles" sont traitées, ce qui n'est bien sûr pas nécessaire pour l'EA.

L'alternative 3 me semble être le choix logique mais je ne sais pas comment la structurer pour qu'elle fonctionne en backtesting et ce que je dois lui passer et ce à quoi la fonction a accès par défaut, comme par exemple Close.

Par exemple, ce que je dois établir dans la fonction "signal", c'est quelle est la tendance actuelle et quand a-t-elle commencé. J'ai codé cela dans un indicateur, donc je sais comment faire le code réel.

Je vous remercie pour tout conseil.

Ingvar

Vous savez probablement déjà comment faire, alors désolé si c'est le cas.

Moyenne mobile de la barre actuelle:

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0) ;

Moyenne mobile d'il y a 200 barres.

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,200) ;

Vous pouvez appeler la moyenne mobile de n'importe quelle barre que vous voulez, de la barre actuelle à n'importe quelle barre dans le passé.