Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Cherche aide pour programmer un expert advisor

  • THIEUM

    bonjour,

    depuis 3 ans je trade en demo des que j'en ai le temps avec de bon resultats

    j'ai essayé de programmer mon EA mais il faut l'avouer c'est un metier :):)

    ce projet est tres ambitieux et se compose en plusieurs parties.

    La premier : creer un EA simple sous mt4 (via mon indicateur)
    la seconde : creer une platteforme mt4 pour trader sur tout
    la troisieme : platteforme sous dynamics ou SAP pour un traitement de plusieurs EA

    mais comme je le dis au debut il faut commencer par une chose simple avant de partir sur plus compliquer

    pour aller plus loin dans de ce que je demande comme aide (indicateur en attache),

    - j ai un indicateur sur lequel il faut mettre les parametresde celui-ci (lignes differentes 9, 14, 19) actuellement il en traite que une seule

    - mettre ordre achat/vente à la close de bougie

    achat : lorsque valeurs des 3 lignes >0 ordre d'achat x3 positions
    vente : lorsque valeurs des 3 ligne <0 ordre de vente x3 positions

    - mettre lot 0,01 (modifiable)

    regle de close :

    lors d'un achat :
    premier close sur les 3 passé : lorsque valeur indic 9 deviens <0
    deuxieme close : lorsque valeur indic 14 deviens <0
    troisieme close : lorsque valeur indic 19 deviens <0

    lors d'une vente :
    premier close sur les 3 passé : lorque valeur indic 9 deviens >0
    deuxieme close : lorsque valeur indic 14 deviens >0
    troisieme close : lorsque valeur indic 19 deviens >0

    - si l'une des trois positions perdantes faire une martingale x2 sur les prochaines positions

    pas besoin de take profit ou stop loss car peu de perte en cas de retournement

    voila, j'espere qu'une ame charitable repondra present.....

    merci de vos retour

    cdt

    thieum
    THIEUM a joint une image
    cherche-aide-pour-programmer-un-expert-advisor-10866
  • Lebenet

    Bonjour,
    Je développe des indicateurs et des stratégies depuis un moment et je peux peut-être vous aider ?
    Par contre, je ne fais pas du MT4.
    Je développe en LUA qui est un langage très puissant et plus souple que le MT4.
    Par contre, cela impose l'utilisation de la Trading Station de FXCM ...
    A vous de voir, mais en LUA, je vous sors un indicateur et une stratégie en une soirée.

    Lebenet (ou pas).
    Modifié le 2018-08-07 08:50:04 par Lebenet
  • lefeuvr3

    Mon Cher Thieum

    J'ai bidouillé un EA qui peut te servir de bas de travail pour ton EA

    Tu peux operer quelques petits changements dans le programme en intervertissants quelques briques que j'ai mis a cote de la strategie
    En agissant sur le LotFactor ,tu dois obtenir un Draw Down qui ne doit pas depasser les 30 .
    Bon courage
    Gerard

    Code
    //+------------------------------------------------------------------+ // DO NOT DELETE THIS HEADER // DELETING THIS HEADER IS COPYRIGHT INFRIGMENT // // Copyright ©2011, ForexEAdvisor.com // ForexEAdvisor Strategy Builder version 0.2 // http://www.ForexEAdvisor.com // // THIS EA CODE HAS BEEN GENERATED USING FOREXEADVISOR STRATEGY BUILDER 0.2 // on: 8/9/2018 12:13:31 PM // Disclaimer: This EA is provided to you "AS-IS", and ForexEAdvisor disclaims any warranty // or liability obligations to you of any kind. // UNDER NO CIRCUMSTANCES WILL FOREXEADVISOR BE LIABLE TO YOU, OR ANY OTHER PERSON OR ENTITY, // FOR ANY LOSS OF USE, REVENUE OR PROFIT, LOST OR DAMAGED DATA, OR OTHER COMMERCIAL OR // ECONOMIC LOSS OR FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, STATUTORY, PUNITIVE, // EXEMPLARY OR CONSEQUENTIAL DAMAGES WHATSOEVER RELATED TO YOUR USE OF THIS EA OR // FOREXEADVISOR STRATEGY BUILDER // Because software is inherently complex and may not be completely free of errors, you are // advised to verify this EA. Before using this EA, please read the ForexEAdvisor Strategy Builder // license for a complete understanding of ForexEAdvisor' disclaimers. // USE THIS EA AT YOUR OWN RISK. // // Before adding this expert advisor to a chart, make sure there are NO // open positions. // DO NOT DELETE THIS HEADER // DELETING THIS HEADER IS COPYRIGHT INFRIGMENT //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| THIEUM base de travail mq4 | //+------------------------------------------------------------------+ double LotSize; //lotsize extern double LotFactor = 10.1; //lotsize factor extern int StopLoss=5000; //stop loss extern int TakeProfit=70; //take profit extern int MagicNumber=201808009; //magic double pips = 0.00001; //leave as default for 5 digit brokers extern int adxthreshold = 27; //adx threshold - must be greater than this to trade extern int adxperiod = 14; //adx period extern int rsiperiod = 14; //rsi period extern int rsiupper = 65; //rsi upper bound, wont buy above this value extern int rsilower = 35; //rsi lower bound, wont sell below this value //---- extern int a=1; extern int b=0; extern int c=2; extern int d=4; extern int e=2; extern int f=3; // //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; //---- if(IsNewCandle()) { trenddirection(); //find trend direction logic(); //apply indicator logic Lot_Volume(); //calc lotsize buyorsell(); //trade - buy or sell return(0); } return(0); } //+------------------------------------------------------------------+ //insuring its a new candle function //+------------------------------------------------------------------+ bool IsNewCandle() { static int BarsOnChart=0; if (Bars == BarsOnChart) return (false); BarsOnChart = Bars; return(true); } //+------------------------------------------------------------------+ //identifies the direction of the current trend //+------------------------------------------------------------------+ bool trenddirection() { //---- // //Pieces du puzzle a interchanger pour modifier la strategie // High[a] // Low[a] // Close [a] // Open[a] // if (High[a]>High[b]&&High[b]>High[e]&&High[c]>High[f]&&Open[a]>Open[b]&&Open[b]>Open[c]&&Open[c]>Open[d]) // Here is your open buy rule // // { return(true); } // if( High[a]<High[b]&&High[b]<High[e]&&High[c]<High[f]&&Open[a]<Open[b]&&Open[b]<Open[c]&&Open[c]<Open[d]) // Here is your open Sell rule // { return(false); } //////////////////////////////////////////////////////////////////////////////////////////////////////// return(0); } //+------------------------------------------------------------------+ //applies logic from indicators ADX and RSI to determine if we can trade //+------------------------------------------------------------------+ int logic() { double adx,rsi; adx = iADX(Symbol(),0,adxperiod,PRICE_CLOSE,MODE_MAIN,0); rsi = iRSI(Symbol(),0,rsiperiod,PRICE_CLOSE,0); if(adx > adxthreshold) { if(rsi > rsilower && rsi < rsiupper) { return(1); } } return(0); } //+------------------------------------------------------------------+ //opens trades //+------------------------------------------------------------------+ int buyorsell() { bool trenddirectionx, logicx; int TicketNumber; trenddirectionx = trenddirection(); logicx = logic(); if(OrdersTotal() == 0) { if(trenddirectionx == true && logicx == 1 ) { //buy TicketNumber = OrderSend(Symbol(),OP_BUY,LotSize,Ask,3,Ask-(StopLoss*pips),Ask+(TakeProfit*pips),NULL,MagicNumber,0,Green); if( TicketNumber > 0 ) { Print("Order placed # ", TicketNumber); } else { Print("Order Send failed, error # ", GetLastError() ); } } } if(OrdersTotal() == 0) { if(trenddirectionx == false && logicx == 1 ) //sell { TicketNumber = OrderSend(Symbol(),OP_SELL,LotSize,Bid,3,Bid+(StopLoss*pips),Bid-(TakeProfit*pips),NULL,MagicNumber,0,Red); if( TicketNumber > 0 ) { Print("Order placed # ", TicketNumber); } else { Print("Order Send failed, error # ", GetLastError() ); } } } return(0); } //+------------------------------------------------------------------+ //calculates lot size based on balance and factor //+------------------------------------------------------------------+ double Lot_Volume() { double lot; if (AccountBalance()>=50) lot=0.02; if (AccountBalance()>=75) lot=0.03; if (AccountBalance()>=100) lot=0.04; if (AccountBalance()>=125) lot=0.05; if (AccountBalance()>=150) lot=0.06; if (AccountBalance()>=175) lot=0.07; if (AccountBalance()>=200) lot=0.08; if (AccountBalance()>=225) lot=0.09; if (AccountBalance()>=250) lot=0.1; if (AccountBalance()>=275) lot=0.11; if (AccountBalance()>=300) lot=0.12; if (AccountBalance()>=325) lot=0.13; if (AccountBalance()>=350) lot=0.14; if (AccountBalance()>=375) lot=0.15; if (AccountBalance()>=400) lot=0.16; if (AccountBalance()>=425) lot=0.17; if (AccountBalance()>=450) lot=0.18; if (AccountBalance()>=475) lot=0.19; if (AccountBalance()>=500) lot=0.2; if (AccountBalance()>=550) lot=0.24; if (AccountBalance()>=600) lot=0.26; if (AccountBalance()>=650) lot=0.28; if (AccountBalance()>=700) lot=0.3; if (AccountBalance()>=750) lot=0.32; if (AccountBalance()>=800) lot=0.34; if (AccountBalance()>=850) lot=0.36; if (AccountBalance()>=900) lot=0.38; if (AccountBalance()>=1000) lot=0.4; if (AccountBalance()>=1500) lot=0.6; if (AccountBalance()>=2000) lot=0.8; if (AccountBalance()>=2500) lot=1.0; if (AccountBalance()>=3000) lot=1.2; if (AccountBalance()>=3500) lot=1.4; if (AccountBalance()>=4000) lot=1.6; if (AccountBalance()>=4500) lot=1.8; if (AccountBalance()>=5000) lot=2.0; if (AccountBalance()>=5500) lot=2.2; if (AccountBalance()>=6000) lot=2.4; if (AccountBalance()>=7000) lot=2.8; if (AccountBalance()>=8000) lot=3.2; if (AccountBalance()>=9000) lot=3.6; if (AccountBalance()>=10000) lot=4.0; if (AccountBalance()>=15000) lot=6.0; if (AccountBalance()>=20000) lot=8.0; if (AccountBalance()>=30000) lot=12; if (AccountBalance()>=40000) lot=16; if (AccountBalance()>=50000) lot=20; if (AccountBalance()>=60000) lot=24; if (AccountBalance()>=70000) lot=28; if (AccountBalance()>=80000) lot=32; if (AccountBalance()>=90000) lot=36; if (AccountBalance()>=100000) lot=40; if (AccountBalance()>=200000) lot=80; LotSize=lot/LotFactor; return(LotSize); }
    lefeuvr3 a joint une image
    cherche-aide-pour-programmer-un-expert-advisor-10926