Разговор с искусственным интеллектом (ИИ) о форексе. - страница 32

 
Вот тот же код, написанный на MQL5:
#include <Arrays\ArrayObj.mqh>
#include <TA\SMA.mqh>
#include <TA\ADX.mqh>
#include <TA\RSI.mqh>
#include <TA\STOCH.mqh>
#include <TA\ICHIMOKU.mqh>
#include <TA\BBANDS.mqh>
#include <TA\ATR.mqh>
#include <TA\OBV.mqh>
#include <TA\CMF.mqh>
#include <TA\PPO.mqh>

// function to generate buy and sell signals
string generate_signals(const double &close[], const double &high[], const double &low[])
{
    // calculate moving averages
    ArrayObj ma50;
    ArrayObj ma200;
    ma50.SMA(close, 50);
    ma200.SMA(close, 200);
    
    // calculate ADX
    ArrayObj adx;
    adx.ADX(high, low, close, 14);
    
    // calculate RSI
    ArrayObj rsi;
    rsi.RSI(close, 14);
    
    // calculate Stochastic Oscillator
    ArrayObj stoch;
    stoch.STOCH(high, low, close, 14);
    
    // calculate Ichimoku Cloud
    ArrayObj ichimoku_cloud;
    ichimoku_cloud.ICHIMOKU(high, low);
    
    // calculate Bollinger Bands
    ArrayObj upperband;
    ArrayObj middleband;
    ArrayObj lowerband;
    upperband.BBANDS(close, 20, 2, 0, BB_MA_TYPE_EMA, BB_MA_TYPE_EMA, BB_MA_TYPE_EMA);
    middleband.BBANDS(close, 20, 2, 1, BB_MA_TYPE_EMA, BB_MA_TYPE_EMA, BB_MA_TYPE_EMA);
    lowerband.BBANDS(close, 20, 2, 2, BB_MA_TYPE_EMA, BB_MA_TYPE_EMA, BB_MA_TYPE_EMA);
    
    // calculate Average True Range
    ArrayObj atr;
    atr.ATR(high, low, close, 20);
    
    // calculate On-Balance Volume
    ArrayObj obv;
    obv.OBV(close, volume);
    
    // calculate Chaikin Money Flow
    ArrayObj cmf;
    cmf.CMF(high, low, close, volume, 20);
    
    // calculate pivot points
    ArrayObj pivot_points;
    pivot_points.PPO(close, high, low, 20);
    
    // identify trend
    string trend;
    if (ma50[0] > ma200[0])
        trend = "bullish";
    else if (ma50[0] < ma200[0])
        trend = "bearish";
    else
        trend = "neutral";
    
    // check trend strength
    string trend_strength;
    if (adx[0] > 25)
        trend_strength = "strong";
    else
        trend_strength = "weak";
    
    // check for momentum
    string momentum;
    if (rsi[0] > 70 || stoch[0] > 70)
        momentum = "overbought";
    else if (rsi[0] < 30 || stoch[0] < 30)
        momentum = "oversold";
    else
        momentum = "neutral";
    
    // check for trend reversals
    string trend_reversal;
    if (close[0] > ichimoku_cloud[6])
        trend_reversal = "bullish";
    else if (close[0] < ichimoku_cloud[2])
        trend_reversal = "bearish";
    else
        trend_reversal = "uncertain";
    
    // consider volatility
    string volatility;
    if (upperband[0] - lowerband[0] > atr[0])
        volatility = "high";
    else
        volatility = "low";
    
    // check volume
    string volume_indicator;
    if (obv[0] > cmf[0])
        volume_indicator = "buying pressure";
    else
        volume_indicator = "selling pressure";
    
    // check for support and resistance
    string support_resistance;
    if (close[0] > pivot_points[0])
        support_resistance = "resistance";
    else
        support_resistance = "support";
    
    // consider market sentiment
    string market_sentiment;
    if (ma50[0] > ma200[0])
        market_sentiment = "bullish";
    else
        market_sentiment = "bearish";
    
    // generate signals
    if (trend == "bullish" && trend_strength == "strong" && momentum == "neutral" && trend_reversal == "bullish"        && volume_indicator == "buying pressure" && support_resistance == "support" && market_sentiment == "bullish")
        return "buy";
    else if (trend == "bearish" && trend_strength == "strong" && momentum == "neutral" && trend_reversal == "bearish" 
        && volume_indicator == "selling pressure" && support_resistance == "resistance" && market_sentiment == "bearish")
        return "sell";
    else
        return "hold";
}

// example usage
double close[100];
double high[100];
double low[100];
double volume[100];

for (int i = 0; i < 100; i++)
{
    close[i] = Random();
    high[i] = Random();
    low[i] = Random();
    volume[i] = Random();
}

string signals = generate_signals(close, high, low);
Print(signals);

Это MQL5-версия кода для генерации сигналов на покупку и продажу по заданной стратегии. Надеюсь, это поможет! Дайте мне знать, если у вас есть какие-либо вопросы или вам нужны дополнительные разъяснения.
 
