找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 6|回复: 0

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

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-23 17:26:00 | 显示全部楼层 |阅读模式
用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());

            }

        }

    }

}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-12 06:47 , Processed in 0.104703 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表