I have Rsi Alert Code i need to when my receive my Alert that time Place a order Each time Help me Anyone I will attach Alert Code
Thanks In Advance
Simple and the easy solution for you is Freelance section.
Thanks for your reply
anyone help me, am write some code but error
#property link "https://www.earnforex.com/metatrader-indicators/moving-average-crossover-alert/" #property version "1.02" #property strict #property copyright "EarnForex.com - 2020-2021" #property description "The RSI Indicator With Alert" #property description " " #property description "WARNING : You use this software at your own risk." #property description "The creator of these plugins cannot be held responsible for damage or loss." #property description " " #property description "Find More on EarnForex.com" #property icon "\\Files\\EF-Icon-64x64px.ico" #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 #property indicator_color1 Blue #property indicator_type1 DRAW_LINE #property indicator_width1 1 #property indicator_label1 "RSI" #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_level1 30 #property indicator_level2 70 #include <Trade\Trade.mqh> #include <MQLTA ErrorHandling.mqh> #include <MQLTA Utils.mqh> enum ENUM_TRADE_SIGNAL{ SIGNAL_BUY=1, //BUY SIGNAL_SELL=-1, //SELL SIGNAL_NEUTRAL=0 //NEUTRAL }; enum ENUM_CANDLE_TO_CHECK{ CURRENT_CANDLE=0, //CURRENT CANDLE CLOSED_CANDLE=1 //PREVIOUS CANDLE }; enum ENUM_ALERT_SIGNAL{ RSI_BREAK_OUT=0, //RSI BREAKS OUT THE LIMITS RSI_COMES_IN=1 //RSI RETURNS IN THE LIMITS }; input string Comment1="========================"; //MQLTA RSI With Alert input string IndicatorName="MQLTA-RSIWA"; //Indicator Short Name input string Comment2="========================"; //Indicator Parameters input int RSIPeriod=14; //RSI Period input int RSIHighLimit=70; //RSI High Limit input int RSILowLimit=30; //RSI Low Limit input ENUM_APPLIED_PRICE RSIAppliedPrice=PRICE_CLOSE; //RSI Applied Price input ENUM_ALERT_SIGNAL AlertSignal=RSI_COMES_IN; //Alert Signal When input ENUM_CANDLE_TO_CHECK CandleToCheck=CURRENT_CANDLE; //Candle To Use For Analysis input int BarsToScan=500; //Number Of Candles To Analyse input int MagicNumber=10001; input string Comment_3="===================="; //Notification Options input bool Orders=true; input bool EnableNotify=false; //Enable Notifications Feature input bool SendAlert=true; //Send Alert Notification input bool SendApp=true; //Send Notification to Mobile input bool SendEmail=true; //Send Notification via Email input int WaitTimeNotify=5; //Wait time between notifications (Minutes) input double Lots =0.1; input string Comment_4="===================="; //Drawing Options input bool EnableDrawArrows=true; //Draw Signal Arrows input int ArrowBuy=241; //Buy Arrow Code input int ArrowSell=242; //Sell Arrow Code input int ArrowSize=3; //Arrow Size (1-5) input color ArrowBuyColor=clrGreen; //Buy Arrow Color input color ArrowSellColor=clrRed; //Sell Arrow Color double BufferMain[]; int BufferMainHandle; double Open[],Close[],High[],Low[]; datetime Time[]; datetime LastNotificationTime; int Shift=0; int OnInit(void){ IndicatorSetString(INDICATOR_SHORTNAME,IndicatorName); OnInitInitialization(); if(!OnInitPreChecksPass()){ return(INIT_FAILED); } InitialiseHandles(); InitialiseBuffers(); return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]){ bool IsNewCandle=CheckIfNewCandle(); int i,pos,upTo; pos=0; if(prev_calculated==0 || IsNewCandle) upTo=BarsToScan-1; else upTo=0; if(IsStopped()) return(0); if(CopyBuffer(BufferMainHandle,0,0,upTo+1,BufferMain)<=0){ Print("Failed to create the Indicator! Error ",GetLastErrorText(GetLastError())," - ",GetLastError()); return(0); } for(i=pos; i<=upTo && !IsStopped(); i++){ Open[i]=iOpen(Symbol(),PERIOD_CURRENT,i); Low[i]=iLow(Symbol(),PERIOD_CURRENT,i); High[i]=iHigh(Symbol(),PERIOD_CURRENT,i); Close[i]=iClose(Symbol(),PERIOD_CURRENT,i); Time[i]=iTime(Symbol(),PERIOD_CURRENT,i); } if(IsNewCandle || prev_calculated==0){ if(EnableDrawArrows) DrawArrows(); } if(EnableDrawArrows) DrawArrow(0); if(EnableNotify) NotifyHit(); if(Orders) void Createorder(); ------------------------> order placed every new candles return(rates_total); } void OnDeinit(const int reason){ CleanChart(); } void OnInitInitialization(){ LastNotificationTime=TimeCurrent(); Shift=CandleToCheck; } bool OnInitPreChecksPass(){ if(RSIPeriod<=0 || RSIHighLimit>100 || RSIHighLimit<0 || RSILowLimit>100 || RSILowLimit<0 || RSILowLimit>RSIHighLimit){ Print("Wrong input parameter"); return false; } if(Bars(Symbol(),PERIOD_CURRENT)<RSIPeriod){ Print("Not Enough Historical Candles"); return false; } return true; } void CleanChart(){ int Window=0; for(int i=ObjectsTotal(ChartID(),Window,-1)-1;i>=0;i--){ if(StringFind(ObjectName(0,i),IndicatorName,0)>=0){ ObjectDelete(0,ObjectName(0,i)); } } } void InitialiseHandles(){ BufferMainHandle=iRSI(Symbol(),PERIOD_CURRENT,RSIPeriod,RSIAppliedPrice); ArrayResize(Open,BarsToScan); ArrayResize(High,BarsToScan); ArrayResize(Low,BarsToScan); ArrayResize(Close,BarsToScan); ArrayResize(Time,BarsToScan); } void InitialiseBuffers(){ IndicatorSetInteger(INDICATOR_DIGITS,_Digits); ArraySetAsSeries(BufferMain,true); SetIndexBuffer(0,BufferMain,INDICATOR_DATA); IndicatorSetDouble(INDICATOR_LEVELVALUE,indicator_level1,(double)RSILowLimit); IndicatorSetDouble(INDICATOR_LEVELVALUE,indicator_level2,(double)RSIHighLimit); } datetime NewCandleTime=TimeCurrent(); bool CheckIfNewCandle(){ if(NewCandleTime==iTime(Symbol(),0,0)) return false; else{ NewCandleTime=iTime(Symbol(),0,0); return true; } } //Check if it is a trade Signla 0 - Neutral, 1 - Buy, -1 - Sell ENUM_TRADE_SIGNAL IsSignal(int i){ int j=i+Shift; if(AlertSignal==RSI_BREAK_OUT){ if(BufferMain[j+1]<RSIHighLimit && BufferMain[j]>RSIHighLimit) return SIGNAL_BUY; if(BufferMain[j+1]>RSILowLimit && BufferMain[j]<RSILowLimit) return SIGNAL_SELL; } if(AlertSignal==RSI_COMES_IN){ if(BufferMain[j+1]<RSILowLimit && BufferMain[j]>RSILowLimit) return SIGNAL_BUY; if(BufferMain[j+1]>RSIHighLimit && BufferMain[j]<RSIHighLimit) return SIGNAL_SELL; } return SIGNAL_NEUTRAL; } datetime LastNotification=TimeCurrent()-WaitTimeNotify*60; void NotifyHit(){ if(!EnableNotify || TimeCurrent()<(LastNotification+WaitTimeNotify*60)) return; if(!SendAlert && !SendApp && !SendEmail) return; if(Time[0]==LastNotificationTime) return; ENUM_TRADE_SIGNAL Signal=IsSignal(0); if(Signal==SIGNAL_NEUTRAL) return; string EmailSubject=IndicatorName+" "+Symbol()+" Notification "; string EmailBody="\r\n"+AccountCompany()+" - "+AccountName()+" - "+IntegerToString(AccountNumber())+"\r\n\r\n"+IndicatorName+" Notification for "+Symbol()+"\r\n\r\n"; string AlertText=IndicatorName+" - "+Symbol()+" Notification\r\n"; string AppText=AccountCompany()+" - "+AccountName()+" - "+IntegerToString(AccountNumber())+" - "+IndicatorName+" - "+Symbol()+" - "; string Text=""; if(Signal!=SIGNAL_NEUTRAL){ Text+="The RSI indicator triggered a signal"; } EmailBody+=Text+"\r\n\r\n"; AlertText+=Text+"\r\n"; AppText+=Text+""; if(SendAlert) Alert(AlertText); if(SendEmail){ if(!SendMail(EmailSubject,EmailBody)) Print("Error sending email "+IntegerToString(GetLastError())); } if(SendApp){ if(!SendNotification(AppText)) Print("Error sending notification "+IntegerToString(GetLastError())); } LastNotification=TimeCurrent(); Print(IndicatorName+"-"+Symbol()+" last notification sent "+TimeToString(LastNotification)); } void DrawArrows(){ RemoveArrows(); if(!EnableDrawArrows || BarsToScan==0) return; int MaxBars=Bars(Symbol(),PERIOD_CURRENT); if(MaxBars>BarsToScan) MaxBars=BarsToScan; for(int i=MaxBars-2;i>=1;i--){ DrawArrow(i); } } void RemoveArrows(){ int Window=-1; for(int i=ObjectsTotal(ChartID(),Window,-1)-1;i>=0;i--){ if(StringFind(ObjectName(0,i),IndicatorName+"-ARWS-",0)>=0){ ObjectDelete(0,ObjectName(0,i)); } } } int SignalWidth=0; void DrawArrow(int i){ RemoveArrowCurr(); if(!EnableDrawArrows){ RemoveArrows(); return; } ENUM_TRADE_SIGNAL Signal=IsSignal(i); if(Signal==SIGNAL_NEUTRAL) return; datetime ArrowDate=iTime(Symbol(),0,i); string ArrowName=IndicatorName+"-ARWS-"+IntegerToString(ArrowDate); double ArrowPrice=0; ENUM_OBJECT ArrowType=OBJ_ARROW; color ArrowColor=0; int ArrowAnchor=0; string ArrowDesc=""; if(Signal==SIGNAL_BUY) { ArrowPrice=Low[i]; ArrowType=(ENUM_OBJECT)ArrowBuy; ArrowColor=ArrowBuyColor; ArrowAnchor=ANCHOR_TOP; ArrowDesc="BUY"; } if(Signal==SIGNAL_SELL) { ArrowPrice=High[i]; ArrowType=(ENUM_OBJECT)ArrowSell; ArrowColor=ArrowSellColor; ArrowAnchor=ANCHOR_BOTTOM; ArrowDesc="SELL"; } ObjectCreate(0,ArrowName,OBJ_ARROW,0,ArrowDate,ArrowPrice); ObjectSetInteger(0,ArrowName,OBJPROP_COLOR,ArrowColor); ObjectSetInteger(0,ArrowName,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,ArrowName,OBJPROP_HIDDEN,true); ObjectSetInteger(0,ArrowName,OBJPROP_ANCHOR,ArrowAnchor); ObjectSetInteger(0,ArrowName,OBJPROP_ARROWCODE,ArrowType); SignalWidth=ArrowSize; ObjectSetInteger(0,ArrowName,OBJPROP_WIDTH,SignalWidth); ObjectSetInteger(0,ArrowName,OBJPROP_STYLE,STYLE_SOLID); ObjectSetInteger(0,ArrowName,OBJPROP_BGCOLOR,ArrowColor); ObjectSetString(0,ArrowName,OBJPROP_TEXT,ArrowDesc); datetime CurrTime=iTime(Symbol(),0,0); } void RemoveArrowCurr(){ datetime ArrowDate=iTime(Symbol(),0,Shift); string ArrowName=IndicatorName+"-ARWS-"+IntegerToString(ArrowDate); ObjectDelete(0,ArrowName); } void Createorder() ------------------------------------------------------->additional add by me failed :( { CTrade trade; string signal=""; double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); if(signal==SIGNAL_SELL) { trade.Sell(0.01,NULL); } if(signal==SIGNAL_BUY) { trade.Buy(0.01,NULL) ; } }
help me
Help you with what? You haven't stated a problem, you stated a want. State the nature of your difficulty.
No free help (2017)
Use the debugger or print out your variables, including _LastError and prices and find out why. Do you really expect us to debug your code for you?
Code debugging - Developing programs - MetaEditor Help
Error Handling and Logging in MQL5 - MQL5 Articles (2015)
Tracing, Debugging and Structural Analysis of Source Code - MQL5 Articles (2011)
Introduction to MQL5: How to write simple Expert Advisor and Custom Indicator - MQL5 Articles (2010)
The problem is you are not a coder...
if(EnableTrade) OnTick();
void OnTick() { CTrade trade; string signal=""; double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); if ( (trade.RequestType() == ORDER_TYPE_BUY) && (SIGNAL_BUY ) ) trade.PositionClose(_Symbol); if ( (trade.RequestType() == ORDER_TYPE_SELL) && (SIGNAL_SELL) ) trade.PositionClose(_Symbol); }
input bool EnableTrade=true;
code is ok
but how to convert indicator to EA
input bool EnableTrade=true;
It is not working that way like the video game cheats.
Create an ea mql5 for auto trading.
Or
Simple and the easy solution for you is Freelance section.
Don't try to do that. There are no buffers, no IndicatorCounted() or prev_calculated. No way to know if older bars have changed or been added (history update.)
Just get the value(s) of the indicator(s) into EA/indicator (using iCustom) and do what you want with it.
(MT4) Detailed explanation of iCustom - MQL4 programming forum (2017)
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
I have Rsi Alert Code i need to when my receive my Alert that time Place a order Each time Help me Anyone I will attach Alert Code
Thanks In Advance