ознакомился недавно с прекрасным чатом GPT
к сожалению, сам кодить не умею, а разные идеи тестить хочется. И либо нужно платить деньги, либо днями сидеть за графиками.
А кошелек не резиновый...
Короче, попробовал самую простую задачу поставить чату. написать код для mql5 , где покупка происходит при перепроданности, а продажа при перекупленности.
выдал такой код
input int rsiPeriod = 14; // Период RSI
input int oversoldLevel = 30; // Уровень перепроданности
input int overboughtLevel = 70; // Уровень перекупленности
double TradeSizeOptimized()
{
double price = 0.0;
double margin = 0.0;
if(!SymbolInfoDouble(_Symbol, SYMBOL_ASK, price))
return 0.0;
if(!OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, 1.0, price, margin))
return 0.0;
if(margin <= 0.0)
return 0.0;
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double MaximumRisk = 0.05; // Максимальный риск (5%)
double DecreaseFactor = 5; // Коэффициент уменьшения позиции (5)
double lot = NormalizeDouble(accountBalance * MaximumRisk / margin, 2);
if(DecreaseFactor > 0)
{
// Код уменьшения лота после серии убыточных сделок (если требуется)
}
// ... остальной код ...
return lot; // Возвращаем размер позиции
}
void OnTick()
{
double rsiValue = iRSI(_Symbol, _Period, rsiPeriod, 0);
Print("Текущее значение RSI: ", rsiValue);
string buyComment = "Buy Order";
string sellComment = "Sell Order";
double positionSize = TradeSizeOptimized(); // Размер позиции
// Покупка при RSI < 30
if(rsiValue < oversoldLevel)
{
MqlTradeRequest buyRequest = {0};
buyRequest.action = TRADE_ACTION_DEAL;
buyRequest.symbol = _Symbol;
buyRequest.volume = positionSize; // Размер позиции
buyRequest.type = ORDER_TYPE_BUY;
buyRequest.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
buyRequest.comment = buyComment;
MqlTradeResult buyResult;
if(OrderSend(buyRequest, buyResult)) // Отправка ордера на покупку
Print("Ордер на покупку отправлен успешно");
else
Print("Не удалось отправить ордер на покупку, Ошибка: ", GetLastError());
}
// Продажа при RSI > 70
if(rsiValue > overboughtLevel)
{
MqlTradeRequest sellRequest = { 0 };
sellRequest.action = TRADE_ACTION_DEAL;
sellRequest.symbol = _Symbol;
sellRequest.volume = positionSize; // Размер позиции
sellRequest.type = ORDER_TYPE_SELL;
sellRequest.price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
sellRequest.comment = sellComment;
MqlTradeResult sellResult;
if(OrderSend(sellRequest, sellResult)) // Отправка ордера на продажу
Print("Ордер на продажу отправлен успешно");
else
Print("Не удалось отправить ордер на продажу, Ошибка: ", GetLastError());
}
}
Однако при компиляции ошибка в строке MqlTradeRequest sellRequest = { 0 }; (а именно значение ноль не подходит)
обойти ошибку с помощью чата не могу.
в чем проблема? я не правильные запросы делаю в чат или чат GPT еще не может писать такие коды?
Проси перепроверять код. Скидывай ему ошибки, он будет править код с их учетом.
Но конечно же лучше сначала научится базовому кодингу чтобы понимать синтаксическую структуру кода и править мелкие ошибки GPT.
Да и сам GPT может научить вас кодить, попросите его об этом, напиши "Научи меня кодить на MQL5 как чайника".
Проси перепроверять код. Скидывай ему ошибки, он будет править код с их учетом.
Но конечно же лучше сначала научится базовому кодингу чтобы понимать синтаксическую структуру кода и править мелкие ошибки GPT.
Да и сам GPT может научить вас кодить, попросите его об этом, напиши "Научи меня кодить на MQL5 как чайника".
так и делал. в итоге попросил расшифровать и написать возможные значения для каждой строки, ну и сам исправил ошибку . ранее чат упорно присылал одно и тоже. Сейчас при компилировании нет ошибки в коде, зато ошибка во время теста. 4756 , не может отравить ордер на покупку. (на продажу вообще не отправляет)
ерунда какая-то получается :(
так и делал. в итоге попросил расшифровать и написать возможные значения для каждой строки, ну и сам исправил ошибку . ранее чат упорно присылал одно и тоже. Сейчас при компилировании нет ошибки в коде, зато ошибка во время теста. 4756 , не может отравить ордер на покупку. (на продажу вообще не отправляет)
ерунда какая-то получается :(
Попробуйте такой вариант, а потом напишите - получается отправить запрос или нет:
MqlTradeRequest sellRequest; ZeroMemory(sellRequest); double price_pos_sell = SymbolInfoDouble(_Symbol, SYMBOL_BID); if(price_pos_sell>0) { sellRequest.action = TRADE_ACTION_DEAL; sellRequest.symbol = _Symbol; sellRequest.volume = positionSize; // Размер позиции sellRequest.type = ORDER_TYPE_SELL; sellRequest.price = price_pos_sell; sellRequest.comment = sellComment; MqlTradeResult sellResult; ZeroMemory(sellResult); if(OrderSend(sellRequest, sellResult)) // Отправка ордера на продажу Print("Ордер на продажу отправлен успешно"); else Print("Не удалось отправить ордер на продажу, Ошибка: ", GetLastError()); }
С уважением, Владимир.
Copilot на основе ChatGPT уже встроен в Метаедитор: https://www.metatrader5.com/ru/metaeditor/help/development/copilot
- www.metatrader5.com
ознакомился недавно с прекрасным чатом GPT
к сожалению, сам кодить не умею, а разные идеи тестить хочется. И либо нужно платить деньги, либо днями сидеть за графиками.
А кошелек не резиновый...
Короче, попробовал самую простую задачу поставить чату. написать код для mql5 , где покупка происходит при перепроданности, а продажа при перекупленности.
выдал такой код
input int rsiPeriod = 14; // Период RSI
input int oversoldLevel = 30; // Уровень перепроданности
input int overboughtLevel = 70; // Уровень перекупленности
double TradeSizeOptimized()
{
double price = 0.0;
double margin = 0.0;
if(!SymbolInfoDouble(_Symbol, SYMBOL_ASK, price))
return 0.0;
if(!OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, 1.0, price, margin))
return 0.0;
if(margin <= 0.0)
return 0.0;
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double MaximumRisk = 0.05; // Максимальный риск (5%)
double DecreaseFactor = 5; // Коэффициент уменьшения позиции (5)
double lot = NormalizeDouble(accountBalance * MaximumRisk / margin, 2);
if(DecreaseFactor > 0)
{
// Код уменьшения лота после серии убыточных сделок (если требуется)
}
// ... остальной код ...
return lot; // Возвращаем размер позиции
}
void OnTick()
{
double rsiValue = iRSI(_Symbol, _Period, rsiPeriod, 0);
Print("Текущее значение RSI: ", rsiValue);
string buyComment = "Buy Order";
string sellComment = "Sell Order";
double positionSize = TradeSizeOptimized(); // Размер позиции
// Покупка при RSI < 30
if(rsiValue < oversoldLevel)
{
MqlTradeRequest buyRequest = {0};
buyRequest.action = TRADE_ACTION_DEAL;
buyRequest.symbol = _Symbol;
buyRequest.volume = positionSize; // Размер позиции
buyRequest.type = ORDER_TYPE_BUY;
buyRequest.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
buyRequest.comment = buyComment;
MqlTradeResult buyResult;
if(OrderSend(buyRequest, buyResult)) // Отправка ордера на покупку
Print("Ордер на покупку отправлен успешно");
else
Print("Не удалось отправить ордер на покупку, Ошибка: ", GetLastError());
}
// Продажа при RSI > 70
if(rsiValue > overboughtLevel)
{
MqlTradeRequest sellRequest = { 0 };
sellRequest.action = TRADE_ACTION_DEAL;
sellRequest.symbol = _Symbol;
sellRequest.volume = positionSize; // Размер позиции
sellRequest.type = ORDER_TYPE_SELL;
sellRequest.price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
sellRequest.comment = sellComment;
MqlTradeResult sellResult;
if(OrderSend(sellRequest, sellResult)) // Отправка ордера на продажу
Print("Ордер на продажу отправлен успешно");
else
Print("Не удалось отправить ордер на продажу, Ошибка: ", GetLastError());
}
}
Однако при компиляции ошибка в строке MqlTradeRequest sellRequest = { 0 }; (а именно значение ноль не подходит)
обойти ошибку с помощью чата не могу.
в чем проблема? я не правильные запросы делаю в чат или чат GPT еще не может писать такие коды?
о
На данный момент самым верным решением оказалось формирование микрозапроса. Буквально пошаговое создание индикатора или стратегии. Это позволило понять какие запросы чату сложно реализовывать, а какие нет. Но я и пользуюсь версией 3.5 , говорят, что 4 сильно отличается. В любом случае мне удалось получить некие "скелеты" , которые мне уже проще передать дальше. Это сильно упрощает ТЗ и сразу есть понимание о конечном результате. В любом случае лучше. чем ничего. Но мне так и не удалось создать даже самого простого торгового советника. а вот простенькие индикаторы легко.
На данный момент самым верным решением оказалось формирование микрозапроса. Буквально пошаговое создание индикатора или стратегии. Это позволило понять какие запросы чату сложно реализовывать, а какие нет. Но я и пользуюсь версией 3.5 , говорят, что 4 сильно отличается. В любом случае мне удалось получить некие "скелеты" , которые мне уже проще передать дальше. Это сильно упрощает ТЗ и сразу есть понимание о конечном результате. В любом случае лучше. чем ничего. Но мне так и не удалось создать даже самого простого торгового советника. а вот простенькие индикаторы легко.
понятно. Спс за опыт и его передачу. Сам буду учитывать....
ну вот прямо сейчас пытаюсь на пайн скрипте что-то изобразить (н а трейдинг вью очень удобно тестить всякие идеи)
решил посмотреть, что получится... взял индикатор рсай, взял 7 тайм фремов и вывожу средневзвешенное значение. у каждого ТФ свой коэфицент в формуле. задача показать 1 линию, которая учитывает значение осциллятора сразу на 7 тайм фреймах .
так вот мы сначала сделали индикатор, где просто 7 тайм фреймов изображено, потом объединили в один, потом нанесли ЕМА, потом окрасили её...вот только так. а сразу всё не можем.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ознакомился недавно с прекрасным чатом GPT
к сожалению, сам кодить не умею, а разные идеи тестить хочется. И либо нужно платить деньги, либо днями сидеть за графиками.
А кошелек не резиновый...
Короче, попробовал самую простую задачу поставить чату. написать код для mql5 , где покупка происходит при перепроданности, а продажа при перекупленности.
выдал такой код
input int rsiPeriod = 14; // Период RSI
input int oversoldLevel = 30; // Уровень перепроданности
input int overboughtLevel = 70; // Уровень перекупленности
double TradeSizeOptimized()
{
double price = 0.0;
double margin = 0.0;
if(!SymbolInfoDouble(_Symbol, SYMBOL_ASK, price))
return 0.0;
if(!OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, 1.0, price, margin))
return 0.0;
if(margin <= 0.0)
return 0.0;
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double MaximumRisk = 0.05; // Максимальный риск (5%)
double DecreaseFactor = 5; // Коэффициент уменьшения позиции (5)
double lot = NormalizeDouble(accountBalance * MaximumRisk / margin, 2);
if(DecreaseFactor > 0)
{
// Код уменьшения лота после серии убыточных сделок (если требуется)
}
// ... остальной код ...
return lot; // Возвращаем размер позиции
}
void OnTick()
{
double rsiValue = iRSI(_Symbol, _Period, rsiPeriod, 0);
Print("Текущее значение RSI: ", rsiValue);
string buyComment = "Buy Order";
string sellComment = "Sell Order";
double positionSize = TradeSizeOptimized(); // Размер позиции
// Покупка при RSI < 30
if(rsiValue < oversoldLevel)
{
MqlTradeRequest buyRequest = {0};
buyRequest.action = TRADE_ACTION_DEAL;
buyRequest.symbol = _Symbol;
buyRequest.volume = positionSize; // Размер позиции
buyRequest.type = ORDER_TYPE_BUY;
buyRequest.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
buyRequest.comment = buyComment;
MqlTradeResult buyResult;
if(OrderSend(buyRequest, buyResult)) // Отправка ордера на покупку
Print("Ордер на покупку отправлен успешно");
else
Print("Не удалось отправить ордер на покупку, Ошибка: ", GetLastError());
}
// Продажа при RSI > 70
if(rsiValue > overboughtLevel)
{
MqlTradeRequest sellRequest = { 0 };
sellRequest.action = TRADE_ACTION_DEAL;
sellRequest.symbol = _Symbol;
sellRequest.volume = positionSize; // Размер позиции
sellRequest.type = ORDER_TYPE_SELL;
sellRequest.price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
sellRequest.comment = sellComment;
MqlTradeResult sellResult;
if(OrderSend(sellRequest, sellResult)) // Отправка ордера на продажу
Print("Ордер на продажу отправлен успешно");
else
Print("Не удалось отправить ордер на продажу, Ошибка: ", GetLastError());
}
}
Однако при компиляции ошибка в строке MqlTradeRequest sellRequest = { 0 }; (а именно значение ноль не подходит)
обойти ошибку с помощью чата не могу.
в чем проблема? я не правильные запросы делаю в чат или чат GPT еще не может писать такие коды?