Lilita Bogachkova #:
Вот тот же код, написанный на MQL5: Это MQL5-версия кода для генерации сигналов на покупку и продажу по заданной стратегии. Надеюсь, это поможет! Дайте мне знать, если у вас есть какие-либо вопросы или вам нужны дополнительные разъяснения.

Какой версией он пользуется, папки ТА по дефолту нет в инклудах.

 
Valeriy Yastremskiy #:

Какой версией он пользуется, папки ТА по дефолту нет в инклудах.

Искусственный интеллект предпочитает писать на Python, я предполагаю, что у него появляется все больше и больше примеров кода на этом языке программирования. Далее сгенерированный код необходимо переписать для mql5. Это работает лучше, чем сразу просить написать код на mql5. Я не знаю, где он берет примеры кода mql5. Я сказала ему использовать существующие mqh-файлы MetaEditor, но он все равно возвращается к своей реализации.

Rewrite all mql5 code if necessary using "Indicators.mqh", "BillWilliams.mqh", "Oscilators.mqh", "Trend.mqh", "Volumes.mqh"

#include <Arrays\ArrayObj.mqh>
#include <TA\SMA.mqh>
#include <TA\ADX.mqh>
#include <TA\RSI.mqh>
#include <TA\STOCH.mqh>
#include <TA\ICHIMOKU.mqh>
#include <TA\BBANDS.mqh>
#include <TA\ATR.mqh>
#include <TA\OBV.mqh>
#include <TA\CMF.mqh>
#include <TA\PPO.mqh>

// function to generate buy and sell signals
string generate_signals(const double &close[], const double &high[], const double &low[])
{
    // calculate moving averages
    ArrayObj ma50;
    ArrayObj ma200;
    ma50.SMA(close, 50);
    ma200.SMA(close, 200);
    
    // calculate ADX
    ArrayObj adx;
    adx.ADX(high, low, close, 14);
    
    // calculate RSI
    ArrayObj rsi;
    rsi.RSI(close, 14);
    
    // calculate Stochastic Oscillator
    ArrayObj stoch;
    stoch.STOCH(high, low, close, 14);
    
    // calculate Ichimoku Cloud
    ArrayObj ichimoku_cloud;
    ichimoku_cloud.ICHIMOKU(high, low); .....
 
Lilita Bogachkova #:
Искусственный интеллект предпочитает писать на Python, я предполагаю, что у него появляется все больше и больше примеров кода на этом языке программирования. Далее сгенерированный код необходимо переписать для mql5. Это работает лучше, чем сразу просить написать код на mql5. Я не знаю, где он берет примеры кода mql5. Я сказала ему использовать существующие mqh-файлы MetaEditor, но он все равно возвращается к своей реализации.

Это понятно, но на мкл не компилится. Вот и вопрос, откуда не правильные на сегодня данные.

 
Valeriy Yastremskiy #:

Это понятно, но на мкл не компилится. Вот и вопрос, откуда не правильные на сегодня данные.

У него есть оговорка, что информация может быть устаревшей, особенно если изменения вступят в силу после 2021 года. Какой бы ни была причина, было введено возможное ограничение данных, чтобы предотвратить использование этого ИИ для коммерческой выгоды в тех случаях, когда эта выгода может быть получена путем анализа текущих данных.

 
Lilita Bogachkova #:

У него есть оговорка, что информация может быть устаревшей, особенно если изменения вступят в силу после 2021 года. Какой бы ни была причина, было введено возможное ограничение данных, чтобы предотвратить использование этого ИИ для коммерческой выгоды в тех случаях, когда эта выгода может быть получена путем анализа текущих данных.

Не, там в классы засунуты эти индикаторы, как подгружаются не знаю сходу))) И до 21 года тоже не было уже папки ТА

Если через хендлы вызывать и копировать, код совсем другой, с инклудниками похоже, но самих инклудников расчета индикаторов нет по дефолту.

 
Valeriy Yastremskiy #:

Не, там в классы засунуты эти индикаторы, как подгружаются не знаю сходу))) И до 21 года тоже не было уже папки ТА

Если через хендлы вызывать и копировать, код совсем другой, с инклудниками похоже, но самих инклудников расчета индикаторов нет по дефолту.

А Вы сможете поправить код не нарушая логики?

С Уважением! 

 
Valeriy Yastremskiy #:

Не, там в классы засунуты эти индикаторы, как подгружаются не знаю сходу))) И до 21 года тоже не было уже папки ТА

Нужно разобраться, как правильно составить ТЗ, чтобы он искал в самой последней доступной ему информации. Многое зависит от того, как поставлен вопрос или задание.

 
Speculator #:

А Вы сможете поправить код не нарушая логики?

С Уважением! 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Разговор с искусственным интеллектом (ИИ) о форексе.

Lilita Bogachkova, 2023.01.05 15:28

Нужно разобраться, как правильно составить ТЗ, чтобы он искал в самой последней доступной ему информации. Многое зависит от того, как поставлен вопрос или задание.


 
Lilita Bogachkova #:

Нужно разобраться, как правильно составить ТЗ, чтобы он искал в самой последней доступной ему информации. Многое зависит от того, как поставлен вопрос или задание.

Почему напрямую не спросить, что это за папка исходников TA и где её взять?