Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

BIG1RED9

MQ4 indicator conversion to Power Language/Easy Language and MultiCharts.Net

Recommended Posts

Good morning,

I have an MQ4 indicator that I need to use in MultiCharts. It would be especiall asesome if I could get  it in both 64 and NET versions, but if I had to pick 1, it would be for MC64 powerlanguage.

Pic attached

Thanks in advance

Don

//----
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Chartreuse
#property indicator_color2 Orange
#property indicator_color3 Chartreuse
#property indicator_color4 Orange
#property indicator_color5 Chartreuse
#property indicator_color6 Orange
//---- input parameters
extern int    Length=20;      // Bollinger Bands Period
extern int    Deviation=2;    // Deviation
extern double MoneyRisk=1.00; // Offset Factor
extern int    Signal=1;       // Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals;
extern int    Line=1;         // Display line mode: 0-no,1-yes  
extern int    Nbars=1000;
//---- indicator buffers
double UpTrendBuffer[];
double DownTrendBuffer[];
double UpTrendSignal[];
double DownTrendSignal[];
double UpTrendLine[];
double DownTrendLine[];
double smax[],smin[],bsmax[],bsmin[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
  int init()
  {
   string short_name;
//---- indicator line
   SetIndexBuffer(0,UpTrendBuffer);
   SetIndexBuffer(1,DownTrendBuffer);
   SetIndexBuffer(2,UpTrendSignal);
   SetIndexBuffer(3,DownTrendSignal);
   SetIndexBuffer(4,UpTrendLine);
   SetIndexBuffer(5,DownTrendLine);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexArrow(0,159);
   SetIndexArrow(1,159);
   SetIndexArrow(2,108);
   SetIndexArrow(3,108);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
   short_name="BBands Stop("+Length+","+Deviation+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"UpTrend Stop");
   SetIndexLabel(1,"DownTrend Stop");
   SetIndexLabel(2,"UpTrend Signal");
   SetIndexLabel(3,"DownTrend Signal");
   SetIndexLabel(4,"UpTrend Line");
   SetIndexLabel(5,"DownTrend Line");
//----
   SetIndexDrawBegin(0,Length);
   SetIndexDrawBegin(1,Length);
   SetIndexDrawBegin(2,Length);
   SetIndexDrawBegin(3,Length);
   SetIndexDrawBegin(4,Length);
   SetIndexDrawBegin(5,Length);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                          |
//+------------------------------------------------------------------+
int start()
  {
   int    i,shift,trend;
//----
   /*for(shift=Nbars;shift>=0;shift--)
     {
      UpTrendBuffer[shift]=0;
      DownTrendBuffer[shift]=0;
      UpTrendSignal[shift]=0;
      DownTrendSignal[shift]=0;
      UpTrendLine[shift]=EMPTY_VALUE;
      DownTrendLine[shift]=EMPTY_VALUE;
     }
*/     
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0)  return(-1);
   if(counted_bars > 0)   counted_bars--;
   int limit = Bars - counted_bars;
   if(counted_bars==0) limit-=1+1;
   
   int xsize=ArraySize(UpTrendBuffer);  
   ArrayResize(smax,xsize);
   ArrayResize(smin,xsize);
   ArrayResize(bsmax,xsize);
   ArrayResize(bsmin,xsize);
   
   for(shift=limit;shift>=0;shift--)
     {
      smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift);
      smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift);
//----
      if (Close[shift]>smax[shift+1]) trend=1;
      if (Close[shift]<smin[shift+1]) trend=-1;
      if(trend>0 && smin[shift]<smin[shift+1]) smin[shift]=smin[shift+1];
      if(trend<0 && smax[shift]>smax[shift+1]) smax[shift]=smax[shift+1];
//----
      bsmax[shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]);
      bsmin[shift]=smin[shift]-0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]);
