← К каталогу
Исходный код · ID 2587

oco_ea(1).mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Представлен торговый советник для платформы MetaTrader 4, реализующий систему OCO (One Cancels Other — «один отменяет другой»). Советник позволяет одновременно задавать несколько отложенных ордеров (Buy Limit, Buy Stop, Sell Limit, Sell Stop) и автоматически исполнять их при достижении ценовых уровней. После срабатывания ордера позиция открывается по рыночной цене и модифицируется с установкой стоп-лосса и тейк-профита.

Логика работы основана на глобальных переменных MetaTrader, в которых хранятся цены отложенных ордеров и параметры управления. При достижении цены срабатывания советник отправляет рыночный ордер через торговый API, а затем модифицирует его, устанавливая уровни Stop Loss и Take Profit. Если активирован режим OCO, после открытия одной позиции все остальные отложенные ордера сбрасываются.

Советник отображает текущие цены отложенных ордеров и рыночную информацию в комментариях на графике. При успешном исполнении ордера воспроизводится звуковой сигнал. Параметры, такие как объём позиции, расстояние стоп-лосса и тейк-профита в пунктах, а также режим OCO, управляются через глобальные переменные платформы.

Получить полный код

Поиск по коду файла

#property strict
#include <stdlib.mqh>
#include <WinUser32.mqh>

string dtbahl()
  {
   string dt="Local Time : "+TimeToStr(LocalTime(),TIME_DATE|TIME_SECONDS)+
             "        r**************c*@gmail.coom"+"\n"+
             "Bid :"+DoubleToStr(Bid,Digits)+" Ask :"+DoubleToStr(Ask,Digits)+
             " High :"+DoubleToStr(High[0],Digits)+" Low :"+DoubleToStr(Low[0],Digits);
   return (dt);
  }

bool res;

bool GlobalVar_init()
  {
   bool InitGlobalVar=false;
   if(!GlobalVariableCheck("OCO_lots"))
     {
      GlobalVariableSet("OCO_lots",0.1);
      InitGlobalVar=(InitGlobalVar || true);
     }

   if(!GlobalVariableCheck("OCO_tP_Pips"))
     {
      GlobalVariableSet("OCO_tP_Pips",300);
      InitGlobalVar=(InitGlobalVar || true);
     }

   if(!GlobalVariableCheck("OCO_sL_Pips"))
     {
      GlobalVariableSet("OCO_sL_Pips",300);
      InitGlobalVar=(InitGlobalVar || true);
     }

   if(!GlobalVariableCheck("OCO_oCO"))
     {
      GlobalVariableSet("OCO_oCO",1);
      InitGlobalVar=(InitGlobalVar || true);
     }

   if(!GlobalVariableCheck("OCO_BUY_LIMIT"))
     {
      GlobalVariableSet("OCO_BUY_LIMIT",0);
      InitGlobalVar=(InitGlobalVar || true);
     }

   if(!GlobalVariableCheck("OCO_SELL_LIMIT"))
     {
      GlobalVariableSet("OCO_SELL_LIMIT",0);
      InitGlobalVar=(InitGlobalVar || true);
     }

   if(!GlobalVariableCheck("OCO_BUY_STOP"))
     {
      GlobalVariableSet("OCO_BUY_STOP",0);
      InitGlobalVar=(InitGlobalVar || true);
     }

   if(!GlobalVariableCheck("OCO_SELL_STOP"))
     {
      GlobalVariableSet("OCO_SELL_STOP",0);
      InitGlobalVar=(InitGlobalVar || true);
     }

   if(!GlobalVariableCheck("OCO_confirmation"))
     {
      GlobalVariableSet("OCO_confirmation",0);
      InitGlobalVar=(InitGlobalVar || true);
     }

   return(InitGlobalVar);
  }  

int init()
  {
      // код доступен только после оплаты
   }

int deinit()
  {

   return(0);
  }

void reset_variable()
  {
   GlobalVariableSet("OCO_BUY_LIMIT",0);
   GlobalVariableSet("OCO_SELL_LIMIT",0);
   GlobalVariableSet("OCO_BUY_STOP",0);
   GlobalVariableSet("OCO_SELL_STOP",0);
   GlobalVariableSet("OCO_confirmation",0);
  }

int  ticket=0;
double takeprofit=0;
double stoploss=0;

int start()
  {
      // код доступен только после оплаты
   }

   string DisplayTime=dtbahl();
   if(GlobalVariableGet("OCO_BUY_STOP")>0)
      DisplayTime=DisplayTime+"\n"+"BUY STOP  AT "+DoubleToStr(GlobalVariableGet("OCO_BUY_STOP"),Digits);
   if(GlobalVariableGet("OCO_BUY_LIMIT")>0)
      DisplayTime=DisplayTime+"\n"+"BUY LIMIT AT "+DoubleToStr(GlobalVariableGet("OCO_BUY_LIMIT"),Digits);
   if(GlobalVariableGet("OCO_SELL_LIMIT")>0)
      DisplayTime=DisplayTime+"\n"+"SELL LIMIT AT "+DoubleToStr(GlobalVariableGet("OCO_SELL_LIMIT"),Digits);
   if(GlobalVariableGet("OCO_SELL_STOP")>0)
      DisplayTime=DisplayTime+"\n"+"SELL STOP AT "+DoubleToStr(GlobalVariableGet("OCO_SELL_STOP"),Digits);
   Comment(DisplayTime);

   if(GlobalVariableGet("

Показано первые 50% кода (символов: 4750)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
475₽ ≈ $5.81