Buffer 11 from "Step one more average 2.3 mtf" gives signal 1 for buy and signal -1 for sell, need to trade signal cross

1
Hello Pro-Coders,

I am looking for a method to get the Signal Cross from -1 to 1 for buy and from 1 to -1 for sell.
I tried to code this, but a simple approach is not working.

Code: Select all


int OneMoreAverageIndicator()

  {
   int i;
   int BarShift = iBarShift(NULL,TimeFrame,Time[i],0); // BarShift 0
   int OneMoreAverageSignal = 0;

   double OneMoreAverageTrend = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift); // Buffer 11
   double OneMoreAverageTrend1 = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift+1); // Buffer 11
        
   if(OneMoreAverageTrend!=OneMoreAverageTrend1) OneMoreAverageSignal = 1;
   if(OneMoreAverageTrend1!=OneMoreAverageTrend) OneMoreAverageSignal = -1;
   
   return (OneMoreAverageSignal);
  }


I want to archive one trade per trend direction when the cross over event has happened.
Thank you for your suggestions.


Re: Buffer 11 from "Step one more average 2.3 mtf" gives signal 1 for buy and signal -1 for sell, need to trade signal c

3
hobbytrader wrote: Sun Aug 09, 2020 2:06 am Hello Pro-Coders,

I am looking for a method to get the Signal Cross from -1 to 1 for buy and from 1 to -1 for sell.
I tried to code this, but a simple approach is not working.

Code: Select all


int OneMoreAverageIndicator()

  {
   int i;
   int BarShift = iBarShift(NULL,TimeFrame,Time[i],0); // BarShift 0
   int OneMoreAverageSignal = 0;

   double OneMoreAverageTrend = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift); // Buffer 11
   double OneMoreAverageTrend1 = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift+1); // Buffer 11
        
   if(OneMoreAverageTrend!=OneMoreAverageTrend1) OneMoreAverageSignal = 1;
   if(OneMoreAverageTrend1!=OneMoreAverageTrend) OneMoreAverageSignal = -1;
   
   return (OneMoreAverageSignal);
  }


I want to archive one trade per trend direction when the cross over event has happened.
Thank you for your suggestions.
Another way

Code: Select all

#define _doNothing 0
#define _doBuy     1
#define _doSell    2
int start()
{
      int doWhat = _doNothing;
      double trendc = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift); // Buffer 11
      double trendp = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift+1); // Buffer 11 
     if (trendc != trendp)
         if (trendc == 1)
                doWhat  = _doBuy;
         else  doWhat = _doSell;
         if (doWhat ==_doNothing) return(0);
         

MagnifyRe: Buffer 11 from "Step one more average 2.3 mtf" gives signal 1 for buy and signal -1 for sell, need to trade signal c

4
mrtools wrote: Sun Aug 09, 2020 2:27 am Another way

Code: Select all

#define _doNothing 0
#define _doBuy     1
#define _doSell    2
int start()
{
      int doWhat = _doNothing;
      double trendc = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift); // Buffer 11
      double trendp = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift+1); // Buffer 11 
     if (trendc != trendp)
         if (trendc == 1)
                doWhat  = _doBuy;
         else  doWhat = _doSell;
         if (doWhat ==_doNothing) return(0);
         
Hi MrTools,

thank you for your reply, I have modified your code like below:

Code: Select all

#define _doNothing 0
#define _doBuy     1
#define _doSell    2

int OneMoreAverageIndicator()
  {
   int i;
   int BarShift = iBarShift(NULL,TimeFrame,Time[i],0); // BarShift 0
   int OneMoreAverageSignal = 0;

      int doWhat = _doNothing;
      double trendc = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift);  // Buffer 11 gives 1 and -1
      double trendp = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift+1);  // Buffer 11 +1 bar
     if (trendc != trendp)
         if (trendc == 1)
                doWhat  = _doBuy;
         else  doWhat = _doSell;
         if (doWhat==1) OneMoreAverageSignal=1;
         if (doWhat==2) OneMoreAverageSignal=-1;
             
         if (doWhat ==_doNothing) return(0);
   return (OneMoreAverageSignal);
  }

It is placing long and short trades in backtest, but in visual mode it is not looking as expected.
It is not placing trades even tough the buffer explorer is showing 1 and -1 signal on buffer 11.

Re: Buffer 11 from "Step one more average 2.3 mtf" gives signal 1 for buy and signal -1 for sell, need to trade signal c

5
wojtek wrote: Sun Aug 09, 2020 2:15 am Try simply:

Code: Select all

if (buffer1[i+1] > 0 && buffer1[i] < 0)  bufsellbuy[i] = -1
if (buffer1[i+1] < 0 && buffer1[i] > 0)  bufsellbuy[i] = 1
For close / formed candles you should add '1' to each index 'i'.
Hi Wojtek,

thank you for your suggestion. I have also looked into your idea, and modified the code accordingly.
But I get the error message "'[' - array required".

This is what I did:

Code: Select all

int OneMoreAverageIndicator()

  {
   int i;
   int BarShift = iBarShift(NULL,TimeFrame,Time[i],0); // BarShift 0
   int OneMoreAverageSignal = 0;

   double OneMoreAverageTrend = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift);  // Buffer 11 with 1 and -1 signal.
   double OneMoreAverageTrend1 = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift+1);  // Barshift +1
        
   if (OneMoreAverageTrend1[i+1] > 0 && OneMoreAverageTrend1[i] < 0)  OneMoreAverageSignal[i] = -1;
   if (OneMoreAverageTrend1[i+1] < 0 && OneMoreAverageTrend1[i] > 0)  OneMoreAverageSignal[i] = 1;
   
   return (OneMoreAverageSignal);
  }
Do you know what I need to improve here?
Thank you in advance!


Re: Buffer 11 from "Step one more average 2.3 mtf" gives signal 1 for buy and signal -1 for sell, need to trade signal c

6
hobbytrader wrote: Sun Aug 09, 2020 7:50 pm

Hi Wojtek,

thank you for your suggestion. I have also looked into your idea, and modified the code accordingly.
But I get the error message "'[' - array required".

This is what I did:

Code: Select all

int OneMoreAverageIndicator()

  {
   int i;
   int BarShift = iBarShift(NULL,TimeFrame,Time[i],0); // BarShift 0
   int OneMoreAverageSignal = 0;

   double OneMoreAverageTrend = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift);  // Buffer 11 with 1 and -1 signal.
   double OneMoreAverageTrend1 = iCustom(NULL,0,"step one more average 2.3 mtf",11,BarShift+1);  // Barshift +1
        
   if (OneMoreAverageTrend1[i+1] > 0 && OneMoreAverageTrend1[i] < 0)  OneMoreAverageSignal[i] = -1;
   if (OneMoreAverageTrend1[i+1] < 0 && OneMoreAverageTrend1[i] > 0)  OneMoreAverageSignal[i] = 1;
   
   return (OneMoreAverageSignal);
  }
Do you know what I need to improve here?
Thank you in advance!
OneMoreAverageSignal should be declared as a buffer:

Code: Select all

double OneMoreAverageSignal[];
if it's declared as an integer, then you should have OneMoreAverageSignal = -1; (or 1 in the next row).


Who is online

Users browsing this forum: ChuChu Rocket and 15 guests