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

Pendulum 1_01

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

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

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

О программе

Pendulum 1_01 — советник для MetaTrader 4, реализующий стратегию управления отложенными ордерами BUYSTOP и SELLSTOP. Советник рассчитывает уровни тейк-профита на основе диапазона цен за последние дни, автоматически масштабирует лоты в зависимости от количества активных ордеров и уровня баланса счёта.

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

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

Настройки программы

НастройкаОписание
t110 t110 — Текстовый разделитель-заголовок, отображаемый в интерфейсе настройки.
? ??????? ???????? ??????? MAGIC=0. (MAGIC) MAGIC — Магический номер для идентификации ордеров, управляемых советником. Если MAGIC=0, ордера не привязываются к магическому номеру.
Получить полный код

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

extern string   t110="------ ? ???????? ??????? MAGIC = 0 ------";
extern int      MAGIC=0;          //? ??????? ???????? ??????? MAGIC=0. 
double   Lot;                     //??? ??? ????????? ??????.
double   ruka;                    //???? ?????????? ???? ??? ????????????? ???????? ???????.
bool     Auto=true;               //???? ???., ????????????? ?????????????? ?????? ????, ???? ? 

bool     Ustan_BuyStop=true;      //????? ?? ?????? ???-C??? ???? ? ????? ?????? ? ??? ???.
bool     Ustan_SellStop=true;     //????? ?? ?????? C???-C???? ???? ? ????? ?????? ? ??? ???.
int      st_Step;                 //?????????? ? ??????? ?? ?????? ??????? ????

int      st_TrStop;               //????????-???? ???????? ???????. 

int      st_TrStep;               //??? ????? ???????? ???????.
int      PipsProfit;              //?????? ??? ???????? ????? ??????? 1, 2, 3, ...
int      Proskalz;                //??????????????? ? ??????? (????? ?????? ????? PipsProfit>0).
double   pipsruka;                //???????? ??? ??????? ? ?????.
bool     UseGlobalLevels=true;    //???./????. ??????????? ?????????? ??????? ???????/??????

double   Global_TakeProfit;       //?????????? ????-?????? (???????? ? ?????????).
double   Global_StopLoss;         //?????????? ????-???? (???????? ? ?????????).

double lot,sts,PNT,NewPrice,Price,Balans,Free,pips,glp,klv,prb,sred_profit;
double s_buy,s_sell,s_buystop,s_sellstop,s_buy_lot,s_buystop_lot,s_sell_lot,s_sellstop_lot;   //???????? ? ?????????? ??????
string SMB,com1,com2,com3,com4,com5;
int    MinLevel;
bool   fm,b,s;
double prc2,prc1,prc08,prc06,prc04,prc02,l1,l2,raznost,t_raznost,L,H,sr;
double min_lot,lot_ruka,MRG,T,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,balanc1,balanc2,balanc3,balanc4,balanc5,balanc6,balanc7,balanc8,balanc9,balanc10;

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

int deinit()
  {

  }

int start()
  {
      // код доступен только после оплаты
   }
   ObjectCreate("label_object1", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object1", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object1", OBJPROP_YDISTANCE, 17);
   ObjectSetText("label_object1", "Pendulum?  version 1_01",9, "Verdana", Red);

   ObjectCreate("label_object2", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object2", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object2", OBJPROP_YDISTANCE, 47);
   ObjectSetText("label_object2", StringConcatenate("0.01 ????:  ",(NormalizeDouble((balanc1),2))," ",AccountCurrency()),8, "Verdana", Orange);

   ObjectCreate("label_object3", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object3", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object3", OBJPROP_YDISTANCE, 57);
   ObjectSetText("label_object3", StringConcatenate("0.02 ????:  ",(NormalizeDouble((balanc1*3),2))," ",AccountCurrency()),8, "Verdana", Orange);

   ObjectCreate("label_object4", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object4", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object4", OBJPROP_YDISTANCE, 67);
   ObjectSetText("label_object4", StringConcatenate("0.03 ????:  ",(NormalizeDouble((balanc1*6),2))," ",AccountCurrency()),8, "Verdana", Orange);

   ObjectCreate("label_object5", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object5", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object5", OBJPROP_YDISTANCE, 77);
   ObjectSetText("label_object5", StringConcatenate("0.04 ????:  ",(NormalizeDouble((balanc1*9),2))," ",AccountCurrency()),8, "Verdana", Orange);

   ObjectCreate("label_object6", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object6", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object6", OBJPROP_YDISTANCE, 87);
   ObjectSetText("label_object6", StringConcatenate("0.05 ????:  ",(NormalizeDouble((balanc1*12),2))," ",AccountCurrency()),8, "Verdana", Orange);

   ObjectCreate("label_object7", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object7", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object7", OBJPROP_YDISTANCE, 97);
   ObjectSetText("label_object7", StringConcatenate("0.06 ????:  ",(NormalizeDouble((balanc1*15),2))," ",AccountCurrency()),8, "Verdana", Orange);

   ObjectCreate("label_object8", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object8", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object8", OBJPROP_YDISTANCE, 107);
   ObjectSetText("label_object8", StringConcatenate("0.07 ????:  ",(NormalizeDouble((balanc1*18),2))," ",AccountCurrency()),8, "Verdana", Orange);

   ObjectCreate("label_object11", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object11", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object11", OBJPROP_YDISTANCE, 37);
   ObjectSetText("label_object11", StringConcatenate("?????? ????:  ",(ruka)),8, "Verdana", Orange);

if (Auto==true){Auto();}

