GPT 3.5 можно ли использовать для написания кода? и как?

 

ознакомился недавно с прекрасным чатом 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 еще не может писать такие коды? 

 
maxim1611:

ознакомился недавно с прекрасным чатом 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 как чайника".

 
Petr Zharuk #:

Проси перепроверять код. Скидывай ему ошибки, он будет править код с их учетом.
Но конечно же лучше сначала научится базовому кодингу чтобы понимать синтаксическую структуру кода и править мелкие ошибки GPT. 
Да и сам GPT может научить вас кодить, попросите его об этом, напиши "Научи меня кодить на MQL5 как чайника".

так и делал. в итоге попросил расшифровать и написать возможные значения для каждой строки, ну и сам исправил ошибку . ранее чат упорно присылал одно и тоже. Сейчас при компилировании нет ошибки в коде, зато ошибка во время теста. 4756 , не может отравить ордер на покупку. (на продажу вообще не отправляет) 

ерунда какая-то получается :( 

 
maxim1611 #:

так и делал. в итоге попросил расшифровать и написать возможные значения для каждой строки, ну и сам исправил ошибку . ранее чат упорно присылал одно и тоже. Сейчас при компилировании нет ошибки в коде, зато ошибка во время теста. 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

Помощь Copilot - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
В MetaEditor реализована интеграция с Copilot — продвинутым инструментом для автоматического дополнения кода. Он работает на основе моделей...
 
maxim1611:

ознакомился недавно с прекрасным чатом 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 еще не может писать такие коды? 


Там я через копилот формировал запросы - из опыта. В итоге он кодит - но требует проверок и уточнений.... мнение - если вы не шарите совсем в коде - то чтобы добиться от ИИ верного кода - особенно - по "нормальному" запросу - а не только трауктовка инд рси - то он вам все нервы измотает - пока что то дельное родит.... ;-)

В итоге мне удалось взять часть кода - которую мне предложил использовать копилот в МЕ. Он решил запрос и реализовал в коде - я понял логику предложенную и подсказанную копилотом.

Но это не является законченным решением его ответы мне по запросам. Чисто на уточнение подхода в реализации функции - да. Когда сам сразу не догонял как решать требуемую программную реализацию в коде.

Короче - пока шарить самому в коде надо. ;-)
Плюс надо уметь пользоваться этими запросами и их грамотно формировать.

Короче поэкспериментируйте - поиграйте запросами в МЕ  - сами все поймете....

 
Roman Shiredchenko #:
о

На данный момент самым верным решением оказалось формирование микрозапроса.  Буквально пошаговое создание индикатора или стратегии. Это позволило понять какие запросы чату сложно реализовывать, а какие нет. Но я и пользуюсь версией 3.5 , говорят, что 4 сильно отличается. В любом случае мне удалось получить некие "скелеты" , которые мне уже проще передать дальше. Это сильно упрощает ТЗ и сразу есть понимание о конечном результате. В любом случае лучше. чем ничего. Но мне так и не удалось создать даже самого простого торгового советника. а вот простенькие индикаторы легко. 

 
maxim1611 #:

На данный момент самым верным решением оказалось формирование микрозапроса.  Буквально пошаговое создание индикатора или стратегии. Это позволило понять какие запросы чату сложно реализовывать, а какие нет. Но я и пользуюсь версией 3.5 , говорят, что 4 сильно отличается. В любом случае мне удалось получить некие "скелеты" , которые мне уже проще передать дальше. Это сильно упрощает ТЗ и сразу есть понимание о конечном результате. В любом случае лучше. чем ничего. Но мне так и не удалось создать даже самого простого торгового советника. а вот простенькие индикаторы легко. 

понятно. Спс за опыт и его передачу. Сам буду учитывать....
 
Roman Shiredchenko #:
понятно. Спс за опыт и его передачу. Сам буду учитывать....

ну вот прямо сейчас пытаюсь на пайн скрипте что-то изобразить (н а трейдинг вью очень удобно тестить всякие идеи)  


решил посмотреть, что получится... взял индикатор рсай, взял 7 тайм фремов и вывожу средневзвешенное значение. у каждого ТФ свой коэфицент в формуле. задача показать 1 линию, которая учитывает значение осциллятора сразу на 7 тайм фреймах .

так вот мы сначала сделали индикатор, где просто 7 тайм фреймов изображено, потом объединили в один, потом нанесли ЕМА, потом окрасили её...вот только так. а сразу всё не можем.