Skip to content
🤔prompts chat🧠
🔍
question://+------------------------------------------------------------------+ //| best_ex2.mq5 | //| Copyright 2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ input ENUM_TIMEFRAMES TimeFrame = PERIOD_M1; datetime lastBarTime = 0; input double InitialLots = 0.1; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool YesOrNo() { MqlRates rates_array[]; // Получаем данные последней закрытой свечи if(CopyRates(_Symbol, _Period, 1, 1, rates_array) > 0) { double openCloseDifference = MathAbs(rates_array[0].open - rates_array[0].close); double highLowDifference = MathAbs(rates_array[0].high - rates_array[0].low); double bodyToShadowRatio = openCloseDifference / highLowDifference; double lowerBodyEnd; // Нижняя часть тела свечи if(rates_array[0].open > rates_array[0].close) { // Медвежья свеча lowerBodyEnd = rates_array[0].close; } else { // Бычья свеча lowerBodyEnd = rates_array[0].open; } double bodyPositionRatio = (lowerBodyEnd - rates_array[0].low) / highLowDifference; // Проверяем, удовлетворяет ли тело свечи всем условиям if(bodyToShadowRatio <= 0.3 && bodyPositionRatio >= 0.5) { Print("ДА"); return true; } } else { Print("Ошибка при получении данных свечи."); } Print("НЕТ"); return false; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- MqlRates rates[]; if(CopyRates(_Symbol, TimeFrame, 0, 1, rates) > 0) { lastBarTime = rates[0].time; } else { Print("Ошибка при получении информации о барах: ", GetLastError()); return (INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- bool send_b = false; bool send_s = false; datetime currentTime = TimeCurrent(); ENUM_TIMEFRAMES Time = TimeFrame; if(Time > 16000) { Time = (ENUM_TIMEFRAMES)((Time - 16384) * 60); } if(currentTime >= lastBarTime+Time*60) { if(YesOrNo() == true); { while(send_b != true) { OpenOrder(ORDER_TYPE_BUY, InitialLots, "B"); } } lastBarTime = lastBarTime+Time*60; } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OpenOrder(ENUM_ORDER_TYPE type, double lots, string orderMagic) { MqlTradeRequest request = {}; MqlTradeResult result = {}; // Заполнение полей структуры запроса на сделку request.action = TRADE_ACTION_DEAL; request.symbol = Symbol(); request.volume = lots; request.type = type; request.deviation = 5; request.magic = StringToInteger(orderMagic + IntegerToString(GetTickCount())); //request.comment = "Auto trade order"; if(type == ORDER_TYPE_BUY) request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK); else if(type == ORDER_TYPE_SELL) request.price = SymbolInfoDouble(_Symbol, SYMBOL_BID); if(!OrderSend(request, result)) { Print("OrderSend failed with error #", GetLastError()); Print("Details: symbol=", request.symbol, ", volume=", request.volume, ", type=", (request.type==ORDER_TYPE_BUY?"BUY":"SELL"), ", price=", request.price); if(request.type == ORDER_TYPE_BUY) { send_b = false; } else if(request.type == ORDER_TYPE_SELL) { send_s = false; } } else if(request.type == ORDER_TYPE_BUY) { send_b = true; } else if(request.type == ORDER_TYPE_SELL) { send_s = true; } PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ эта программа выдает такие ошибки empty controlled statement found best_ex2.mq5 117 28 'send_b' - undeclared identifier best_ex2.mq5 162 10 'send_s' - undeclared identifier best_ex2.mq5 167 13 'send_b' - undeclared identifier best_ex2.mq5 173 10 'send_s' - undeclared identifier best_ex2.mq5 178 13 что делать