l1=lot;l2=Lot*ruka;
raznost=l2-l1;//??????? ???????? ????? ????????? ????? ? ????? ? ?????
t_raznost=MarketInfo(SMB,MODE_TICKVALUE)*raznost;
prc2=(AccountBalance()/100)*2;     //2%
prc1=(AccountBalance()/100)*1;     //1%
prc08=(AccountBalance()/100)*0.8;  //0.8%
prc06=(AccountBalance()/100)*0.6;  //0.6%
prc04=(AccountBalance()/100)*0.4;  //0.4%
prc02=(AccountBalance()/100)*0.2;  //0.2%
if(t_raznost*10>=prc2)                            {Global_TakeProfit=2;}
if(t_raznost*10>=prc1 && t_raznost*10<prc2)       {Global_TakeProfit=1;}
if(t_raznost*10>=prc08 && t_raznost*10<prc1)      {Global_TakeProfit=0.8;}
if(t_raznost*10>=prc06 && t_raznost*10<prc08)     {Global_TakeProfit=0.6;}
if(t_raznost*10>=prc04 && t_raznost*10<prc06)     {Global_TakeProfit=0.4;}
if(t_raznost*10>=prc02 && t_raznost*10<prc04)     {Global_TakeProfit=0.2;}
if(t_raznost*10<=prc02)                           {Global_TakeProfit=0.2;}

for(int i=1;i<=2;i++)
  {
  L=L+iLow(Symbol(),PERIOD_D1,1);
  H=H+iHigh(Symbol(),PERIOD_D1,1);
  }

sr=((H-L)/i)*10000;
sr=(NormalizeDouble((sr),0));
PipsProfit=sr/10;
PipsProfit=(NormalizeDouble((PipsProfit),0)); if(PipsProfit<1){PipsProfit=1;}
st_Step=(sr-PipsProfit-Proskalz);           if(st_Step<15){return(0);}
st_TrStop=(sr-PipsProfit-Proskalz);         if(st_TrStop<15){return(0);}
L=0;H=0;

  lot=Lot;           //????
  sts=st_TrStop;     //?????? ???????? ???????
  Balans=AccountBalance();
  Free=AccountEquity();
  pips=PipsProfit;
  glp=Balans+(Balans/100*Global_TakeProfit);
  glp=(NormalizeDouble((glp),2));

  if(OrdersHistoryTotal()>0){chet();}

for (int q=OrdersTotal(); q>=0; q--)
  {
  if (OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==true)
    {
    if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC)continue;
      {          
      if(OrderType()==OP_BUY)      {s_buy++; s_buy_lot=s_buy_lot+OrderLots();}
      if(OrderType()==OP_BUYSTOP)  {s_buystop++; s_buystop_lot=s_buystop_lot+OrderLots();}
      if(OrderType()==OP_SELL)     {s_sell++; s_sell_lot=s_sell_lot+OrderLots();}
      if(OrderType()==OP_SELLSTOP) {s_sellstop++;s_sellstop_lot=s_sellstop_lot+OrderLots();}
      }
    }
  }

if (s_buy+s_sell==0) {ustorder();}

if (s_buy+s_sell>0){st_TrStop=0;com1="????? ???????? ???????  - ????. (";} //???? ???? ???????? ????? ????. ????? ????????
if(st_TrStop>0){tr_stop();com1="????? ???????? ???????  - ???. (";}//????????? ? ??????

if (s_buy+s_sell==1){plecho1();}

if (s_buy+s_sell==2){plecho2();}

if (s_buy+s_sell==3){plecho3();}

if (s_buy+s_sell==4){plecho4();}

if (s_buy+s_sell==5){plecho5();}

if (s_buy+s_sell==6){plecho6();}

if (s_buy+s_sell==7){plecho7();}

if (s_buy+s_sell==8){plecho8();}

if (s_buy+s_sell>1 && UseGlobalLevels==true){PipsProfit=0;com2="????????  - ????. (";}
if (s_buy+s_sell>1 && UseGlobalLevels==false){pips();com2="????????  - ???. (";}
if (s_buy+s_sell==1){pips();com2="????????  - ???. (";}
if (s_buy+s_sell==0){com2="????????  - ???. (";}
if (PipsProfit==0 || PipsProfit>4)com3=" ???????";
if (PipsProfit==1)com3=" ?????";
if (PipsProfit>2 && PipsProfit<5)com3=" ?????a";

if (s_buy+s_sell>1 && s_buy+s_sell<11   && UseGlobalLevels==true && (Free-Balans)>=(Balans/100*Global_TakeProfit)){glob_profit();}
if (s_buy+s_sell==11){glob_stop();}

if(Lot>0)
{  
Comment("???????? ??????? ??? ",SMB,":","\n",
        "buy  - ",s_buy," (",s_buy_lot,")","   sell  - ",s_sell," (",s_sell_lot,")","\n",
        "buystop  - ",s_buystop," (",s_buystop_lot,")","  sellstop  - ",s_sellstop," (",s_sellstop_lot,")","\n",
        com1,st_TrStop,")","\n",com2,PipsProfit,com3,")","\n",
        "--- ?????????? ?????? ---","\n",glp," ",AccountCurrency()," (",Global_TakeProfit," %)","\n",
        "???-?? ?????? - ",klv,"\n","??????? - ",prb," ",AccountCurrency(),"\n",
        "??????? ??????? - ",sred_profit," ",AccountCurrency());
}
if(Lot==0)
{
balanc1=(NormalizeDouble((balanc1),2));
Comment(com4,"\n",com5,"\n","??????? - ",balanc1," ",AccountCurrency());
}

s_buy=0;s_buystop=0;s_sell=0;s_sellstop=0;s_buy_lot=0;s_buystop

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

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

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

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

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

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

Стоимость полного кода
1 526,10₽ ≈ $18.65