//----
      if(trend>0 && bsmin[shift]<bsmin[shift+1]) bsmin[shift]=bsmin[shift+1];
      if(trend<0 && bsmax[shift]>bsmax[shift+1]) bsmax[shift]=bsmax[shift+1];
      if (trend>0)
        {
         if (Signal>0 && UpTrendBuffer[shift+1]==-1.0)
           {
            UpTrendSignal[shift]=bsmin[shift];
            UpTrendBuffer[shift]=bsmin[shift];
            if(Line>0) UpTrendLine[shift]=bsmin[shift];
           }
         else
           {
            UpTrendBuffer[shift]=bsmin[shift];
            if(Line>0) UpTrendLine[shift]=bsmin[shift];
            UpTrendSignal[shift]=-1;
           }
         if (Signal==2) UpTrendBuffer[shift]=0;
         DownTrendSignal[shift]=-1;
         DownTrendBuffer[shift]=-1.0;
         DownTrendLine[shift]=EMPTY_VALUE;
        }
      if (trend<0)
        {
         if (Signal>0 && DownTrendBuffer[shift+1]==-1.0)
           {
            DownTrendSignal[shift]=bsmax[shift];
            DownTrendBuffer[shift]=bsmax[shift];
            if(Line>0) DownTrendLine[shift]=bsmax[shift];
           }
         else
           {
            DownTrendBuffer[shift]=bsmax[shift];
            if(Line>0)DownTrendLine[shift]=bsmax[shift];
            DownTrendSignal[shift]=-1;
           }
         if (Signal==2) DownTrendBuffer[shift]=0;
         UpTrendSignal[shift]=-1;
         UpTrendBuffer[shift]=-1.0;
         UpTrendLine[shift]=EMPTY_VALUE;
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+

Doda-Bbands.jpg

Share this post


Link to post
Share on other sites

So going through the code...

The help I need is to cause the lower bollinger band to stop once the close of the bar is greater than the BB value 

and

the higher bollinger band to stop once the close of the bar is less than the BB value 

Thanks

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Topics

  • Posts

    • Consider: some 80% of small to medium-sized businesses around the world don’t have a website.   Many businesses in emerging economies rely on social media platforms (e.g., WhatsApp, Facebook) as their primary digital presence instead of formal websites.   But even in more digitally advanced economies, the number can hover around half.   Why? Simple answer: although we’ve made it easier to make a website, it’s still not easy enough.   Let’s say a yoga instructor wants to offer online classes but lacks tech skills or a budget.   Instead of struggling with confusing platforms, she tells her AI agent, “Set up a website for me to host yoga classes.”   The AI handles everything.   It integrates Stripe for payments, Zoom for live classes, scheduling services for in-person classes, and a chat module for inquiries.   It even suggests templates.   When the instructor picks one and asks for a purple and white color scheme, the AI updates it instantly.   No coding. No frustration. Just results.   And the best part? She didn’t have to touch a single screen or key.   This is the future Wilson describes in Age of Invisible Machines.   And, as mentioned, it’s powered by three core technologies:   Conversational User Interfaces (CUIs): Say what you need; the system handles it. From building websites to booking flights, it’s fast and human-like.   Composable Architecture: Traditional business solutions become “modules”. Like LEGO bricks, modular tools—payments, chats, scheduling—snap together to create custom solutions without starting from scratch.   No-Code Programming: AI agents code for you, empowering anyone to create without needing a developer. It’s not just a better way to interact with technology…   It’s a complete reimagining of how industries operate.   As Harvard Business School’s Marco Iansiti says, “This isn’t disruption—it’s a fundamental shift in production and interaction.”   And, the thing is…   It’s not just possible. It’s already happening.   Early examples are already here. – Chris Campbell, AltucherConfidential Profits from free accurate cryptos signals: https://www.predictmag.com/ 
    • Question: My name is Omobola Sikiru from Lagos, Nigeria. I am mechanical engineering. Where can I find someone that can be my helper to relocate me to the USA?   Answer: According to your own profile, you are trying to enter other countries through deception and immigration fraud.   You are an engineer in Nigeria, but you are not licensed as an engineer in any other country.   There are no helpers, no sponsors, and nobody is going to give you money, get you an engineering job, or get you a visa.   You must qualify to immigrate. Nobody can help you with that.   Either you qualify and have settling in money, or you don’t.   You need to improve your English before trying to get a job in a Western, English speaking country. Engineers write reports. You wrote, ‘I am mechanical engineering’. Nobody will hire you if you write like this. Rathkeale Source: https://www.quora.com/My-name-is-Omobola-Sikiru-from-Lagos-Nigeria-I-am-mechanical-engineering-Where-can-I-find-someone-that-can-be-my-helper-to-relocate-me-to-the-USA   Profits from free accurate cryptos signals: https://www.predictmag.com/  
    • QRVO Qorvo stock, big bottom breakout at https://stockconsultant.com/?QRVO
    • MRVL Marvell Technology stock good day and breakout at https://stockconsultant.com/?MRVL  
    • all waiting for the jan 22 transition, not to mention the trump meme coin and talks about conflict of interest. FUD is everywhere
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.