answer:Ошибки, с которыми вы столкнулись, указывают на несколько проблем в вашем коде. Давайте разберемся с каждой из них по порядку: # 1. Empty controlled statement found Эта ошибка указывает на то, что вы использовали пустое управляющее выражение, скорее всего из-за лишней точки с запятой (`;`) после условного выражения `if`. В строке, где используется `if(YesOrNo() == true);`, точка с запятой после условия приводит к тому, что блок кода всегда игнорируется, и исполнение перемещается к следующему блоку кода без каких-либо условий. Исправьте эту часть кода, удалив точку с запятой, чтобы `if` корректно контролировал выполнение блока кода: ```cpp if(YesOrNo() == true) { while(send_b != true) { OpenOrder(ORDER_TYPE_BUY, InitialLots, "B"); } } ``` # 2. 'send_b' - undeclared identifier и 'send_s' - undeclared identifier Эти ошибки сообщают вам, что переменные `send_b` и `send_s` используются, но не объявлены в области видимости, где они используются. Судя по вашему коду, вы предположили, что `send_b` и `send_s` должны быть глобальными переменными, поскольку вы пытаетесь изменять их значения в различных функциях. Чтобы исправить это, вам нужно объявить эти переменные в глобальной области видимости вашего файла. Добавьте это в начало вашего кода: ```cpp bool send_b = false; bool send_s = false; ``` И убедитесь, что не объявляете эти переменные как локальные в функции `OnTick()`. # После исправлений - Убедитесь, что удалили лишние точки с запятой после условий `if`. - Объявите `send_b` и `send_s` как глобальные переменные в начале файла. Эти шаги должны помочь вам решить указанные проблемы. Будьте внимательны при рефакторинге и тестировании кода после внесения изменений, чтобы убедиться, что логика работы вашей программы соответствует ожидаемой.

question://+------------------------------------------------------------------+ //| best_ex2.mq5 | //| Copyright 2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ input ENUM_TIMEFRAMES TimeFrame = PERIOD_M1; datetime lastBarTime = 0; input double InitialLots = 0.1; bool send_b = false; bool send_s = false; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool YesOrNo() { MqlRates rates_array[]; // Получаем данные последней закрытой свечи if(CopyRates(_Symbol, _Period, 1, 1, rates_array) > 0) { double openCloseDifference = MathAbs(rates_array[0].open - rates_array[0].close); double highLowDifference = MathAbs(rates_array[0].high - rates_array[0].low); double bodyToShadowRatio = openCloseDifference / highLowDifference; double lowerBodyEnd; // Нижняя часть тела свечи if(rates_array[0].open > rates_array[0].close) { // Медвежья свеча lowerBodyEnd = rates_array[0].close; } else { // Бычья свеча lowerBodyEnd = rates_array[0].open; } double bodyPositionRatio = (lowerBodyEnd - rates_array[0].low) / highLowDifference; // Проверяем, удовлетворяет ли тело свечи всем условиям if(bodyToShadowRatio <= 0.3 && bodyPositionRatio >= 0.5) { Print("ДА"); return true; } } else { Print("Ошибка при получении данных свечи."); } Print("НЕТ"); return false; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- MqlRates rates[]; if(CopyRates(_Symbol, TimeFrame, 0, 1, rates) > 0) { lastBarTime = rates[0].time; } else { Print("Ошибка при получении информации о барах: ", GetLastError()); return (INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- send_b = false; send_s = false; datetime currentTime = TimeCurrent(); ENUM_TIMEFRAMES Time = TimeFrame; if(Time > 16000) { Time = (ENUM_TIMEFRAMES)((Time - 16384) * 60); } if(currentTime >= lastBarTime+Time*60) { if(YesOrNo() == true) { while(send_b != true) { OpenOrder(ORDER_TYPE_BUY, InitialLots, "B"); } } lastBarTime = lastBarTime+Time*60; } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OpenOrder(ENUM_ORDER_TYPE type, double lots, string orderMagic) { MqlRates rates_array[]; // Получаем данные последней закрытой свечи if(CopyRates(_Symbol, _Period, 1, 1, rates_array) > 0) { double highLowDifference = MathAbs(rates_array[0].high - rates_array[0].low); } MqlTradeRequest request = {}; MqlTradeResult result = {}; // Заполнение полей структуры запроса на сделку request.action = TRADE_ACTION_DEAL; request.symbol = Symbol(); request.volume = lots; request.type = type; request.deviation = 5; request.magic = StringToInteger(orderMagic + IntegerToString(GetTickCount())); //request.comment = "Auto trade order"; if(type == ORDER_TYPE_BUY) request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK); else if(type == ORDER_TYPE_SELL) request.price = SymbolInfoDouble(_Symbol, SYMBOL_BID); if(!OrderSend(request, result)) { Print("OrderSend failed with error #", GetLastError()); Print("Details: symbol=", request.symbol, ", volume=", request.volume, ", type=", (request.type==ORDER_TYPE_BUY?"BUY":"SELL"), ", price=", request.price); if(request.type == ORDER_TYPE_BUY) { send_b = false; } else if(request.type == ORDER_TYPE_SELL) { send_s = false; } } else if(request.type == ORDER_TYPE_BUY) { send_b = true; } else if(request.type == ORDER_TYPE_SELL) { send_s = true; } PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ в функцию openorder нужно добавить тейк профит и стоп лосс стоп лос должен быть по цене равен низу тени предыдущей свечи а тейк профит равен цене покупки плюс вся тень свечи

