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
Post a Comment