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

Erreur de codage et compilation

  • ccoulaud

    Bonjour,
    voulant faire un EA cumulant 2 indicateurs ,sur la moyenne mobile,j'ai essayer de la modifier pour eviter le take profit ou le stop loss puisque c'est le franchissement qui stop et voulant cumulant bband qu j'ai fait sous etasoft forex generator 4 mais le programme en free ne delivre pas le code source mais j'ai reussi à avoir quand meme un bout de programme.
    si quelque avait le logiciels pour avoir le bon code ça serait super;et me dire d'ou vient l'erreur et comment cumuler les 2 surement par "if else" je suis novice en programmation mais je m'accroche.
    Merci!
    <pour la moyenne mobile sur la fin pose probleme

    Code
    //+------------------------------------------------------------------+ //| MACross.mq4 | //| Copyright © 2010, Babs Assoc. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2010, Babs Assoc." #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ //| External Parameters | //+------------------------------------------------------------------+ extern int MagicNumber = 9876; extern double Lot = 0.02; //+------------------------------------------------------------------+ //| Global Variable | //+------------------------------------------------------------------+ int OpenedOrder; // 1=Buy , 2=Sell double MyPoint; int NbBars; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- OpenedOrder=FALSE; NbBars=0; if (Digits == 5 || Digits == 3) MyPoint = Point*10; else MyPoint= Point; //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- double ema8, ema8Prev; double ema24, ema24Prev; //Acquisition des indicateurs ema8=iMA(NULL, 0, 8, 0, MODE_SMMA, PRICE_MEDIAN, 0); ema8Prev=iMA(NULL, 0, 8, 0, MODE_SMMA, PRICE_MEDIAN, 1); ema24=iMA(NULL, 0, 24, 0, MODE_SMMA, PRICE_MEDIAN, 0); ema24Prev=iMA(NULL, 0, 24, 0, MODE_SMMA, PRICE_MEDIAN, 1); //Verification des trades ouverts CheckTrade(); //Logique if(isNewBar()) { if(ema8>ema24 && ema8Prev<ema24Prev && (OpenedOrder==2 || OpenedOrder==0)) //Croisement à la hausse { CloseTrade(); OpenBuy(); } if(ema8<ema24 && ema8Prev>ema24Prev && (OpenedOrder==1 || OpenedOrder==0)) // Croisement à la baisse { CloseTrade(); OpenSell(); } } //---- return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| expert Close Buy/Sell order function | //+------------------------------------------------------------------+ void CloseTrade() { for(int i= OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); int type = OrderType(); if (OrderMagicNumber() == MagicNumber && Symbol()==OrderSymbol()) { switch(type) { //Fermeture des positions d’achat case OP_BUY : OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(),MarketInfo(OrderSymbol(), MODE_BID), Red ); break; // Fermeture des positions de vente case OP_SELL : OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(),MarketInfo(OrderSymbol(), MODE_ASK), Red ); break; } } } } //+------------------------------------------------------------------+ //| expert Open Buy order function | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Check order function | //+------------------------------------------------------------------+ void CheckTrade() { OpenedOrder=0; for(int i= OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); int type = OrderType(); if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) { switch(type) { case OP_BUY : OpenedOrder=1; break; case OP_SELL : OpenedOrder=2; break; } } } } //+------------------------------------------------------------------+ return(0); } //start() //+------------------------------------------------------------------+
    Modifié le 2013-05-23 17:54:03 par AliX
  • ccoulaud — en réponse à ccoulaud dans son message #76746

    Pour le bband sous forex generator 4:

    Code
    object type="wxSFCanvasSettings" "id" type="long">-1</property> {property name="scale" type="double">1.000000</property> <property name="style" type="long">1023</property> <property name="accepted_shapes" type="arraystring"> <item>All</item> </property> </object> </settings> <chart> <object type="LogicShape"> <property name="id" type="long">2</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> <property name="relative_position" type="realpoint">330.000000,320.000000</property> <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">174.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">If Order Does Not Exist</property> <property name="string" type="string">block.name=If Order Does Not Exist block.id=IfOrderDoesNotExist block.desc=Checks if order with specific Order Id and order type is open. Use this block to check for open or pending orders and attach below other blocks to work with those orders. Example: using this block you can limit number of same orders open at the same time, check if there is already one SELL order, if it does not exist, open SELL order by attaching order opening block below this one. block.developer=Etasoft block.version=1.0 block.genmode=0 block.builtin=1 block.type=ordermgm block.1.body=bool exists = false; block.2.body=for (int i=OrdersTotal()-1; i &gt;= 0; i--) block.3.body=if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) block.4.body={ block.5.body= if (OrderType() == ~OrderType~ &amp;&amp; OrderSymbol() == Symbol() &amp;&amp; OrderMagicNumber() == ~OrderId~) block.6.body= { block.7.body= exists = true; block.8.body= } block.9.body=} block.10.body=else block.11.body={ block.12.body= Print("OrderSelect() error - ", ErrorDescription(GetLastError())); block.13.body=} block.14.body= block.15.body=if (exists == false) block.16.body={ block.17.body= ~next~ block.18.body=} param.1.name=Order Type param.1.id=OrderType param.1.type=int param.1.scope=fixed param.1.value=OP_SELL param.1.hidden=0 param.1.category= param.1.accvalue.list=OP_SELL,OP_BUY,OP_SELLSTOP,OP_BUYSTOP,OP_SELLLIMIT,OP_BUYLIMIT param.2.name=_Order Id param.2.id=OrderId param.2.type=int param.2.scope=fixed param.2.value=1 param.2.hidden=0 param.2.category= param.2.accvalue.list=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">3</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">670.000000,340.000000</property> <property name="source" type="long">19</property> <property name="target" type="long">19</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">4</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">670.000000,340.000000</property> <property name="source" type="long">19</property> <property name="target" type="long">19</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">5</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">190.000000,330.000000</property> <property name="source" type="long">19</property> <property name="target" type="long">1</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">6</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">190.000000,330.000000</property> <property name="source" type="long">19</property> <property name="target" type="long">13</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">7</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">190.000000,330.000000</property> <property name="source" type="long">16</property> <property name="target" type="long">14</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">8</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">190.000000,330.000000</property> <property name="source" type="long">17</property> <property name="target" type="long">15</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">9</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">190.000000,330.000000</property> <property name="source" type="long">18</property> <property name="target" type="long">16</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="source_offset" type="realpoint">0.344828,0.606061</property> </object> <object type="wxSFLineShape"> <property name="id" type="long">10</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">250.000000,340.000000</property> <property name="source" type="long">1</property> <property name="target" type="long">18</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">11</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">190.000000,330.000000</property> <property name="source" type="long">13</property> <property name="target" type="long">2</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_offset" type="realpoint">0.344828,0.606061</property> <property name="control_points" type="listrealpoint"> <item>400.000000,330.000000</item> </property> </object> <object type="wxSFLineShape"> <property name="id" type="long">12</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>wxSFShapeBase</item> </property> <property name="relative_position" type="realpoint">250.000000,340.000000</property> <property name="source" type="long">2</property> <property name="target" type="long">17</property> <property name="source_arrow" type="serializabledynamic"> <object type="wxSFCircleArrow"> <property name="id" type="long">-1</property> </object> </property> <property name="target_arrow" type="serializabledynamic"> <object type="wxSFSolidArrow"> <property name="id" type="long">-1</property> </object> </property> </object> <object type="LogicShape"> <property name="id" type="long">14</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> <property name="relative_position" type="realpoint">70.000000,540.000000</property> <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">86.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">Buy Order</property> <property name="string" type="string">block.name=Buy Order block.id=BuyOrder block.desc=Opens long position (buy) based on parameters set via properties sheet. Prints error in the log if fails. Use Order Id property to identify each open order and manage them via management blocks. Set ECN Broker=False if you want Stoploss=0 or Takeprofit=0. block.developer=Etasoft block.version=1.0 block.genmode=0 block.builtin=1 block.type=orderbuy block.1.body=double SL = Ask - ~BuyStoploss~*PipValue*Point; block.2.body=if (~BuyStoploss~ == 0) SL = 0; block.3.body=double TP = Ask + ~BuyTakeprofit~*PipValue*Point; block.4.body=if (~BuyTakeprofit~ == 0) TP = 0; block.5.body=int ticket = -1; block.6.body=if (~ECNBroker~) block.7.body= ticket = OrderSend(Symbol(), OP_BUY, ~BuyLots~, Ask, ~BuySlippage~, 0, 0, "~BuyExpertName~", ~BuyOrderId~, 0, ~BuyColor~); block.8.body=else block.9.body= ticket = OrderSend(Symbol(), OP_BUY, ~BuyLots~, Ask, ~BuySlippage~, SL, TP, "~BuyExpertName~", ~BuyOrderId~, 0, ~BuyColor~); block.10.body=if (ticket &gt; -1) block.11.body={ block.12.body= if (~ECNBroker~) block.13.body= { block.14.body= OrderSelect(ticket, SELECT_BY_TICKET); block.15.body= bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, ~BuyColor~); block.16.body= if (ret == false) block.17.body= Print("OrderModify() error - ", ErrorDescription(GetLastError())); block.18.body= } block.19.body= ~next~ block.20.body=} block.21.body=else block.22.body={ block.23.body= Print("OrderSend() error - ", ErrorDescription(GetLastError())); block.24.body=} param.1.name=Lots param.1.id=BuyLots param.1.type=double param.1.scope=external param.1.value=0.1 param.1.hidden=0 param.1.category= param.1.accvalue.list= param.2.name=Slippage (in pips) param.2.id=BuySlippage param.2.type=int param.2.scope=fixed param.2.value=4 param.2.hidden=0 param.2.category= param.2.accvalue.list= param.3.name=Stoploss (in pips) param.3.id=BuyStoploss param.3.type=int param.3.scope=external param.3.value=0 param.3.hidden=0 param.3.category= param.3.accvalue.list= param.4.name=Takeprofit (in pips) param.4.id=BuyTakeprofit param.4.type=int param.4.scope=external param.4.value=0 param.4.hidden=0 param.4.category= param.4.accvalue.list= param.5.name=Expert Name param.5.id=BuyExpertName param.5.type=string param.5.scope=fixed param.5.value=My Expert param.5.hidden=0 param.5.category= param.5.accvalue.list= param.6.name=_Order Id param.6.id=BuyOrderId param.6.type=int param.6.scope=fixed param.6.value=1 param.6.hidden=0 param.6.category= param.6.accvalue.list=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 param.7.name=Color param.7.id=BuyColor param.7.type=int param.7.scope=fixed param.7.value=Blue param.7.hidden=0 param.7.category= param.7.accvalue.list=Green,Red,Blue,Yellow,White param.8.name=ECN or STP Broker param.8.id=ECNBroker param.8.type=bool param.8.scope=fixed param.8.value=true param.8.hidden=0 param.8.category= param.8.accvalue.list=true,false </property> </object> <object type="LogicShape"> <property name="id" type="long">15</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> <property name="relative_position" type="realpoint">350.000000,470.000000</property> <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">86.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">Sell Order</property> <property name="string" type="string">block.name=Sell Order block.id=SellOrder block.desc=Opens short position (sell) based on parameters set via properties sheet. Prints error in the log if fails. Use Order Id property to identify each open order and manage them via management blocks. Set ECN Broker=False if you want Stoploss=0 or Takeprofit=0. block.developer=Etasoft block.version=1.0 block.genmode=0 block.builtin=1 block.type=ordersell block.1.body=double SL = Bid + ~SellStoploss~*PipValue*Point; block.2.body=if (~SellStoploss~ == 0) SL = 0; block.3.body=double TP = Bid - ~SellTakeprofit~*PipValue*Point; block.4.body=if (~SellTakeprofit~ == 0) TP = 0; block.5.body=int ticket = -1; block.6.body=if (~ECNBroker~) block.7.body= ticket = OrderSend(Symbol(), OP_SELL, ~SellLots~, Bid, ~SellSlippage~, 0, 0, "~SellExpertName~", ~SellOrderId~, 0, ~SellColor~); block.8.body=else block.9.body= ticket = OrderSend(Symbol(), OP_SELL, ~SellLots~, Bid, ~SellSlippage~, SL, TP, "~SellExpertName~", ~SellOrderId~, 0, ~SellColor~); block.10.body=if (ticket &gt; -1) block.11.body={ block.12.body= if (~ECNBroker~) block.13.body= { block.14.body= OrderSelect(ticket, SELECT_BY_TICKET); block.15.body= bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, ~SellColor~); block.16.body= if (ret == false) block.17.body= Print("OrderModify() error - ", ErrorDescription(GetLastError())); block.18.body= } block.19.body= ~next~ block.20.body=} block.21.body=else block.22.body={ block.23.body= Print("OrderSend() error - ", ErrorDescription(GetLastError())); block.24.body=} param.1.name=Lots param.1.id=SellLots param.1.type=double param.1.scope=external param.1.value=0.1 param.1.hidden=0 param.1.category= param.1.accvalue.list= param.2.name=Slippage (in pips) param.2.id=SellSlippage param.2.type=int param.2.scope=fixed param.2.value=4 param.2.hidden=0 param.2.category= param.2.accvalue.list= param.3.name=Stoploss (in pips) param.3.id=SellStoploss param.3.type=int param.3.scope=external param.3.value=0 param.3.hidden=0 param.3.category= param.3.accvalue.list= param.4.name=Takeprofit (in pips) param.4.id=SellTakeprofit param.4.type=int param.4.scope=external param.4.value=0 param.4.hidden=0 param.4.category= param.4.accvalue.list= param.5.name=Expert Name param.5.id=SellExpertName param.5.type=string param.5.scope=fixed param.5.value=My Expert param.5.hidden=0 param.5.category= param.5.accvalue.list= param.6.name=_Order Id param.6.id=SellOrderId param.6.type=int param.6.scope=fixed param.6.value=1 param.6.hidden=0 param.6.category= param.6.accvalue.list=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 param.7.name=Color param.7.id=SellColor param.7.type=int param.7.scope=fixed param.7.value=Red param.7.hidden=0 param.7.category= param.7.accvalue.list=Green,Red,Blue,Yellow,White param.8.name=ECN or STP Broker param.8.id=ECNBroker param.8.type=bool param.8.scope=fixed param.8.value=true param.8.hidden=0 param.8.category= param.8.accvalue.list=true,false </property> </object> <object type="LogicShape"> <property name="id" type="long">16</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> <property name="relative_position" type="realpoint">70.000000,460.000000</property> <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">101.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">Close Order</property> <property name="string" type="string">block.name=Close Order block.id=CloseOrder block.desc=Closes orders with specific Order Id and order type. Prints message in the log if fails. block.developer=Etasoft block.version=1.0 block.genmode=0 block.builtin=1 block.type=ordermod block.1.body=int orderstotal = OrdersTotal(); block.2.body=int orders = 0; block.3.body=int ordticket[30][2]; block.4.body=for (int i = 0; i &lt; orderstotal; i++) block.5.body={ block.6.body=OrderSelect(i, SELECT_BY_POS, MODE_TRADES); block.7.body=if (OrderType() != ~OrderType~ || OrderSymbol() != Symbol() || OrderMagicNumber() != ~OrderId~) block.8.body={ block.9.body= continue; block.10.body=} block.11.body=ordticket[orders][0] = OrderOpenTime(); block.12.body=ordticket[orders][1] = OrderTicket(); block.13.body=orders++; block.14.body=} block.15.body=if (orders &gt; 1) block.16.body={ block.17.body=ArrayResize(ordticket,orders); block.18.body=ArraySort(ordticket); block.19.body=} block.20.body=for (i = 0; i &lt; orders; i++) block.21.body={ block.22.body= if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET) == true) block.23.body= { block.24.body= bool ret = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), ~Slippage~, ~Color~); block.25.body= if (ret == false) block.26.body= Print("OrderClose() error - ", ErrorDescription(GetLastError())); block.27.body= } block.28.body=} block.29.body=~next~ param.1.name=Order Type param.1.id=OrderType param.1.type=int param.1.scope=verbatim param.1.value=OP_SELL param.1.hidden=0 param.1.category= param.1.accvalue.list=OP_SELL,OP_BUY param.2.name=_Order Id param.2.id=OrderId param.2.type=int param.2.scope=fixed param.2.value=1 param.2.hidden=0 param.2.category= param.2.accvalue.list=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 param.3.name=Slippage (in pips) param.3.id=Slippage param.3.type=int param.3.scope=fixed param.3.value=4 param.3.hidden=0 param.3.category= param.3.accvalue.list= param.4.name=Color param.4.id=Color param.4.type=int param.4.scope=fixed param.4.value=Red param.4.hidden=0 param.4.category= param.4.accvalue.list=Green,Red,Blue,Yellow,White </property> </object> <object type="LogicShape"> <property name="id" type="long">17</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> <property name="relative_position" type="realpoint">300.000000,380.000000</property> <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">101.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">Close Order</property> <property name="string" type="string">block.name=Close Order block.id=CloseOrder block.desc=Closes orders with specific Order Id and order type. Prints message in the log if fails. block.developer=Etasoft block.version=1.0 block.genmode=0 block.builtin=1 block.type=ordermod block.1.body=int orderstotal = OrdersTotal(); block.2.body=int orders = 0; block.3.body=int ordticket[30][2]; block.4.body=for (int i = 0; i &lt; orderstotal; i++) block.5.body={ block.6.body=OrderSelect(i, SELECT_BY_POS, MODE_TRADES); block.7.body=if (OrderType() != ~OrderType~ || OrderSymbol() != Symbol() || OrderMagicNumber() != ~OrderId~) block.8.body={ block.9.body= continue; block.10.body=} block.11.body=ordticket[orders][0] = OrderOpenTime(); block.12.body=ordticket[orders][1] = OrderTicket(); block.13.body=orders++; block.14.body=} block.15.body=if (orders &gt; 1) block.16.body={ block.17.body=ArrayResize(ordticket,orders); block.18.body=ArraySort(ordticket); block.19.body=} block.20.body=for (i = 0; i &lt; orders; i++) block.21.body={ block.22.body= if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET) == true) block.23.body= { block.24.body= bool ret = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), ~Slippage~, ~Color~); block.25.body= if (ret == false) block.26.body= Print("OrderClose() error - ", ErrorDescription(GetLastError())); block.27.body= } block.28.body=} block.29.body=~next~ param.1.name=Order Type param.1.id=OrderType param.1.type=int param.1.scope=verbatim param.1.value=OP_BUY param.1.hidden=0 param.1.category= param.1.accvalue.list=OP_SELL,OP_BUY param.2.name=_Order Id param.2.id=OrderId param.2.type=int param.2.scope=fixed param.2.value=1 param.2.hidden=0 param.2.category= param.2.accvalue.list=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 param.3.name=Slippage (in pips) param.3.id=Slippage param.3.type=int param.3.scope=fixed param.3.value=4 param.3.hidden=0 param.3.category= param.3.accvalue.list= param.4.name=Color param.4.id=Color param.4.type=int param.4.scope=fixed param.4.value=Red param.4.hidden=0 param.4.category= param.4.accvalue.list=Green,Red,Blue,Yellow,White </property> </object> <object type="LogicShape"> <property name="id" type="long">18</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> #property name="relative_position" type="realpoint">30.000000,360.000000 <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">174.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">If Order Does Not Exist</property> <property name="string" type="string">block.name=If Order Does Not Exist block.id=IfOrderDoesNotExist block.desc=Checks if order with specific Order Id and order type is open. Use this block to check for open or pending orders and attach below other blocks to work with those orders. Example: using this block you can limit number of same orders open at the same time, check if there is already one SELL order, if it does not exist, open SELL order by attaching order opening block below this one. block.developer=Etasoft block.version=1.0 block.genmode=0 block.builtin=1 block.type=ordermgm bool exists = false; for (int i=OrdersTotal()-1; i &gt;= 0; i--) if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType() == ~OrderType~ &amp;&amp; OrderSymbol() == Symbol() &amp;&amp; OrderMagicNumber() == ~OrderId~) { true; } else { Print("OrderSelect() error - ", ErrorDescription(GetLastError())); } if (exists == false) block.16.body={ block.17.body= ~next~ block.18.body=} param.1.name=Order Type param.1.id=OrderType param.1.type=int param.1.scope=fixed param.1.value=OP_BUY param.1.hidden=0 param.1.category= param.1.accvalue.list=OP_SELL,OP_BUY,OP_SELLSTOP,OP_BUYSTOP,OP_SELLLIMIT,OP_BUYLIMIT param.2.name=_Order Id param.2.id=OrderId param.2.type=int param.2.scope=fixed param.2.value=1 param.2.hidden=0 param.2.category= param.2.accvalue.list=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 </property> </object> <object type="RLogicShape"> <property name="id" type="long">19</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> <property name="relative_position" type="realpoint">90.000000,40.000000</property> <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">111.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">On Every Tick</property> <property name="string" type="string">block.name=On Every Tick block.id=OnEveryTick block.desc=Executes connected blocks on every tick. Allows you to setup variable for 5-digit broker support. block.type=onevent block.1.body=if (~FiveDigitBroker~) PipValue = 10; block.2.body=~next~ param.1.name=5-digit Broker param.1.id=FiveDigitBroker param.1.type=bool param.1.scope=fixed param.1.value=false param.1.hidden=0 param.1.category= param.1.accvalue.list=false,true </property> </object> <object type="LogicShape"> <property name="id" type="long">1</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> <property name="relative_position" type="realpoint">10.000000,270.000000</property> <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">176.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">Technical Analysis haut</property> <property name="string" type="string">block.name=Technical Analysis haut block.id=TechnicalAnalysis block.desc=Allows you to compare two technical indicators or constant values. If result is TRUE other blocks connected to this block are executed. If you need to compare few sets of indicators simply chain one Technical Analysis block after the other. Example: you need to make sure fast moving average is above slow moving average and momentum indicator is above 50. Setup one Technical Analysis block to compare moving averages and join it to second Technical Analysis block where you compare momentum indicator with value 50. block.developer=Etasoft block.version=1.0 block.genmode=0 block.builtin=1 block.type=signal block.1.body=if (~Function1~ ~Compare~ ~Function2~) block.2.body={ block.3.body= ~next~ block.4.body=} param.1.name=_First Function param.1.id=Function1 param.1.type=function param.1.scope=verbatim param.1.value=iCustom(NULL, NULL, "BBands Stops",20,2,1,1,1,1000,0,1) param.1.hidden=0 param.1.category= param.1.accvalue.list= param.2.name=Compare param.2.id=Compare param.2.type=string param.2.scope=verbatim param.2.value=&gt; param.2.hidden=0 param.2.category= param.2.accvalue.list=&gt;,&lt;,==,&gt;=,&lt;=,!= param.3.name=Second Function param.3.id=Function2 param.3.type=function param.3.scope=verbatim param.3.value=0 param.3.hidden=0 param.3.category= param.3.accvalue.list= </property> </object> <object type="LogicShape"> <property name="id" type="long">13</property> <property name="accepted_connections" type="arraystring"> <item>All</item> </property> <property name="accepted_src_neighbours" type="arraystring"> <item>All</item> </property> <property name="accepted_trg_neighbours" type="arraystring"> <item>All</item> </property> <property name="relative_position" type="realpoint">260.000000,260.000000</property> <property name="halign" type="long">2</property> <property name="valign" type="long">1</property> <property name="vborder" type="double">20.000000</property> <property name="size" type="realpoint">173.000000,33.000000</property> <property name="font" type="font">arial 12</property> <property name="text" type="string">Technical Analysis bas</property> <property name="string" type="string">block.name=Technical Analysis bas block.id=TechnicalAnalysis block.desc=Allows you to compare two technical indicators or constant values. If result is TRUE other blocks connected to this block are executed. If you need to compare few sets of indicators simply chain one Technical Analysis block after the other. Example: you need to make sure fast moving average is above slow moving average and momentum indicator is above 50. Setup one Technical Analysis block to compare moving averages and join it to second Technical Analysis block where you compare momentum indicator with value 50. block.developer=Etasoft block.version=1.0 block.genmode=0 block.builtin=1 block.type=signal block.1.body=if (~Function1~ ~Compare~ ~Function2~) block.2.body={ block.3.body= ~next~ block.4.body=} param.1.name=_First Function param.1.id=Function1 param.1.type=function param.1.scope=verbatim param.1.value=iCustom(NULL, NULL, "BBands Stops",20,2,1,1,1,1000,1,1) param.1.hidden=0 param.1.category= param.1.accvalue.list= param.2.name=Compare param.2.id=Compare param.2.type=string param.2.scope=verbatim param.2.value=&gt; param.2.hidden=0 param.2.category= param.2.accvalue.list=&gt;,&lt;,==,&gt;=,&lt;=,!= param.3.name=Second Function param.3.id=Function2 param.3.type=function param.3.scope=verbatim param.3.value=0 param.3.hidden=0 param.3.category= param.3.accvalue.list= </property> </object> </chart> </canvas>
    Modifié le 2013-05-23 17:54:44 par AliX
  • megafly

    Salut,
    Il me semble qu'il y a une erreur à la ligne 143, mais ca demande confirmation
  • fog

    je pense que tu devrait remplacer le ou || par un else if

    Code
    if(ema8>ema24 && ema8Prev<ema24Prev && (OpenedOrder==2 || OpenedOrder==0)) //Croisement à la hausse { CloseTrade(); OpenBuy(); } quelque chose comme ça: if(ema8>ema24 && ema8Prev<ema24Prev && (OpenedOrder==2 )) //Croisement à la hausse { CloseTrade(); OpenBuy(); } else if(ema8>ema24 && ema8Prev<ema24Prev && (OpenedOrder==0 )) //Croisement à la hausse { CloseTrade(); OpenBuy(); }

    à vérifier
    Modifié le 2013-05-23 17:55:35 par AliX
  • ccoulaud

    en faite c'est la derniere lgne que me pose probleme ,un "mauvais return3?
    me marque
    \end of programm- ending bracket
  • ccoulaud

    j'ai reussi a le faire c'est assez simple en faite ^^