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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.