设为首页 收藏本站 切换语言

编程小白用GPT编写的风控程序,懂的帮忙看看有哪些问题

| 发表于 2023-9-22 17:29:11 | 显示全部楼层 |复制链接
用GPT3.5版本编写的代码,经过反复给GPT纠错,终于修改好没有报错了,但是运行并不能达到逻辑要求。
一运行就把所有订单平仓了,懂得大佬帮忙看看哪里出了问题。

基于MQL4语言写个风控程序
1、整体止损金额N全平
2、整体止盈金额N全平
3、多单止盈金额N全平
4、多单止损金额N全平
5、空单止盈金额N全平
6、空单止损金额N全平

GPT3.5编写的代码

//+------------------------------------------------------------------+
//| 输入参数设置                                                   |
//+------------------------------------------------------------------+
input double MaxTotalLoss = -100.0;  // 整体止损金额
input double MaxTotalProfit = 200.0; // 整体止盈金额
input double MaxLongProfit = 50.0;   // 多单止盈金额
input double MaxLongLoss = -30.0;    // 多单止损金额
input double MaxShortProfit = 40.0;  // 空单止盈金额
input double MaxShortLoss = -20.0;   // 空单止损金额

//+------------------------------------------------------------------+
//| 主函数                                                           |
//+------------------------------------------------------------------+
int start()
{
    // 获取账户净值
    double accountEquity = AccountEquity();

    // 计算多单和空单的盈利和亏损
    double longProfit = 0.0;
    double shortProfit = 0.0;

    for (int i = 0; i < OrdersTotal(); i++)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() == OP_BUY)
            {
                longProfit += OrderProfit();
            }
            else if (OrderType() == OP_SELL)
            {
                shortProfit += OrderProfit();
            }
        }
    }

    // 检查整体止损和止盈
    if (accountEquity <= MaxTotalLoss || accountEquity >= MaxTotalProfit)
    {
        // 平仓所有仓位
        CloseAllPositions();
    }

    // 检查多单止盈和止损
    if (longProfit >= MaxLongProfit || longProfit <= MaxLongLoss)
    {
        // 平多单仓位
        CloseLongPositions();
    }

    // 检查空单止盈和止损
    if (shortProfit >= MaxShortProfit || shortProfit <= MaxShortLoss)
    {
        // 平空单仓位
        CloseShortPositions();
    }

    return(0);
}

// 平仓所有多单仓位
void CloseLongPositions()
{
    for (int i = 0; i < OrdersTotal(); i++)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() == OP_BUY)
            {
                double closePrice = MarketInfo(OrderSymbol(), MODE_BID);
                int closeResult = OrderClose(OrderTicket(), OrderLots(), closePrice, 2, clrNONE);

                // 检查平仓结果
                if (closeResult > 0)
                {
                    Print("平仓成功,订单号:", closeResult);
                }
                else
                {
                    Print("平仓失败,错误代码:", GetLastError());
                }
            }
        }
    }
}

// 平仓所有空单仓位
void CloseShortPositions()
{
    for (int i = 0; i < OrdersTotal(); i++)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() == OP_SELL)
            {
                double closePrice = MarketInfo(OrderSymbol(), MODE_ASK);
                int closeResult = OrderClose(OrderTicket(), OrderLots(), closePrice, 2, clrNONE);

                // 检查平仓结果
                if (closeResult > 0)
                {
                    Print("平仓成功,订单号:", closeResult);
                }
                else
                {
                    Print("平仓失败,错误代码:", GetLastError());
                }
            }
        }
    }
}


// 平仓所有仓位
void CloseAllPositions()
{
    for (int i = 0; i < OrdersTotal(); i++)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            double closePrice = MarketInfo(OrderSymbol(), OrderType() == OP_BUY ? MODE_BID : MODE_ASK);
            int closeResult = OrderClose(OrderTicket(), OrderLots(), closePrice, 2, clrNONE);

            // 检查平仓结果
            if (closeResult > 0)
            {
                Print("平仓成功,订单号:", closeResult);
            }
            else
            {
                Print("平仓失败,错误代码:", GetLastError());
            }
        }
    }
}


举报

评论 使用道具

精彩评论2

westwuwei
DDD
| 发表于 2023-9-23 10:06:09 | 显示全部楼层
https://www.metatrader5.com/zh/metaeditor/help/development/debug
举报

点赞 1 评论 使用道具

ea12213
C
| 发表于 2023-9-24 19:46:14 | 显示全部楼层
这么厉害了AI写
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)