How to code Auto Reverse Signal when AccountBalance less.

 

Already figure out how to code the Auto Reverse Signal.

But can not figure how to add delay code for Having 2 times of Account Loss before change signal.

#define SIGNAL_NONE 0
#define SIGNAL_BUY   1
#define SIGNAL_SELL  2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4

   
 extern string SignalReverse = "----------  Auto Reverse Signal When Acc Loss -----------";
 extern bool AutoReverse=True;
 extern int FrequencyDelay= 2;

 ///----------------------




if(AutoReverse==True && ReverseStart==False && TimeStamp!=iTime(NULL,0,0)){
            if (AccountBalance()< AccountLossRecord) ReverseStart=True;
                                  AccountLossRecord=AccountBalance();TimeStamp=iTime(NULL,0,0); BarCount = Bars;
                                                                          }  
                                                 
if(AutoReverse==True && ReverseStart==True && TimeStamp!=iTime(NULL,0,0)) {
             if (AccountBalance()< AccountLossRecord) ReverseStart=False;
                                                     AccountLossRecord=AccountBalance(); TimeStamp=iTime(NULL,0,0);BarCount = Bars;
                                                                          }    

if( AccountBalance()> AccountLossRecord)  AccountLossRecord=AccountBalance(); 

 //----------

 if (ZZ_buy) BUY = TRUE;
   if (ZZ_sell) SELL = TRUE;
   if(!AutoReverse && BUY)if(ReverseZigZag)return (2);  else return (1);
    if(!AutoReverse && BUY)if(ReverseZigZag) return (1);  else return (2);
    if(AutoReverse && ReverseStart)if(BUY)if(ReverseZigZag)return (1);  else return (2);
    if(AutoReverse && ReverseStart)if(SELL)if(ReverseZigZag) return (2);  else return (1);
    if(AutoReverse && !ReverseStart)if(BUY)if(ReverseZigZag)return (2);  else return (1);
    if(AutoReverse && !ReverseStart)if(SELL)if(ReverseZigZag) return (1);  else return (2);

The center code able to Switch ON OFF Reverse when AccountBalance() less.

How to Code a counter to having xN times of AccountBalance() less (FrequencyDelay) before AutoReverse Start.

 

If suppose you want to use an interval of 5 bars before you can reverse an order then you could have this at the beginning

(am assuming your code is running on new bar because you're using iTime)

extern int _interval=5;

//global variable
static int _counter;

if (AccountBalance()>= AccountLossRecord) { _counter=0; }
if (AccountBalance()< AccountLossRecord) { _counter++; }

if(_counter<_interval) { return; }
 
ssn:

If suppose you want to use an interval of 5 bars before you can reverse an order then you could have this at the beginning

(am assuming your code is running on new bar because you're using iTime)


Just solve my own problem over night after cracking some brains.

Use a counter to Activate GoGoReverse. Then GoGoReverse will On Off the ReverseStart Button.

 if(AccountBalance()< AccountLossRecord && TimeStamp!=iTime(NULL,0,0)){ CounterRervs=CounterRervs+1; TimeStamp=iTime(NULL,0,0); AccountLossRecord=AccountBalance();}
 if (CounterRervs >=LossTimes) {GoGoReverse=True; CounterRervs=0; }
 
 
  if(AutoReverse==True && ReverseStart==False ){ if (GoGoReverse==True ) ReverseStart=True;
                                                     GoGoReverse=False;
                                                 }  
                                                 
if(AutoReverse==True && ReverseStart==True ) {if (GoGoReverse==True ) ReverseStart=False;
                                                     GoGoReverse=False;
                                                 }     
 
        if( AccountBalance()> AccountLossRecord)  AccountLossRecord=AccountBalance();