answer:Чтобы добавить `TakeProfit` и `StopLoss` в функцию `OpenOrder`, необходимо добавить соответствующие поля в структуру `MqlTradeRequest`. В MetaTrader 5, `StopLoss` и `TakeProfit` задаются в ценах, а не в пунктах. Также стоит учитывать, что при выставлении ордеров на покупку (`BUY`), `StopLoss` должен быть ниже цены покупки, а `TakeProfit` выше; для ордеров на продажу (`SELL`) – наоборот. В вашем случае для определения `StopLoss` и `TakeProfit` вам потребуется использовать данные последней свечи. Уберем из функции `OpenOrder` лишнюю загрузку данных последней закрытой свечи, так как эта логика уже не будет использоваться непосредственно в функции `OpenOrder`. Вместо этого, данные для расчёта `StopLoss` и `TakeProfit` должны быть подготовлены и переданы в `OpenOrder` в качестве аргументов. Определим `StopLoss` и `TakeProfit` следующим образом: - Для `BUY` ордера: - `StopLoss` = Цена низа (Low) последней свечи. - `TakeProfit` = Цена покупки + (High - Low) последней свечи. - Для `SELL` ордера: - `StopLoss` = Цена верха (High) последней свечи. - `TakeProfit` = Цена продажи - (High - Low) последней свечи. ```cpp void OpenOrder(ENUM_ORDER_TYPE type, double lots, string orderMagic, double lastLow, double lastHigh) { double stopLoss = lastLow; double takeProfit; // Определим цену для типа ордера double orderPrice = type == ORDER_TYPE_BUY ? SymbolInfoDouble(_Symbol, SYMBOL_ASK) : SymbolInfoDouble(_Symbol, SYMBOL_BID); // Рассчитываем TakeProfit для разных типов ордеров if (type == ORDER_TYPE_BUY) { takeProfit = orderPrice + (lastHigh - lastLow); // StopLoss остается lastLow } else if (type == ORDER_TYPE_SELL) { takeProfit = orderPrice - (lastHigh - lastLow); stopLoss = lastHigh; // Для SELL StopLoss равен максимальной цене свечи } MqlTradeRequest request = {}; MqlTradeResult result = {}; request.action = TRADE_ACTION_DEAL; request.magic = StringToInteger(orderMagic + IntegerToString(GetTickCount())); request.symbol = Symbol(); request.volume = lots; request.type = type; request.price = orderPrice; request.sl = stopLoss; request.tp = takeProfit; request.deviation = 5; // Отправляем запрос if(!OrderSend(request, result)) { Print("OrderSend failed with error #", GetLastError()); } else { PrintFormat("Order sent successfully: retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order); } } ``` Теперь, когда вы вызываете `OpenOrder`, необходимо добавить аргументы для `lastLow` и `lastHigh`, которые должны соответствовать `Low` и `High` последней закрытой свечи для вашего таймфрейма и символа. Эта модификация добавит логику управления рисками к вашему трейдинговому роботу, что является критически важным аспектом в алгоритмической торговле.

