MQLC[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color][color= #666666; font-style: italic;]//| MACD Sample.mq4 |[/color] [color= #666666; font-style: italic;]//| Copyright © 2005, MetaQuotes Software Corp. |[/color] [color= #666666; font-style: italic;]//| http://www.metaquotes.net/ |[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] TakeProfit [color= #339933;]=[/color] [color= #0000dd;]50[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] Lots [color= #339933;]=[/color] [color=#800080;]0.1[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] TrailingStop [color= #339933;]=[/color] [color= #0000dd;]30[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] MACDOpenLevel[color= #339933;]=[/color][color= #0000dd;]3[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color][color= #666666; font-style: italic;]//| MACD Sample.mq4 |[/color] [color= #666666; font-style: italic;]//| Copyright © 2005, MetaQuotes Software Corp. |[/color] [color= #666666; font-style: italic;]//| http://www.metaquotes.net/ |[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] TakeProfit [color= #339933;]=[/color] [color= #0000dd;]50[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] Lots [color= #339933;]=[/color] [color=#800080;]0.1[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] TrailingStop [color= #339933;]=[/color] [color= #0000dd;]30[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] MACDOpenLevel[color= #339933;]=[/color][color= #0000dd;]3[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] MACDCloseLevel[color= #339933;]=[/color][color= #0000dd;]2[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] MATrendPeriod[color= #339933;]=[/color][color= #0000dd;]26[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #666666; font-style: italic;]//| |[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #993333;]int[/color] start[color= #009900;]([/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #993333;]double[/color] MacdCurrent[color= #339933;],[/color] MacdPrevious[color= #339933;],[/color] SignalCurrent[color= #339933;];[/color] [color= #993333;]double[/color] SignalPrevious[color= #339933;],[/color] MaCurrent[color= #339933;],[/color] MaPrevious[color= #339933;];[/color] [color= #993333;]int[/color] cnt[color= #339933;],[/color] ticket[color= #339933;],[/color] total[color= #339933;];[/color] [color= #666666; font-style: italic;]// initial data checks[/color] [color= #666666; font-style: italic;]// it is important to make sure that the expert works with a normal[/color] [color= #666666; font-style: italic;]// chart and the user did not make any mistakes setting external [/color] [color= #666666; font-style: italic;]// variables (Lots, StopLoss, TakeProfit, [/color] [color= #666666; font-style: italic;]// TrailingStop) in our case, we check TakeProfit[/color] [color= #666666; font-style: italic;]// on a chart of less than 100 bars[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Bars[color= #339933;] [color= #009900;]{[/color] Print[color= #009900;]([/color][color= #ff0000;]"bars less than 100"[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]TakeProfit[color= #339933;] [color= #009900;]{[/color] Print[color= #009900;]([/color][color= #ff0000;]"TakeProfit less than 10"[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// check TakeProfit[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]// to simplify the coding and speed up access[/color] [color= #666666; font-style: italic;]// data are put into internal variables[/color] MacdCurrent[color= #339933;]=[/color]iMACD[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #0000dd;]12[/color][color= #339933;],[/color][color= #0000dd;]26[/color][color= #339933;],[/color][color= #0000dd;]9[/color][color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color]MODE_MAIN[color= #339933;],[/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] MacdPrevious[color= #339933;]=[/color]iMACD[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #0000dd;]12[/color][color= #339933;],[/color][color= #0000dd;]26[/color][color= #339933;],[/color][color= #0000dd;]9[/color][color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color]MODE_MAIN[color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color] SignalCurrent[color= #339933;]=[/color]iMACD[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #0000dd;]12[/color][color= #339933;],[/color][color= #0000dd;]26[/color][color= #339933;],[/color][color= #0000dd;]9[/color][color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color]MODE_SIGNAL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] SignalPrevious[color= #339933;]=[/color]iMACD[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #0000dd;]12[/color][color= #339933;],[/color][color= #0000dd;]26[/color][color= #339933;],[/color][color= #0000dd;]9[/color][color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color]MODE_SIGNAL[color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color] MaCurrent[color= #339933;]=[/color]iMA[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]MATrendPeriod[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]MODE_EMA[color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] MaPrevious[color= #339933;]=[/color]iMA[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]MATrendPeriod[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]MODE_EMA[color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color] total[color= #339933;]=[/color]OrdersTotal[color= #009900;]([/color][color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]total[color= #339933;] [color= #009900;]{[/color] [color= #666666; font-style: italic;]// no opened orders identified[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]AccountFreeMargin[color= #009900;]([/color][color= #009900;])[/color][color= #339933;] [color= #009900;]{[/color] Print[color= #009900;]([/color][color= #ff0000;]"We have no money. Free Margin = "[/color][color= #339933;],[/color] AccountFreeMargin[color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]// check for long position (BUY) possibility[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]MacdCurrent[color= #339933;][/color]SignalCurrent [color= #339933;]&&[/color] MacdPrevious[color= #339933;] MathAbs[color= #009900;]([/color]MacdCurrent[color= #009900;])[/color][color= #339933;]>[/color][color= #009900;]([/color]MACDOpenLevel[color= #339933;]*[/color]Point[color= #009900;])[/color] [color= #339933;]&&[/color] MaCurrent[color= #339933;]>[/color]MaPrevious[color= #009900;])[/color] [color= #009900;]{[/color] ticket[color= #339933;]=[/color]OrderSend[color= #009900;]([/color]Symbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]OP_BUY[color= #339933;],[/color]Lots[color= #339933;],[/color]Ask[color= #339933;],[/color][color= #0000dd;]3[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]Ask[color= #339933;]+[/color]TakeProfit[color= #339933;]*[/color]Point[color= #339933;],[/color][color= #ff0000;]"macd sample"[/color][color= #339933;],[/color][color= #0000dd;]16384[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]Green[color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]ticket[color= #339933;]>[/color][color= #0000dd;]0[/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderSelect[color= #009900;]([/color]ticket[color= #339933;],[/color]SELECT_BY_TICKET[color= #339933;],[/color]MODE_TRADES[color= #009900;])[/color][color= #009900;])[/color] Print[color= #009900;]([/color][color= #ff0000;]"BUY order opened : "[/color][color= #339933;],[/color]OrderOpenPrice[color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #b1b100;]else[/color] Print[color= #009900;]([/color][color= #ff0000;]"Error opening BUY order : "[/color][color= #339933;],[/color]GetLastError[color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]// check for short position (SELL) possibility[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]MacdCurrent[color= #339933;]>[/color][color= #0000dd;]0[/color] [color= #339933;]&&[/color] MacdCurrent[color= #339933;][/color]SignalPrevious [color= #339933;]&&[/color] MacdCurrent[color= #339933;]>[/color][color= #009900;]([/color]MACDOpenLevel[color= #339933;]*[/color]Point[color= #009900;])[/color] [color= #339933;]&&[/color] MaCurrent[color= #339933;] [color= #009900;]{[/color] ticket[color= #339933;]=[/color]OrderSend[color= #009900;]([/color]Symbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]OP_SELL[color= #339933;],[/color]Lots[color= #339933;],[/color]Bid[color= #339933;],[/color][color= #0000dd;]3[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]Bid[color= #339933;]-[/color]TakeProfit[color= #339933;]*[/color]Point[color= #339933;],[/color][color= #ff0000;]"macd sample"[/color][color= #339933;],[/color][color= #0000dd;]16384[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]Red[color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]ticket[color= #339933;]>[/color][color= #0000dd;]0[/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderSelect[color= #009900;]([/color]ticket[color= #339933;],[/color]SELECT_BY_TICKET[color= #339933;],[/color]MODE_TRADES[color= #009900;])[/color][color= #009900;])[/color] Print[color= #009900;]([/color][color= #ff0000;]"SELL order opened : "[/color][color= #339933;],[/color]OrderOpenPrice[color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #b1b100;]else[/color] Print[color= #009900;]([/color][color= #ff0000;]"Error opening SELL order : "[/color][color= #339933;],[/color]GetLastError[color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]// it is important to enter the market correctly, [/color] [color= #666666; font-style: italic;]// but it is more important to exit it correctly... [/color] [color= #b1b100;]for[/color][color= #009900;]([/color]cnt[color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]cnt[color= #339933;] [color= #009900;]{[/color] OrderSelect[color= #009900;]([/color]cnt[color= #339933;],[/color] SELECT_BY_POS[color= #339933;],[/color] MODE_TRADES[color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderType[color= #009900;]([/color][color= #009900;])[/color][color= #339933;] OrderSymbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]==[/color]Symbol[color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color] [color= #666666; font-style: italic;]// check for symbol[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderType[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]==[/color]OP_BUY[color= #009900;])[/color] [color= #666666; font-style: italic;]// long position is opened[/color] [color= #009900;]{[/color] [color= #666666; font-style: italic;]// should it be closed?[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]MacdCurrent[color= #339933;]>[/color][color= #0000dd;]0[/color] [color= #339933;]&&[/color] MacdCurrent[color= #339933;][/color]SignalPrevious [color= #339933;]&&[/color] MacdCurrent[color= #339933;]>[/color][color= #009900;]([/color]MACDCloseLevel[color= #339933;]*[/color]Point[color= #009900;])[/color][color= #009900;])[/color] [color= #009900;]{[/color] OrderClose[color= #009900;]([/color]OrderTicket[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]OrderLots[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]Bid[color= #339933;],[/color][color= #0000dd;]3[/color][color= #339933;],[/color]Violet[color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// close position[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// exit[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]// check for trailing stop[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]TrailingStop[color= #339933;]>[/color][color= #0000dd;]0[/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Bid[color= #339933;]-[/color]OrderOpenPrice[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]>[/color]Point[color= #339933;]*[/color]TrailingStop[color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderStopLoss[color= #009900;]([/color][color= #009900;])[/color][color= #339933;] [color= #009900;]{[/color] OrderModify[color= #009900;]([/color]OrderTicket[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]OrderOpenPrice[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]Bid[color= #339933;]-[/color]Point[color= #339933;]*[/color]TrailingStop[color= #339933;],[/color]OrderTakeProfit[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]Green[color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #b1b100;]else[/color] [color= #666666; font-style: italic;]// go to short position[/color] [color= #009900;]{[/color] [color= #666666; font-style: italic;]// should it be closed?[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]MacdCurrent[color= #339933;][/color]SignalCurrent [color= #339933;]&&[/color] MacdPrevious[color= #339933;][/color][color= #009900;]([/color]MACDCloseLevel[color= #339933;]*[/color]Point[color= #009900;])[/color][color= #009900;])[/color] [color= #009900;]{[/color] OrderClose[color= #009900;]([/color]OrderTicket[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]OrderLots[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]Ask[color= #339933;],[/color][color= #0000dd;]3[/color][color= #339933;],[/color]Violet[color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// close position[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// exit[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]// check for trailing stop[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]TrailingStop[color= #339933;]>[/color][color= #0000dd;]0[/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color][color= #009900;]([/color]OrderOpenPrice[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]-[/color]Ask[color= #009900;])[/color][color= #339933;]>[/color][color= #009900;]([/color]Point[color= #339933;]*[/color]TrailingStop[color= #009900;])[/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color][color= #009900;]([/color]OrderStopLoss[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]>[/color][color= #009900;]([/color]Ask[color= #339933;]+[/color]Point[color= #339933;]*[/color]TrailingStop[color= #009900;])[/color][color= #009900;])[/color] [color= #339933;]||[/color] [color= #009900;]([/color]OrderStopLoss[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]==[/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #009900;])[/color] [color= #009900;]{[/color] OrderModify[color= #009900;]([/color]OrderTicket[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]OrderOpenPrice[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]Ask[color= #339933;]+[/color]Point[color= #339933;]*[/color]TrailingStop[color= #339933;],[/color]OrderTakeProfit[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]Red[color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]// the end.[/color]