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

- www.mql5.com
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
a is NOT greater than or equal to b a ??????????????????????????????;
If it is not greater than or equal, is must be less than.
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 )
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 )
Is it not clear to you that is a Loop?
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).
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 )
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_BUY 0 //Buy #define OP_SELL 1 //Sell #define OP_BUYLIMIT 2 //Pending order of BUY LIMIT type #define OP_SELLLIMIT 3 //Pending order of SELL LIMIT type #define OP_BUYSTOP 4 //Pending order of BUY STOP type #define OP_SELLSTOP 5 //Pending order of SELL STOP type //--- #define MODE_TRADES 0 #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_ASK 10 #define MODE_POINT 11 #define MODE_DIGITS 12 #define MODE_SPREAD 13 #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_TRADEALLOWED 22 #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 #include <Trade\Trade.mqh> CTrade *Trade; int OnInit() { // Create a pointer to a ctrade object Trade=new CTrade(); Trade.SetExpertMagicNumber(MagicNumber); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { { } double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); 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 ) { if(StopLoss>0) TheStopLoss=SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLoss*MyPoint; if(TakeProfit>0) TheTakeProfit=SymbolInfoDouble(_Symbol,SYMBOL_ASK)+TakeProfit*MyPoint; Trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lots,SymbolInfoDouble(_Symbol,SYMBOL_ASK),TheStopLoss,TheTakeProfit); 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; Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lots,SymbolInfoDouble(_Symbol,SYMBOL_BID),TheStopLoss,TheTakeProfit); return; } //------------------------------------------------------------------- } int posTotal=PositionsTotal(); for(int posIndex=posTotal-1;posIndex>=0;posIndex--) { ulong ticket=PositionGetTicket(posIndex); if(PositionSelectByTicket(ticket) && PositionGetInteger(POSITION_MAGIC)==MagicNumber) { if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1) ) //here is your close buy rule { Trade.PositionClose(ticket); 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) { Trade.PositionModify(ticket,SymbolInfoDouble(_Symbol,SYMBOL_BID)-MyPoint*TrailingStop,PositionGetDouble(POSITION_TP)); 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 { Trade.PositionClose(ticket); break; } if(TrailingStop>0) { if(PositionGetDouble(POSITION_PRICE_OPEN)-SymbolInfoDouble(_Symbol,SYMBOL_ASK)>MyPoint*TrailingStop) { if(PositionGetDouble(POSITION_SL)>SymbolInfoDouble(_Symbol,SYMBOL_ASK)+MyPoint*TrailingStop) { Trade.PositionModify(ticket,SymbolInfoDouble(_Symbol,SYMBOL_ASK)+MyPoint*TrailingStop,PositionGetDouble(POSITION_TP)); 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)); }
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.

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
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 ??????????????????????????????;