Indicators: Heikin Ashi Lines - page 2

 
Roberto Jacobs #: I feel your code is very good and powerful. I didn't download mq5. With the code for MT4 that you shared, I just copy and paste it into MetaEditor MQL5 and save as mq5, and everything runs smoothly.
Thank you for the explanation and your praise! 🙏
 
Fernando Carreiro #:
Thank you for the explanation and your praise! 🙏

Thank you for being willing to share your code.

 
Good Morning this code is repeating the order, why? i am getting mad. //+------------------------------------------------------------------+ //| mmf chatgpt 5.mq5 | //| Copyright 2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| mmf chatgpt.mq5 | //| Copyright 2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnTick() { MqlRates PriceInfo[]; ArraySetAsSeries(PriceInfo, true); int Data = CopyRates(Symbol(), PERIOD_M30, 0, Bars(Symbol(), Period()), PriceInfo); double UpperBandArray[]; double LowerBandArray[]; MqlTradeRequest MYREQUEST; MqlTradeResult RESULT; int EnvelopesIdentify = iEnvelopes(_Symbol, _Period, 100, 0, MODE_EMA, PRICE_CLOSE, 0.7); CopyBuffer(EnvelopesIdentify, 0, 0, 1, UpperBandArray); CopyBuffer(EnvelopesIdentify, 1, 0, 1, LowerBandArray); double UpperBandValue = NormalizeDouble(UpperBandArray[0], 6); double LowerBandValue = NormalizeDouble(LowerBandArray[0], 6); double ASK = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK),_Digits); double BID = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_BID),_Digits); { if (OrdersTotal() == 0 ) { } if( PriceInfo[0].close < LowerBandValue) { MYREQUEST.action = TRADE_ACTION_DEAL; MYREQUEST.type = ORDER_TYPE_BUY; MYREQUEST.symbol = _Symbol; MYREQUEST.volume = 0.01; MYREQUEST.type_filling = ORDER_FILLING_IOC; MYREQUEST.price = SymbolInfoDouble(_Symbol,SYMBOL_ASK); MYREQUEST.deviation = 10; OrderSend(MYREQUEST, RESULT); } else if (OrdersTotal() == 0 && PriceInfo[0].close > UpperBandValue) { MYREQUEST.action = TRADE_ACTION_DEAL; MYREQUEST.type = ORDER_TYPE_SELL; MYREQUEST.symbol = _Symbol; MYREQUEST.volume = 0.01; MYREQUEST.type_filling = ORDER_FILLING_IOC; MYREQUEST.price = SymbolInfoDouble(_Symbol,SYMBOL_BID); MYREQUEST.deviation = 10; OrderSend(MYREQUEST, RESULT); } } } //+------------------------------------------------------------------+