Neural AI Decision Module

 


// Simulated Neural AI Decision Module

bool NeuralAIDecision() {

   double marketScore = MathRand() % 100;

   return marketScore > 50;

}


void CheckNews() {

   if(TimeCurrent() < newsResumeTime) {

      newsPaused = true;

   } else {

      newsPaused = false;

   }

}


bool IsTradedToday() {

   datetime today = iTime(Symbol(), PERIOD_D1, 0);

   for(int i = OrdersHistoryTotal()-1; i >= 0; i--) {

      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == MagicNumber && OrderOpenTime() >= today) {

         return true;

      }

   }

   return false;

}


void GetSLTP(double &sl, double &tp) {

   double atr = iATR(Symbol(), PERIOD_M15, ATRPeriod, 0);

   sl = atr * (atr > MarketInfo(Symbol(), MODE_SPREAD) * ATRMultiplier ? 1.5 : 0.75);

   tp = atr * (atr > MarketInfo(Symbol(), MODE_SPREAD) * ATRMultiplier ? 2.0 : 1.0);

}


void PlaceTrade(string type) {

   double sl, tp; GetSLTP(sl, tp);

   double lotSize = lastTradeLoss ? MathMin(lastLot * Multiplier, MaxLot) : Lot;

   lastLot = lotSize;

   OrderSend(Symbol(), type == "BUY" ? OP_BUY : OP_SELL, lotSize, type == "BUY" ? Ask : Bid, 3, Ask - sl * Point, Ask + tp * Point, "AI Neural Scalper", MagicNumber, 0, type == "BUY" ? clrGreen : clrRed);

   tradedToday = true;

}


void GridTrading() {

   double price = Ask;

   for(int i = 1; i <= 3; i++) {

      OrderSend(Symbol(), OP_BUY, Lot, price - GridStep * i * Point, 3, 0, 0, "Grid Buy", MagicNumber, 0, clrBlue);

      OrderSend(Symbol(), OP_SELL, Lot, price + GridStep * i * Point, 3, 0, 0, "Grid Sell", MagicNumber, 0, clrRed);

   }

}


void OnTick() {

   CheckNews();

   if(tradedToday || IsTradedToday() || newsPaused) return;

   if(GridMode) {

      GridTrading();

   } else {

      if(NeuralAIDecision() && IsUptrend() && IsOS()) PlaceTrade("BUY");

      if(NeuralAIDecision() && !IsUptrend() && IsOB()) PlaceTrade("SELL");

   }

}


void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeResult &result) {

   if(trans.type == TRADE_TRANSACTION_DEAL_ADD && OrderSelect(result.order, SELECT_BY_TICKET)) {

      lastTradeLoss = OrderProfit() < 0;

   }

}


Comments

Popular posts from this blog

Elise hedge mula 26.6.2025 smpai 17.7,25 part 1

v4 dah mc 17/4/2025 avoid