Нужна оптимизация хеджирование при помощи других валютных пар

Trabajo finalizado

Plazo de ejecución 7 días
Comentario del Cliente
просто супер)

Tarea técnica

Мне нужна оптимизация стратегий есть код для открытия сделки 3 валютных пар EURUSD, GBPUSD - по 1 лоту, EURGBP- 3 лот. Когда прибыль достигает в 17 долларов закрываются сделки и открываются заново. Вот нужно оптимизировать то есть проверить на исторических данных при каком объёме лотов будет максимальное количество итераций и при каком запросе то есть две на продажу и один на куплю или тому подобнее. Нужно проверить на год ли больше на исторических данных. Если будут вопросы задавайте. Ниже будет рабочий код но он работает в реальном времени мне нужно чтоб он работал на тестере стратегий и на исторических данных.

//------------------------------------------------------------//

#property copyright "Copyright 2023, MetaQuotes Ltd."

#property link      "https://www.mql5.com"

#property version   "1.00"

//+------------------------------------------------------------------+

//| Скрипт для автоматического закрытия и открытия сделок            |

//+------------------------------------------------------------------+

#include <Trade\Trade.mqh>


CTrade trade;

input double target_profit = 17.0; // Целевая прибыль в долларах


double max_profit = 0.0;  // Переменная для хранения максимальной прибыли

double max_drawdown = 0.0; // Переменная для хранения максимальной просадки

int iteration_count = 0;   // Переменная для хранения количества итераций


//+------------------------------------------------------------------+

//| Скрипт для открытия и управления тремя сделками                  |

//+------------------------------------------------------------------+

void OnTick()

{

   static bool positions_opened = false;


   // Открытие позиций, если еще не открыты

   if (!positions_opened && PositionsTotal() == 0)

   {

      OpenThreePositions();

      positions_opened = true;

   }

   

   double total_profit = CheckTotalProfit();

   

   // Выводим отладочные сообщения для отслеживания прибыли

   Print("Текущая общая прибыль: ", total_profit);

   Print("Целевая прибыль: ", target_profit);

   

   // Обновление максимальной прибыли и просадки

   UpdateMaxProfitAndDrawdown(total_profit);

   

   // Вывод текущей максимальной просадки и количества итераций

   Print("Максимальная просадка: ", max_drawdown);

   Print("Количество итераций: ", iteration_count);

   

   // Если достигнута целевая прибыль

   if (total_profit >= target_profit)

   {

      iteration_count++;  // Увеличиваем количество итераций при достижении целевой прибыли

      Print("Достигнута целевая прибыль. Закрываем позиции и открываем новые.");

      CloseAllPositions();

      OpenThreePositions();

   }

}


//+------------------------------------------------------------------+

//| Функция для открытия трех позиций                                |

//+------------------------------------------------------------------+

void OpenThreePositions()

{

   double lot_size = 1;

   

   if (OpenPosition("EURUSD", ORDER_TYPE_SELL, lot_size * 0.7))

      Print("EURUSD позиция открыта.");


   if (OpenPosition("EURGBP", ORDER_TYPE_SELL, lot_size * 3))

      Print("EURGBP позиция открыта.");


   if (OpenPosition("GBPUSD", ORDER_TYPE_SELL, lot_size * 0.7))

      Print("GBPUSD позиция открыта.");


   Print("Три новые позиции открыты.");

}


//+------------------------------------------------------------------+

//| Функция для открытия позиции                                     |

//+------------------------------------------------------------------+

bool OpenPosition(string symbol, ENUM_ORDER_TYPE type, double lot_size)

{

   double price = (type == ORDER_TYPE_BUY) ? SymbolInfoDouble(symbol, SYMBOL_ASK) : SymbolInfoDouble(symbol, SYMBOL_BID);

   

   if (!trade.PositionOpen(symbol, type, lot_size, price, 0, 0, "Позиция открыта скриптом"))

   {

      Print("Ошибка открытия позиции для ", symbol, ". Ошибка: ", GetLastError());

      return false;

   }

   return true;

}


//+------------------------------------------------------------------+

//| Функция для проверки общей прибыли                               |

//+------------------------------------------------------------------+

double CheckTotalProfit()

{

   double total_profit = 0;

   for (int i = 0; i < PositionsTotal(); i++)

   {

      if (PositionSelectByTicket(PositionGetTicket(i)))

      {

         total_profit += PositionGetDouble(POSITION_PROFIT);

      }

   }

   return total_profit;

}


//+------------------------------------------------------------------+

//| Функция для обновления максимальной прибыли и просадки           |

//+------------------------------------------------------------------+

void UpdateMaxProfitAndDrawdown(double current_profit)

{

   // Обновление максимальной прибыли

   if (current_profit > max_profit)

      max_profit = current_profit;

   

   // Вычисление текущей просадки

   double current_drawdown = max_profit - current_profit;

   

   // Обновление максимальной просадки, если текущая больше

   if (current_drawdown > max_drawdown)

      max_drawdown = current_drawdown;

}


//+------------------------------------------------------------------+

//| Функция для закрытия всех позиций                                |

//+------------------------------------------------------------------+

void CloseAllPositions()

{

   for (int i = PositionsTotal() - 1; i >= 0; i--)

   {

      if (PositionSelectByTicket(PositionGetTicket(i)))

      {

         trade.PositionClose(PositionGetTicket(i));

      }

   }

   Print("Все позиции закрыты.");

}


Han respondido

1
Desarrollador 1
Evaluación
(29)
Proyectos
32
9%
Arbitraje
0
Caducado
0
Libre
2
Desarrollador 2
Evaluación
(9)
Proyectos
9
0%
Arbitraje
0
Caducado
0
Libre
3
Desarrollador 3
Evaluación
Proyectos
1
0%
Arbitraje
0
Caducado
0
Libre
Solicitudes similares
Если ли возможность реализовать фюьчерсную торговлю на биржах (Байбит,БингХ) через терминал МТ4 или МТ5 . Если да то как это выглядит ? Моя система торгует на МТ и происходит открытие сделок на бирже
Нужен телеграм бот который по запросу валютной пары и времени экспирации будет давать сигнал, например EUR USD 5 минут и он выдаёт куда открывать сделку. Пример прилагаю скрином. Так же важно что бы он давал сигналы на ОТС котировках брокера Pocket option. Так же нужно что бы через бот можно было пройти регистрацию
Нужен робот в виде телеграм бота для ручной торговли который выдает тот самый бот в телеграмм скрины в виде примера показаны ниже пример EUR/USD сигнал вниз таймфрейм 1 минута нужно сделать бот в телеграмм очень качественным который может делать хоть и не частые но очень верные сигналы P.S он так же должен давать сигналы на OTC
**Техническое задание (ТЗ) для торгового робота на платформе Pocket Option** Здравствуйте! Мне нужен торговый робот для работы на платформе **Pocket Option** (бинарные опционы). Основная задача робота – открывать сделки по стратегии **мартингейл**. В случае неудачной сделки робот должен увеличивать сумму следующей ставки в **2,5 раза**, пока не будет достигнута прибыль. Однако, мне нужен робот с более «умным»

Información sobre el proyecto

Presupuesto
30+ USD
Para el ejecutor
27 USD