question://+------------------------------------------------------------------+ //| best_ex2.mq5 | //| Copyright 2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ input ENUM_TIMEFRAMES TimeFrame = PERIOD_M1; datetime lastBarTime = 0; input double InitialLots = 0.1; bool send_b = false; bool send_s = false; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool YesOrNo() { MqlRates rates_array[]; // Получаем данные последней закрытой свечи if(CopyRates(_Symbol, _Period, 1, 1, rates_array) > 0) { double openCloseDifference = MathAbs(rates_array[0].open - rates_array[0].close); double highLowDifference = MathAbs(rates_array[0].high - rates_array[0].low); double bodyToShadowRatio = openCloseDifference / highLowDifference; double lowerBodyEnd; // Нижняя часть тела свечи if(rates_array[0].open > rates_array[0].close) { // Медвежья свеча lowerBodyEnd = rates_array[0].close; } else { // Бычья свеча lowerBodyEnd = rates_array[0].open; } double bodyPositionRatio = (lowerBodyEnd - rates_array[0].low) / highLowDifference; // Проверяем, удовлетворяет ли тело свечи всем условиям if(bodyToShadowRatio <= 0.3 && bodyPositionRatio >= 0.6) { Print("ДА"); return true; } } else { Print("Ошибка при получении данных свечи."); } Print("НЕТ"); return false; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- MqlRates rates[]; if(CopyRates(_Symbol, TimeFrame, 0, 1, rates) > 0) { lastBarTime = rates[0].time; } else { Print("Ошибка при получении информации о барах: ", GetLastError()); return (INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- send_b = false; send_s = false; datetime currentTime = TimeCurrent(); ENUM_TIMEFRAMES Time = TimeFrame; if(Time > 16000) { Time = (ENUM_TIMEFRAMES)((Time - 16384) * 60); } if(currentTime >= lastBarTime+Time*60) { if(YesOrNo() == true) { while(send_b != true) { OpenOrder(ORDER_TYPE_BUY, InitialLots, "B"); } } lastBarTime = lastBarTime+Time*60; } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OpenOrder(ENUM_ORDER_TYPE type, double lots, string orderMagic) { MqlRates rates_array[]; // Получаем данные последней закрытой свечи if(CopyRates(_Symbol, _Period, 1, 1, rates_array) > 0) { double highLowDifference = MathAbs(rates_array[0].high - rates_array[0].low); double StopLoss = rates_array[0].low; double TakeProfit = SymbolInfoDouble(_Symbol, SYMBOL_ASK) + highLowDifference; MqlTradeRequest request = {}; MqlTradeResult result = {}; // Заполнение полей структуры запроса на сделку request.action = TRADE_ACTION_DEAL; request.symbol = Symbol(); request.volume = lots; request.type = type; request.deviation = 5; request.magic = StringToInteger(orderMagic + IntegerToString(GetTickCount())); request.sl = StopLoss; request.tp = TakeProfit; //request.comment = "Auto trade order"; if(type == ORDER_TYPE_BUY) request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK); else if(type == ORDER_TYPE_SELL) request.price = SymbolInfoDouble(_Symbol, SYMBOL_BID); if(!OrderSend(request, result)) { Print("OrderSend failed with error #", GetLastError()); Print("Details: symbol=", request.symbol, ", volume=", request.volume, ", type=", (request.type==ORDER_TYPE_BUY?"BUY":"SELL"), ", price=", request.price); if(request.type == ORDER_TYPE_BUY) { send_b = false; } else if(request.type == ORDER_TYPE_SELL) { send_s = false; } } else if(request.type == ORDER_TYPE_BUY) { send_b = true; } else if(request.type == ORDER_TYPE_SELL) { send_s = true; } PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order); } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ почему вылезла такая ошибка event handling function not found best_ex2.mq5 1 1

answer:Ошибка "event handling function not found" в MetaTrader 5 (MQL5) обычно указывает на отсутствие одной или нескольких обязательных функций обработки событий в экспертном советнике или скрипте. В MQL5 есть несколько стандартных функций обработки событий, которые должны присутствовать в коде экспертного советника, даже если они не выполняют никаких действий. Для экспертного советника обязательными являются функции `OnInit()`, `OnDeinit()`, и `OnTick()`. В вашем случае, с предоставленным кодом, все эти функции присутствуют: - `OnInit()` — инициализация экспертного советника. - `OnDeinit()` — деинициализация экспертного советника. - `OnTick()` — основная функция, вызываемая при каждом новом тике для выбранного символа. Казалось бы, ваш код включает все эти функции, что должно было бы предотвратить появление такой ошибки. Однако, проблема может заключаться не в отсутствии этих функций, а в других аспектах, который может повлиять на компиляцию: 1. **Ошибки в синтаксисе:** Убедитесь, что в вашем коде нет синтаксических ошибок вне этих функций. Иногда, ошибка в другом месте кода может косвенно привести к проблеме. 2. **Ошибка в имени файла:** Имя скрипта или экспертного советника не должно содержать специальных символов и пробелов. Имя файла должно соответствовать правилам именования в MQL5. 3. **Проверьте, не поврежден ли файл:** В редких случаях, файл может быть поврежден из-за сбоев в системе или ошибок при его сохранении. Попробуйте создать новый файл и перенести туда свой код. 4. **Перезапустите MetaEditor и MetaTrader:** Иногда, проблема может быть решена простым перезапуском среды разработки и торговой платформы. 5. **Убедитесь, что используете актуальную версию MetaTrader и MetaEditor:** Проверьте, что у вас установлена последняя версия MetaTrader 5 и MetaEditor, так как в более старых версиях могут быть баги, которые были исправлены в последующих обновлениях. Если проблема сохраняется и не один из вышеописанных подходов не помогает, возможно, стоит более детально изучить код и логи компилятора, чтобы выявить проблему. В некоторых случаях может помочь консультация с сообществом MQL5 на официальном форуме или обращение к другим разработчикам за помощью.

