Syntax Highlighting für MQL4 gibt es bedauerlicherweise nicht. Deshalb dachten wir uns, wie nehmen C als Referenz. Wie gefällt euch das? MQLC[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color][color= #666666; font-style: italic;]//| Moving Average.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= #339933;]#define MAGICMA 20050610[/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] MaximumRisk [color= #339933;]=[/color] [color=#800080;]0.02[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] DecreaseFact [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color][color= #666666; font-style: italic;]//| Moving Average.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= #339933;]#define MAGICMA 20050610[/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] MaximumRisk [color= #339933;]=[/color] [color=#800080;]0.02[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] DecreaseFactor [color= #339933;]=[/color] [color= #0000dd;]3[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] MovingPeriod [color= #339933;]=[/color] [color= #0000dd;]12[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]extern[/color] [color= #993333;]double[/color] MovingShift [color= #339933;]=[/color] [color= #0000dd;]6[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #666666; font-style: italic;]//| Calculate open positions |[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #993333;]int[/color] CalculateCurrentOrders[color= #009900;]([/color][color= #993333;]string[/color] symbol[color= #009900;])[/color] [color= #009900;]{[/color] [color= #993333;]int[/color] buys[color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;],[/color]sells[color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//----[/color] [color= #b1b100;]for[/color][color= #009900;]([/color][color= #993333;]int[/color] i[color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]i[color= #339933;] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderSelect[color= #009900;]([/color]i[color= #339933;],[/color]SELECT_BY_POS[color= #339933;],[/color]MODE_TRADES[color= #009900;])[/color][color= #339933;]==[/color][color= #000000; font-weight: bold;]false[/color][color= #009900;])[/color] [color= #000000; font-weight: bold;]break[/color][color= #339933;];[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderSymbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]==[/color]Symbol[color= #009900;]([/color][color= #009900;])[/color] [color= #339933;]&&[/color] OrderMagicNumber[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]==[/color]MAGICMA[color= #009900;])[/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] buys[color= #339933;]++;[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderType[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]==[/color]OP_SELL[color= #009900;])[/color] sells[color= #339933;]++;[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//---- return orders volume[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]buys[color= #339933;]>[/color][color= #0000dd;]0[/color][color= #009900;])[/color] [color= #b1b100;]return[/color][color= #009900;]([/color]buys[color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]else[/color] [color= #b1b100;]return[/color][color= #009900;]([/color][color= #339933;]-[/color]sells[color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #666666; font-style: italic;]//| Calculate optimal lot size |[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #993333;]double[/color] LotsOptimized[color= #009900;]([/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #993333;]double[/color] lot[color= #339933;]=[/color]Lots[color= #339933;];[/color] [color= #993333;]int[/color] orders[color= #339933;]=[/color]HistoryTotal[color= #009900;]([/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// history orders total[/color] [color= #993333;]int[/color] losses[color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// number of losses orders without a break[/color] [color= #666666; font-style: italic;]//---- select lot size[/color] lot[color= #339933;]=[/color]NormalizeDouble[color= #009900;]([/color]AccountFreeMargin[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]*[/color]MaximumRisk[color= #339933;]/[/color][color=#800080;]1000.0[/color][color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//---- calcuulate number of losses orders without a break[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]DecreaseFactor[color= #339933;]>[/color][color= #0000dd;]0[/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]for[/color][color= #009900;]([/color][color= #993333;]int[/color] i[color= #339933;]=[/color]orders[color= #339933;]-[/color][color= #0000dd;]1[/color][color= #339933;];[/color]i[color= #339933;]>=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]i[color= #339933;]--[/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderSelect[color= #009900;]([/color]i[color= #339933;],[/color]SELECT_BY_POS[color= #339933;],[/color]MODE_HISTORY[color= #009900;])[/color][color= #339933;]==[/color][color= #000000; font-weight: bold;]false[/color][color= #009900;])[/color] [color= #009900;]{[/color] Print[color= #009900;]([/color][color= #ff0000;]"Error in history!"[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]break[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderSymbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]!=[/color]Symbol[color= #009900;]([/color][color= #009900;])[/color] [color= #339933;]||[/color] OrderType[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]>[/color]OP_SELL[color= #009900;])[/color] [color= #b1b100;]continue[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//----[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderProfit[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]>[/color][color= #0000dd;]0[/color][color= #009900;])[/color] [color= #000000; font-weight: bold;]break[/color][color= #339933;];[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderProfit[color= #009900;]([/color][color= #009900;])[/color][color= #339933;] [color= #009900;]}[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]losses[color= #339933;]>[/color][color= #0000dd;]1[/color][color= #009900;])[/color] lot[color= #339933;]=[/color]NormalizeDouble[color= #009900;]([/color]lot[color= #339933;]-[/color]lot[color= #339933;]*[/color]losses[color= #339933;]/[/color]DecreaseFactor[color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//---- return lot size[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]lot[color= #339933;] [color= #b1b100;]return[/color][color= #009900;]([/color]lot[color= #009900;])[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #666666; font-style: italic;]//| Check for open order conditions |[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #993333;]void[/color] CheckForOpen[color= #009900;]([/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #993333;]double[/color] ma[color= #339933;];[/color] [color= #993333;]int[/color] res[color= #339933;];[/color] [color= #666666; font-style: italic;]//---- go trading only for first tiks of new bar[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Volume[color= #009900;][[/color][color= #0000dd;]0[/color][color= #009900;]][/color][color= #339933;]>[/color][color= #0000dd;]1[/color][color= #009900;])[/color] [color= #b1b100;]return[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//---- get Moving Average [/color] ma[color= #339933;]=[/color]iMA[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]MovingPeriod[color= #339933;],[/color]MovingShift[color= #339933;],[/color]MODE_SMA[color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//---- sell conditions[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Open[color= #009900;][[/color][color= #0000dd;]1[/color][color= #009900;]][/color][color= #339933;]>[/color]ma [color= #339933;]&&[/color] Close[color= #009900;][[/color][color= #0000dd;]1[/color][color= #009900;]][/color][color= #339933;] [color= #009900;]{[/color] res[color= #339933;]=[/color]OrderSend[color= #009900;]([/color]Symbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]OP_SELL[color= #339933;],[/color]LotsOptimized[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]Bid[color= #339933;],[/color][color= #0000dd;]3[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #ff0000;]""[/color][color= #339933;],[/color]MAGICMA[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]Red[color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//---- buy conditions[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Open[color= #009900;][[/color][color= #0000dd;]1[/color][color= #009900;]][/color][color= #339933;][/color]ma[color= #009900;])[/color] [color= #009900;]{[/color] res[color= #339933;]=[/color]OrderSend[color= #009900;]([/color]Symbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]OP_BUY[color= #339933;],[/color]LotsOptimized[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]Ask[color= #339933;],[/color][color= #0000dd;]3[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #ff0000;]""[/color][color= #339933;],[/color]MAGICMA[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]Blue[color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]return[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//----[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #666666; font-style: italic;]//| Check for close order conditions |[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #993333;]void[/color] CheckForClose[color= #009900;]([/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #993333;]double[/color] ma[color= #339933;];[/color] [color= #666666; font-style: italic;]//---- go trading only for first tiks of new bar[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Volume[color= #009900;][[/color][color= #0000dd;]0[/color][color= #009900;]][/color][color= #339933;]>[/color][color= #0000dd;]1[/color][color= #009900;])[/color] [color= #b1b100;]return[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//---- get Moving Average [/color] ma[color= #339933;]=[/color]iMA[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]MovingPeriod[color= #339933;],[/color]MovingShift[color= #339933;],[/color]MODE_SMA[color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//----[/color] [color= #b1b100;]for[/color][color= #009900;]([/color][color= #993333;]int[/color] i[color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]i[color= #339933;] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderSelect[color= #009900;]([/color]i[color= #339933;],[/color]SELECT_BY_POS[color= #339933;],[/color]MODE_TRADES[color= #009900;])[/color][color= #339933;]==[/color][color= #000000; font-weight: bold;]false[/color][color= #009900;])[/color] [color= #000000; font-weight: bold;]break[/color][color= #339933;];[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderMagicNumber[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]!=[/color]MAGICMA [color= #339933;]||[/color] OrderSymbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]!=[/color]Symbol[color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color] [color= #b1b100;]continue[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//---- check order type [/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderType[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]==[/color]OP_BUY[color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Open[color= #009900;][[/color][color= #0000dd;]1[/color][color= #009900;]][/color][color= #339933;]>[/color]ma [color= #339933;]&&[/color] Close[color= #009900;][[/color][color= #0000dd;]1[/color][color= #009900;]][/color][color= #339933;] [color= #000000; font-weight: bold;]break[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]OrderType[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]==[/color]OP_SELL[color= #009900;])[/color] [color= #009900;]{[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Open[color= #009900;][[/color][color= #0000dd;]1[/color][color= #009900;]][/color][color= #339933;][/color]ma[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]White[color= #009900;])[/color][color= #339933;];[/color] [color= #000000; font-weight: bold;]break[/color][color= #339933;];[/color] [color= #009900;]}[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//----[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #666666; font-style: italic;]//| Start function |[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color] [color= #993333;]void[/color] start[color= #009900;]([/color][color= #009900;])[/color] [color= #009900;]{[/color] [color= #666666; font-style: italic;]//---- check for history and trading[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]Bars[color= #339933;] [color= #666666; font-style: italic;]//---- calculate open orders by current symbol[/color] [color= #b1b100;]if[/color][color= #009900;]([/color]CalculateCurrentOrders[color= #009900;]([/color]Symbol[color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color][color= #339933;]==[/color][color= #0000dd;]0[/color][color= #009900;])[/color] CheckForOpen[color= #009900;]([/color][color= #009900;])[/color][color= #339933;];[/color] [color= #b1b100;]else[/color] CheckForClose[color= #009900;]([/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]//----[/color] [color= #009900;]}[/color] [color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color]