manual gird ea @fxsignalspot.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «manual gird ea @fxsignalspot.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник MetaTrader 4 для сетевой торговли с ручным управлением. Программа выставляет сети отложенных ордеров (BuyStop, SellStop, BuyLimit, SellLimit) на заданном расстоянии друг от друга и помогает фиксировать прибыль при движении цены. Интерфейс содержит панель кнопок и полей ввода для настройки параметров сетей в реальном времени.
Основные возможности включают управление количеством ордеров в сети, настройку шага и начального уровня, расчёт лотов с добавкой и коэффициентом увеличения. Советник поддерживает фиксацию прибыли по уровням, трал профита с откатом, а также встречное закрытие позиций.
Торговля может быть отключена после достижения целевой прибыли. Доступны звуковые уведомления, отображение комментариев и визуальная индикация прибыли и убытков на панели. Работает с одним символом или со всеми символами на счёте.
Настройки программы
| Настройка | Описание |
|---|---|
| максимальное кол-во Buy (MaxBuy) | максимальное кол-во Buy — Максимальное количество открытых покупок |
| максимальное кол-во Sell (MaxSell) | максимальное кол-во Sell — Максимальное количество открытых продаж |
| кол-во ордеров сети BuyStop (OrdersBuyStop) | кол-во ордеров сети BuyStop — Количество ордеров в сети BuyStop |
| кол-во ордеров сети SellStop (OrdersSellStop) | кол-во ордеров сети SellStop — Количество ордеров в сети SellStop |
| кол-во ордеров сети BuyLimit (OrdersBuyLimit) | кол-во ордеров сети BuyLimit — Количество ордеров в сети BuyLimit |
| кол-во ордеров сети SellLimit (OrdersSellLimit) | кол-во ордеров сети SellLimit — Количество ордеров в сети SellLimit |
| _ | Разделитель — Разделитель настроек |
| Растояние от цены до первого Stop ордера ( если 0 то открывается с уровнем стоплевел ) (FirstLevelStop) | Растояние от цены до первого Stop ордера ( если 0 то открывается с уровнем стоплевел ) — Расстояние от цены до первого стоп-ордера; если 0, открывается с уровня стоплевел |
| шаг ордеров сети BuyStop (StepBuyStop) | шаг ордеров сети BuyStop — Шаг между ордерами в сети BuyStop |
| шаг ордеров сети SellStop (StepSellStop) | шаг ордеров сети SellStop — Шаг между ордерами в сети SellStop |
| Растояние от цены до первого Limit ордера ( если 0 то открывается с уровнем стоплевел ) (FirstLevelLimit) | Растояние от цены до первого Limit ордера ( если 0 то открывается с уровнем стоплевел ) — Расстояние от цены до первого лимитного ордера; если 0, открывается с уровня стоплевел |
| шаг ордеров сети BuyLimit (StepBuyLimit) | шаг ордеров сети BuyLimit — Шаг между ордерами в сети BuyLimit |
| шаг ордеров сети SellLimit (StepSellLimit) | шаг ордеров сети SellLimit — Шаг между ордерами в сети SellLimit |
| __ | Разделитель — Разделитель настроек |
| лот первого ордера от цены, далее по формуле (Lot) | лот первого ордера от цены, далее по формуле — Лот первого ордера от цены, далее рассчитывается по формуле с добавкой и коэффициентом |
| добавка к начальному лоту (LotPlus) | добавка к начальному лоту — Добавка к начальному лоту при расчёте лота каждого следующего ордера |
| Коэффициент увеличения (K_Lot) | Коэффициент увеличения — Коэффициент увеличения лота для каждого следующего ордера в сети |
| ___ | Разделитель — Разделитель настроек |
| закрываем buy при достижении профита (CloseProfitB) | закрываем buy при достижении профита — Закрытие всех покупок при достижении указанной прибыли |
| закрываем sell при достижении профита (CloseProfitS) | закрываем sell при достижении профита — Закрытие всех продаж при достижении указанной прибыли |
| закрываем все при достижении профита (ProfitClose) | закрываем все при достижении профита — Закрытие всех позиций при достижении указанной общей прибыли |
| старт трала при достижении профита (TralStart) | старт трала при достижении профита — Старт трала при достижении указанного уровня прибыли |
| закрывать все после отката на (TralClose) | закрывать все после отката на — Закрытие всех позиций после отката прибыли на указанное значение от пика |
| проскальзывание (slippage) | проскальзывание — Допустимое проскальзывание при исполнении ордеров |
| магик ордеров, если -1 то подхватит все (Magic) | магик ордеров, если -1 то подхватит все — Магический номер ордеров для идентификации; если -1, подхватываются все ордера |
| смещение панели по горизонтали (X) | смещение панели по горизонтали — Смещение торговой панели по горизонтали |
| смещение панели по вертикали (Y) | смещение панели по вертикали — Смещение торговой панели по вертикали |
| отключение торговли после взятия прибыли (TradeOFF) | отключение торговли после взятия прибыли — Отключение торговли после взятия прибыли |
| использовать встречное закрытие (CloseByON) | использовать встречное закрытие — Использовать встречное закрытие позиций путём закрытия одной позиции другой |
| Управлять всеми лимитными ордерами (AllSymbols) | Управлять всеми лимитными ордерами — Управлять всеми лимитными ордерами на разных символах, а не только текущим |
| Фиксированный размер трала (TrailingStop) | Фиксированный размер трала — Фиксированный размер трала в пунктах |
| Шаг трала (TrailingStep) | Шаг трала — Шаг трала для фиксированного размера перемещения стоп-лосса |
| Использовать звуковой сигнал (UseSound) | Использовать звуковой сигнал — Использовать звуковой сигнал при событиях |
| Показывать комментарий (ShowComment) | Показывать комментарий — Показывать комментарий на графике |
| Цвет значка модификации покупки (clModifyBuy) | Цвет значка модификации покупки — Цвет значка модификации покупки |
| Цвет значка модификации продажи (clModifySell) | Цвет значка модификации продажи — Цвет значка модификации продажи |
Поиск по коду файла
#property strict
#property description "Советник выставляет сети и помогает собирать профит с любого движения"
/*Советник сетевой помощник
Кнопки советника
"Buy Stop" - открывать сеть отложенных стоп ордеров на продажу
"Sell Stop" - открывать сеть отложенных стоп ордеров на покупку
"Buy Limit"- открывать сеть отложенных лимит ордеров на продажу
"Sell Limit" - открывать сеть отложенных лимит ордеров на покупку
"Close Buy" - кнопка закрытия всей сети и всех открытых позиций на покупку
"Close Sell" - кнопка закрытия всей сети и всех открытых позиций на продажу
"Close" - кнопка закрытия всей сети и всех открытых позиций
"Tral Profit" - кнопка при нажатии которой советник будет тралить профит всех позиций начиная от TralStart
В настройках советника
MaxBuy -максимальное кол-во Buy
MaxSell -максимальное кол-во Sell
OrdersBuyStop - кол-во ордеров сети BuyStop
OrdersSellStop - кол-во ордеров сети SellStop
OrdersBuyLimit - кол-во ордеров сети BuyLimit
OrdersSellLimit - кол-во ордеров сети SellLimit
StepBuyStop - шаг ордеров сети BuyStop
StepSellStop - шаг ордеров сети SellStop
StepBuyLimit - шаг ордеров сети BuyLimit
StepSellLimit - шаг ордеров сети SellLimit
Lot - лот первого ордера от цены, далее по формуле
LotPlus - добавка к начальному лоту
K_Lot - Коэффициент увеличения
CloseProfitB - закрываем buy при достижении профита
CloseProfitS - закрываем sell при достижении профита
ProfitClose - закрываем все при достижении профита
TralStart - старт трала при достижении профита
TralClose - закрывать все после отката на
slippage - проскальзывание
Magic - магик ордеров, если -1 то подхватит все
X - смещение панели по горизонтали
Y - смещение панели по вертикали
TradeOFF - отключение торговли после взятия прибыли
Например
Lot = 0.1
LotPlus = 0.1
первый лот 0.1
второй 0.1+0.1=0.2
третий 0.2+0.1=0.3
четвёртый 0.3+0.1=0.4
---------------------
FirstLevel - Растояние от цены до первого ордера ( если 0 то открывается с уровнем стоплевел )
========================================
Фиксация прибыли 2-ва способа:
ProfitClose - прибыль в валюте депозита ( например ставим 100$при достижении общей прибыли сетки 100$ , она закроется)
TralStart - профит для старта трала в валюте депозита например 50$
TralClose - закрывается при снижении прибыли например те же 20$
Прибыль достигла 50, включился трал, прибыль продолжила расти до 60, потом откатилась на 20 и все закрылоссь при 40$ профита
отложки удаляются, выскакивает алерт с вопросом продолжить работу? При ответе О К - выставляется снова.
=========================================
Особенности закрытия ордеров
Сначала советник пытается закрыть все ордера встречно, потом закрываем рыночные, начиная с самых больших объемов а потом отложки..
extern int MaxBuy = 50; //максимальное кол-во Buy
extern int MaxSell = 50; //максимальное кол-во Sell
extern int OrdersBuyStop = 5; //кол-во ордеров сети BuyStop
extern int OrdersSellStop = 5; //кол-во ордеров сети SellStop
extern int OrdersBuyLimit = 5; //кол-во ордеров сети BuyLimit
extern int OrdersSellLimit = 5; //кол-во ордеров сети SellLimit
extern string _="";
extern int FirstLevelStop = 50; //Растояние от цены до первого Stop ордера ( если 0 то открывается с уровнем стоплевел )
extern int StepBuyStop = 100; //шаг ордеров сети BuyStop
extern int StepSellStop = 100; //шаг ордеров сети SellStop
extern int FirstLevelLimit = 110; //Растояние от цены до первого Limit ордера ( если 0 то открывается с уровнем стоплевел )
extern int StepBuyLimit = 100; //шаг ордеров сети BuyLimit
extern int StepSellLimit = 100; //шаг ордеров сети SellLimit
extern string __="";
extern double Lot = 0.10; //лот первого ордера от цены, далее по формуле
extern double LotPlus = 0.00; //добавка к начальному лоту
extern double K_Lot = 1.00; //Коэффициент увеличения
extern string ___="";
extern double CloseProfitB = 10; //закрываем buy при достижении профита
extern double CloseProfitS = 10; //закрываем sell при достижении профита
extern double ProfitClose = 10; //закрываем все при достижении профита
extern double TralStart = 10; //старт трала при достижении профита
extern double TralClose = 5; //закрывать все после отката на
extern int slippage = 5; // проскальзывание
extern int Magic = -1; //магик ордеров, если -1 то подхватит все
extern int X = 0; //смещение панели по горизонтали
extern int Y = 25; //смещение панели по вертикали
extern bool TradeOFF = true; //отключение торговли после взятия прибыли
extern bool CloseByON = true; //использовать встречное закрытие
extern bool AllSymbols = True; // Управлять всеми лимитными ордерами
extern int TrailingStop = 120; // Фиксированный размер трала
extern int TrailingStep = 20; // Шаг трала
extern bool UseSound = True; // Использовать звуковой сигнал
extern bool ShowComment = True; // Показывать комментарий
extern color clModifyBuy = Aqua; // Цвет значка модификации покупки
extern color clModifySell = Tomato; // Цвет значка модификации продажи
bool gbNoInit = False; // Флаг неудачной инициализации
string SoundSuccess = "ok.wav"; // Звук успеха
string SoundError = "timeout.wav"; // Звук ошибки
int NumberOfTry = 3; // Количество торговых попыток
#include <stdlib.mqh> // Стандартная библиотека
double STOPLEVEL;
double StopProfit=0;
string val,GV_kn_BS,GV_kn_SS,GV_kn_BL,GV_kn_SL,GV_kn_TrP,GV_kn_CBA,GV_kn_CSA,GV_kn_CA;
bool D,LANGUAGE;
int OnInit()
{
// код доступен только после оплаты
}
string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("BuyLimit");
case OP_SELLLIMIT: return("SellLimit");
case OP_BUYSTOP : return("BuyStop");
case OP_SELLSTOP : return("SellStop");
default : return("Unknown Operation");
}
}
color IIFc(bool condition, color ifTrue, color ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}
string IIFs(bool condition, string ifTrue, string ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
double op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);
if (pp!=op || sl!=os || tp!=ot) {
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm) {
if (UseSound) PlaySound(SoundSuccess); break;
} else {
er=GetLastError();
if (UseSound) PlaySound(SoundError);
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);
Sleep(1000*10);
}
}
}
}
void TrailingOrders() {
double di, pa, pb, pp, sl, tp;
pp=MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_SELLLIMIT) {
pa=MarketInfo(OrderSymbol(), MODE_BID);
if (OrderOpenPrice()-pa>(TrailingStop+TrailingStep-1)*pp) {
di=OrderOpenPrice()-pa-TrailingStop*pp;
if (OrderStopLoss() >0) sl=OrderStopLoss() -di; else sl=0;
if (OrderTakeProfit()>0) tp=OrderTakeProfit()-di; else tp=0;
ModifyOrder(pa+TrailingStop*pp, sl, tp);
}
}
if (OrderType()==OP_BUYLIMIT) {
pb=MarketInfo(OrderSymbol(), MODE_ASK);
if (pb-OrderOpenPrice()>(TrailingStop+TrailingStep-1)*pp) {
di=pb-OrderOpenPrice()-TrailingStop*pp;
if (OrderStopLoss() >0) sl=OrderStopLoss() +di; else sl=0;
if (OrderTakeProfit()>0) tp=OrderTakeProfit()+di; else tp=0;
ModifyOrder(pb-TrailingStop*pp, sl, tp);
}
}
}
void OnTick() {
// код доступен только после оплаты
}
void OnTimer()
{
if(!IsTradeAllowed()) return;
STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
OrdersBuyStop=(int)StringToInteger(ObjectGetString(0,"cm OrdersBuyStop",OBJPROP_TEXT));
OrdersSellStop=(int)StringToInteger(ObjectGetString(0,"cm OrdersSellStop",OBJPROP_TEXT));
OrdersBuyLimit=(int)StringToInteger(ObjectGetString(0,"cm OrdersBuyLimit",OBJPROP_TEXT));
OrdersSellLimit=(int)StringToInteger(ObjectGetString(0,"cm OrdersSellLimit",OBJPROP_TEXT));
FirstLevelStop=(int)StringToInteger(ObjectGetString(0,"cm FirstLevelStop",OBJPROP_TEXT));
FirstLevelLimit=(int)StringToInteger(ObjectGetString(0,"cm FirstLevelLimit",OBJPROP_TEXT));
StepBuyStop=(int)StringToInteger(ObjectGetString(0,"cm StepBuyStop",OBJPROP_TEXT));
StepSellStop=(int)StringToInteger(ObjectGetString(0,"cm StepSellStop",OBJPROP_TEXT));
StepBuyLimit=(int)StringToInteger(ObjectGetString(0,"cm StepBuyLimit",OBJPROP_TEXT));
StepSellLimit=(int)StringToInteger(ObjectGetString(0,"cm StepSellLimit",OBJPROP_TEXT));
CloseProfitB=StringToDouble(ObjectGetString(0,"cm CloseProfitB",OBJPROP_TEXT));
CloseProfitS=StringToDouble(ObjectGetString(0,"cm CloseProfitS",OBJPROP_TEXT));
ProfitClose=StringToDouble(ObjectGetString(0,"cm ProfitClose",OBJPROP_TEXT));
TralStart=StringToDouble(ObjectGetString(0,"cm TralStart",OBJPROP_TEXT));
TralClose=StringToDouble(ObjectGetString(0,"cm TralClose",OBJPROP_TEXT));
Lot=StringToDouble(ObjectGetString(0,"cm Lot",OBJPROP_TEXT));
LotPlus=StringToDouble(ObjectGetString(0,"cm LotPlus",OBJPROP_TEXT));
K_Lot=StringToDouble(ObjectGetString(0,"cm K_Lot",OBJPROP_TEXT));
TradeOFF=ObjectGetInteger(0,"cm off",OBJPROP_STATE);
double OL,OOP,Profit=0,ProfitB=0,ProfitS=0;
double OOPBS=0,OOPSS=0,OOPBL=0,OOPSL=0,OLBS=0,OLSS=0,OLBL=0,OLSL=0;
int OTBS=0,OTSS=0,OTBL=0,OTSL=0;
int Ticket,i,b=0,s=0,bs=0,ss=0,bl=0,sl=0,tip;
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))
{
tip = OrderType();
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Profit=OrderProfit()+OrderSwap()+OrderCommission();
Ticket=OrderTicket();
OL=OrderLots();
if(tip==OP_BUY)
{
ProfitB+=Profit;
b++;
}
if(tip==OP_SELL)
{
ProfitS+=Profit;
s++;
}
if(tip==OP_BUYSTOP)
{
if(OOPBS<OOP) {OOPBS=OOP;OTBS=Ticket;OLBS=OL;}
bs++;
}
if(tip==OP_SELLSTOP)
{
if(OOPSS>OOP || OOPSS==0) {OOPSS=OOP;OTSS=Ticket;OLSS=OL;}
ss++;
}
if(tip==OP_BUYLIMIT)
{
if(OOPBL>OOP || OOPBL==0) {OOPBL=OOP;OTBL=Ticket;OLBL=OL;}
bl++;
}
if(tip==OP_SELLLIMIT)
{
if(OOPSL<OOP) {OOPSL=OOP;OTSL=Ticket;OLSL=OL;}
sl++;
}
}
}
}
Profit=ProfitB+ProfitS;
ObjectSetString(0,"cm Close Buy",OBJPROP_TEXT,StringConcatenate("CloseBuy ",DoubleToStr(ProfitB,2)));
ObjectSetString(0,"cm Close Sell",OBJPROP_TEXT,StringConcatenate("CloseSell ",DoubleToStr(ProfitS,2)));
ObjectSetString(0,"cm Close",OBJPROP_TEXT,StringConcatenate("Close ",DoubleToStr(Profit,2)));
ObjectSetInteger(0,"cm Close Buy",OBJPROP_COLOR,Color(ProfitB));
ObjectSetInteger(0,"cm Close Sell",OBJPROP_COLOR,Color(ProfitS));
ObjectSetInteger(0,"cm Close",OBJPROP_COLOR,Color(Profit));
ObjectSetString(0,"cm Buy Stop",OBJPROP_TEXT,StringConcatenate("BuyStop ",bs));
ObjectSetString(0,"cm Sell Stop",OBJPROP_TEXT,StringConcatenate("SellStop ",ss));
ObjectSetString(0,"cm Buy Limit",OBJPROP_TEXT,StringConcatenate("BuyLimit ",bl));
ObjectSetString(0,"cm Sell Limit",OBJPROP_TEXT,StringConcatenate("SellLimit ",sl));
if(ObjectGetInteger(0,"cm Clear",OBJPROP_STATE))
{
ObjectsDeleteAll(0,OBJ_TEXT);
ObjectsDeleteAll(0,"#");
ObjectsDeleteAll(0,OBJ_ARROW);
ObjectsDeleteAll(0,OBJ_TREND);
ObjectSetInteger(0,"cm Clear",OBJPROP_STATE,false);
}
if(ObjectGetInteger(0,"cm Close Buy A",OBJPROP_STATE))
{
GlobalVariableSet(GV_kn_CBA,1);
ObjectSetInteger(0,"cm CloseProfitB",OBJPROP_COLOR,clrRed);
if(b!=0 && ProfitB>=CloseProfitB) ObjectSetInteger(0,"cm Close Buy",OBJPROP_STATE,true);
}
else {ObjectSetInteger(0,"cm CloseProfitB",OBJPROP_COLOR,clrLightGray);GlobalVariableDel(GV_kn_CBA);}
if(ObjectGetInteger(0,"cm Close Buy",OBJPROP_STATE))
{
if(b!=0) if(!CloseAll(OP_BUY)) Print("Error Order Close ",GetLastError());
else
{
if(TradeOFF) ObjectSetInteger(0,"cm Buy Stop",OBJPROP_STATE,false);
if(TradeOFF) ObjectSetInteger(0,"cm Buy Limit",OBJPROP_STATE,false);
ObjectSetInteger(0,"cm Close Buy",OBJPROP_STATE,false);
}
}
if(ObjectGetInteger(0,"cm Close Sell A",OBJPROP_STATE))
{
GlobalVariableSet(GV_kn_CSA,1);
ObjectSetInteger(0,"cm CloseProfitS",OBJPROP_COLOR,clrRed);
if(s!=0 && ProfitS>=CloseProfitS) ObjectSetInteger(0,"cm Close Sell",OBJPROP_STATE,true);
}
else {ObjectSetInteger(0,"cm CloseProfitS",OBJPROP_COLOR,clrLightGray);GlobalVariableDel(GV_kn_CSA);}
if(ObjectGetInteger(0,"cm Close Sell",OBJPROP_STATE))
{
if(s!=0) if(!CloseAll(OP_SELL)) Print("Error Order Close ",GetLastError());
else
{
if(TradeOFF) ObjectSetInteger(0,"cm Sell Stop",OBJPROP_STATE,false);
if(TradeOFF) ObjectSetInteger(0,"cm Sell Limit",OBJPROP_STATE,false);
ObjectSetInteger(0,"cm Close Sell",OBJPROP_STATE,false);
}
}
if(ObjectGetInteger(0,"cm Close A",OBJPROP_STATE))
{
GlobalVariableSet(GV_kn_CA,1);
ObjectSetInteger(0,"cm ProfitClose",OBJPROP_COLOR,clrRed);
if(b+s!=0 && Profit>=ProfitClose) ObjectSetInteger(0,"cm Close",OBJPROP_STATE,true);
}
else {ObjectSetInteger(0,"cm ProfitClose",OBJPROP_COLOR,clrLightGray);GlobalVariableDel(GV_kn_CA);}
if(ObjectGetInteger(0,"cm Close",OBJPROP_STATE))
{
if(s+b!=0) if(!CloseByOrders()) Print("Error Order Close By ",GetLastError());
else
{
if(TradeOFF) ObjectSetInteger(0,"cm Buy Stop",OBJPROP_STATE,false);
if(TradeOFF) ObjectSetInteger(0,"cm Buy Limit",OBJPROP_STATE,false);
if(TradeOFF) ObjectSetInteger(0,"cm Sell Stop",OBJPROP_STATE,false);
if(TradeOFF) ObjectSetInteger(0,"cm Sell Limit",OBJPROP_STATE,falПоказано первые 50% кода (символов: 31782)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.