# Operations of Relation

 True if a is equal to b                      a == b;True if a is not equal to b                  a != b;True if a is less than b                     a < b;True if a is greater than b                  a > b;True if a is less than or equal to b         a <= b;True if a is greater than or equal to b      a >= b;
 True if a is NOT greater than or equal to b      a ??????????????????????????????;

My question is what can i write in this case?

a is NOT greater than or equal to b      a ??????????????????????????????;

Here: https://www.mql5.com/en/docs/basis/operations/bool you find the logical negation "!" .

Documentation on MQL5: Language Basics / Operations and Expressions / Boolean Operations
• www.mql5.com
Boolean Operations - Operations and Expressions - Language Basics - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5

Carl Schreiber #:

Here: https://www.mql5.com/en/docs/basis/operations/bool you find the logical negation "!" .

```bool KKKKKKKKKK = true;
for( int k = 1+1; k <= 1+70; k++ ) KKKKKKKKKK = KKKKKKKKKK

&&iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,1)<iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,k)
&&iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,2)<!iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,k)```

It dose not work in the second condition

Ahmed Abd El Aziz: My question is what can i write in this case?

a is NOT greater than or equal to b      a ??????????????????????????????;

If it is not greater than or equal, is must be less than.

Ahmed Abd El Aziz: True if a is NOT greater than or equal to b ...
True if (not  a >= b) is the same as true if ( a < b ).

Fernando Carreiro #:
True if (not  a >= b) is the same as true if ( a < b ).

If it is not "greater than" it does not have to be "less than", because i compare one price with multi prices

Ahmed Abd El Aziz #: If it is not "greater than" it does not have to be "less than", because i compare one price with multi prices

You wrote "a is NOT greater than or equal to b" and not "a is NOT greater than b ". So ...

•  (not  a >= b) is the same as ( a < b )
•  (not  a > b) is the same as ( a <= b )
If you are comparing multiple values, then you have to show your code. We cannot read your mind or guess what it is you are thinking.

Fernando Carreiro #:

You wrote "a is NOT greater than or equal to b" and not "a is NOT greater than b ". So ...

•  (not  a >= b) is the same as ( a < b )
•  (not  a > b) is the same as ( a <= b )
If you are comparing multiple values, then you have to show your code. We cannot read your mind or guess what it is you are thinking.

Is it not clear to you that is a Loop?

Ahmed Abd El Aziz #:

It dose not work in the second condition

You should have read the doc: "Operand of the logical negation (!) must be of arithmetic type. The result is TRUE (1), if the operand value is FALSE (0); and it is equal to FALSE (0), if the operand differs from FALSE (0)."

Maybe you should study the boolean algebra: https://en.wikipedia.org/wiki/Boolean_algebra.

E.g: (not  a > b) => !(a>b).

Fernando Carreiro #:

You wrote "a is NOT greater than or equal to b" and not "a is NOT greater than b ". So ...

•  (not  a >= b) is the same as ( a < b )
•  (not  a > b) is the same as ( a <= b )
If you are comparing multiple values, then you have to show your code. We cannot read your mind or guess what it is you are thinking.

This is the code. I type ">!" and this is not work

1- I want to make force indicator at the candle 2 Not greater than all values in the last 70 candles

2- I want to say in the same condition that force 2 or 3 or 4 or 5 > force value at the last 70 candles