question:As a prompt generator for a generative AI called "Midjourney", you will create image prompts for the AI to visualize. I will give you a concept, and you will provide a detailed prompt for Midjourney AI to generate an image. Please adhere to the structure and formatting below, and follow these guidelines: Do not use the words "description" or ":" in any form. Do not place a comma between [ar] and [v]. Write each prompt in one line without using return. Structure: [1] = 在冰天雪地里,一个女孩仰视这一条巨大的中国龙 [2] = a detailed description of [1] with specific imagery details. [3] = a detailed description of the scene's environment. [4] = a detailed description of the compositions. [5] = a detailed description of the scene's mood, feelings, and atmosphere. [6] = A style (e.g. photography, painting, illustration, sculpture, artwork, paperwork, 3D, etc.) for [1]. [7] = a detailed description of the scene's mood, feelings, and atmosphere. [ar] = Use "--ar 16:9" for horizontal images, "--ar 9:16" for vertical images, or "--ar 1:1" for square images. [v] = Use "--niji" for Japanese art style, or "--v 5" for other styles. Formatting: Follow this prompt structure: "/imagine prompt: [1], [2], [3], [4], [5], [6], [7], [ar] [v]". Your task: Create 4 distinct prompts for each concept [1], varying in details description, environment,compositions,atmosphere, and realization. Write your prompts in english. Do not describe unreal concepts as "real" or "photographic". Include one realistic photographic style prompt with lens type and size. Separate different prompts with two new lines. Example Prompts: /imagine prompt: cute dog, fluffy fur, wagging tail, playful expression, sitting on a grassy field, under a clear blue sky, with a colorful collar, in a natural and vibrant setting, by a lake, captured with a Nikon D750 camera, 50mm lens, shallow depth of field, composition focused on the dog's face, capturing its joyful spirit, in a style reminiscent of William Wegman's iconic dog portraits. --ar 1:1 --v 5.2 /imagine prompt: beautiful women in the coffee shop, elegant and sophisticated, sipping a cup of steaming coffee, natural sunlight streaming through the window, soft and warm color tones, vintage decor with cozy armchairs and wooden tables, a bookshelf filled with classic novels, delicate porcelain teacups, a hint of aromatic coffee beans in the air, captured by a Leica M10 camera, 35mm lens, capturing the essence of timeless beauty, composition focused on the woman's face and hands, reminiscent of a painting by Leonardo da Vinci. --ar 1:1 --v 5.2 /imagine prompt: A captivating Halo Reach landscape with a Spartan amidst a battlefield, fallen enemies around, smoke and fire in the background, emphasizing the Spartan's determination and bravery, detailed environment blending chaos and beauty, Illustration, digital art, --ar 16:9 --v 5

answer:/imagine prompt: In a serene forest clearing, a majestic white unicorn with a flowing mane stands gracefully, its horn glowing softly in the gentle moonlight, surrounded by twinkling fireflies, lush ferns, and towering ancient trees, creating a magical and enchanting atmosphere, realized in a painting style reminiscent of fantasy artworks by Brian Froud. --ar 16:9 --v 5 /imagine prompt: Deep underwater in a vibrant coral reef, a school of colorful tropical fish swims gracefully around a magnificent sunken shipwreck, adorned with shimmering treasures and overgrown with coral and seaweed, shafts of sunlight piercing through the clear blue water, casting a mystical and mysterious ambiance, captured in a detailed and realistic photography style with a wide-angle lens to showcase the depth and richness of the underwater world. --ar 9:16 /imagine prompt: Atop a snow-capped mountain peak, an ancient and wise dragon with scales glistening in the golden light of the setting sun, perched majestically overlooking a sprawling valley below, with mist swirling around the peaks and pine forests, imparting a sense of solitude and awe-inspiring grandeur, composed in a sweeping and epic landscape painting style evoking the mythical realms of ancient legends. --ar 16:9 --v 5 /imagine prompt: In a bustling futuristic cityscape at night, neon lights and holographic displays illuminate the skyscrapers towering above a crowded street bustling with hovercars and sleek robots, while a lone figure in a cloak walks through the throngs of busy people, a sense of isolation and alienation palpable in the cyberpunk-infused atmosphere, captured with a cinematic and gritty photography style with a telephoto lens to emphasize the contrast between light and shadow. --ar 9:16

Released under the Ad License.

has loaded