```input int MagicNumber=10001;
input double Lots =0.1;
input double StopLoss=0;
input double TakeProfit=0;
input int TrailingStop=0;

datetime lastTime = 0;
bool CloseOpposite;

//+------------------------------------------------------------------+
//    expert start function
//+------------------------------------------------------------------+

ENUM_MA_METHOD MethodMigrate(int method)
{
switch(method)
{
case 0: return(MODE_SMA);
case 1: return(MODE_EMA);
case 2: return(MODE_SMMA);
case 3: return(MODE_LWMA);
default: return(MODE_SMA);
}
}

ENUM_STO_PRICE StoFieldMigrate(int field)
{
switch(field)
{
case 0: return(STO_LOWHIGH);
case 1: return(STO_CLOSECLOSE);
default: return(STO_LOWHIGH);
}
}
ENUM_APPLIED_PRICE PriceMigrate(int price)
{
switch(price)
{
case 1: return(PRICE_CLOSE);
case 2: return(PRICE_OPEN);
case 3: return(PRICE_HIGH);
case 4: return(PRICE_LOW);
case 5: return(PRICE_MEDIAN);
case 6: return(PRICE_TYPICAL);
case 7: return(PRICE_WEIGHTED);
default: return(PRICE_CLOSE);
}
}

ENUM_TIMEFRAMES TFMigrate(int tf)
{
switch(tf)
{
case 0: return(PERIOD_CURRENT);
case 1: return(PERIOD_M1);
case 5: return(PERIOD_M5);
case 15: return(PERIOD_M15);
case 30: return(PERIOD_M30);
case 60: return(PERIOD_H1);
case 240: return(PERIOD_H4);
case 1440: return(PERIOD_D1);
case 10080: return(PERIOD_W1);
case 43200: return(PERIOD_MN1);

case 2: return(PERIOD_M2);
case 3: return(PERIOD_M3);
case 4: return(PERIOD_M4);
case 6: return(PERIOD_M6);
case 10: return(PERIOD_M10);
case 12: return(PERIOD_M12);
case 16385: return(PERIOD_H1);
case 16386: return(PERIOD_H2);
case 16387: return(PERIOD_H3);
case 16388: return(PERIOD_H4);
case 16390: return(PERIOD_H6);
case 16392: return(PERIOD_H8);
case 16396: return(PERIOD_H12);
case 16408: return(PERIOD_D1);
case 32769: return(PERIOD_W1);
case 49153: return(PERIOD_MN1);
default: return(PERIOD_CURRENT);
}
}

#define MODE_MAIN 0
#define MODE_SIGNAL 1
#define MODE_PLUSDI 1
#define MODE_MINUSDI 2
#define MODE_OPEN 0
#define MODE_LOW 1
#define MODE_HIGH 2
#define MODE_CLOSE 3
#define MODE_VOLUME 4
#define MODE_REAL_VOLUME 5

#define OP_SELL 1          //Sell
#define OP_SELLLIMIT 3     //Pending order of SELL LIMIT type
#define OP_SELLSTOP 5      //Pending order of SELL STOP type
//---
#define MODE_HISTORY 1
#define SELECT_BY_POS 0
#define SELECT_BY_TICKET 1
//---
#define DOUBLE_VALUE 0
#define FLOAT_VALUE 1
#define LONG_VALUE INT_VALUE
//---
#define CHART_BAR 0
#define CHART_CANDLE 1
//---
#define MODE_ASCEND 0
#define MODE_DESCEND 1
//---

#define MODE_TIME 5
#define MODE_BID 9
#define MODE_POINT 11
#define MODE_DIGITS 12
#define MODE_STOPLEVEL 14
#define MODE_LOTSIZE 15
#define MODE_TICKVALUE 16
#define MODE_TICKSIZE 17
#define MODE_SWAPLONG 18
#define MODE_SWAPSHORT 19
#define MODE_STARTING 20
#define MODE_EXPIRATION 21
#define MODE_MINLOT 23
#define MODE_LOTSTEP 24
#define MODE_MAXLOT 25
#define MODE_SWAPTYPE 26
#define MODE_PROFITCALCMODE 27
#define MODE_MARGINCALCMODE 28
#define MODE_MARGININIT 29
#define MODE_MARGINMAINTENANCE 30
#define MODE_MARGINHEDGED 31
#define MODE_MARGINREQUIRED 32
#define MODE_FREEZELEVEL 33
//---
#define EMPTY -1
int OnInit() {

//      Create a pointer to a ctrade object

return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason) {

}
void OnTick()
{
{

}

double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

double MyPoint=_Point;
if(_Digits==2 || _Digits==5) MyPoint=_Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;

{
if(lastTime != iTime(Symbol(), 0, 1))
{
lastTime = iTime(Symbol(), 0, 1);
}
else
{
return;
}
bool QQQQQQQQQQ = true;
for( int q = 2+1; q<= 1+70; q++ ) QQQQQQQQQQ = QQQQQQQQQQ

&&iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,1)>iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,q)
&&iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,2)>!iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,q)

;
if( QQQQQQQQQQ )
{
return;
}

bool MMMMMMMMMM = true;
for( int m = 2+1; m <= 1+70; m++ ) MMMMMMMMMM = MMMMMMMMMM

&&iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,1)<iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,m)
&&iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,1)<!iForceMQL4(NULL,0,3,MODE_SMA,VOLUME_TICK,m)

;

if( MMMMMMMMMM )
{
if(StopLoss>0) TheStopLoss=SymbolInfoDouble(_Symbol,SYMBOL_BID)+StopLoss*MyPoint;
if(TakeProfit>0) TheTakeProfit=SymbolInfoDouble(_Symbol,SYMBOL_BID)-TakeProfit*MyPoint;
return;
}
//-------------------------------------------------------------------
}
int posTotal=PositionsTotal();
for(int posIndex=posTotal-1;posIndex>=0;posIndex--)
{
ulong ticket=PositionGetTicket(posIndex);
if(PositionSelectByTicket(ticket) && PositionGetInteger(POSITION_MAGIC)==MagicNumber)
{
{
if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1)
{
break;
}

if(TrailingStop>0)
{
if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-PositionGetDouble(POSITION_PRICE_OPEN)>MyPoint*TrailingStop)
{
if(PositionGetDouble(POSITION_SL)<SymbolInfoDouble(_Symbol,SYMBOL_BID)-MyPoint*TrailingStop)
{
return;
}
}
}
}

if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1)
)    // here is your close sell rule
{
break;
}
if(TrailingStop>0)
{
{
{
return;
}
}
}
}
}
}
return;
}

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

int Hour()
{
MqlDateTime tm;
TimeCurrent(tm);
return(tm.hour);
}
int Minute()
{
MqlDateTime tm;
TimeCurrent(tm);
return(tm.min);
}

double CopyBufferMQL4(int handle,int index,int shift)
{
double buf[];
switch(index)
{
case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
return(buf[0]); break;
case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
return(buf[0]); break;
case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
return(buf[0]); break;
case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
return(buf[0]); break;
case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
return(buf[0]); break;
default: break;
}
return(EMPTY_VALUE);
}

double iForceMQL4(string symbol,
int tf,
int period,
int method,
int price,
int shift)
{
ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
ENUM_MA_METHOD ma_method=MethodMigrate(method);
int handle=iForce(symbol,timeframe,period,ma_method,VOLUME_TICK);
if(handle<0)
{
return(-1);
}
else
return(CopyBufferMQL4(handle,0,shift));
}

```

Ahmed Abd El Aziz #: 1- I want to make force indicator at the candle 2 Not greater than all values in the last 70 candles

2- I want to say in the same condition that force 2 or 3 or 4 or 5 > force value at the last 70 candles

Force it to do what? What is "not greater than all values" of what?

Until you can state your requirements in concrete terms, it can not be coded.

Reason: