mark harris script.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mark harris script.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный советник для платформы MetaTrader 4 предназначен для автоматического размещения отложенных ордеров типа Buy Stop и Sell Stop на рынке. Он работает в цикле обработки событий, проверяя разрешение на торговлю и состояние эксперта. Советник управляет позицией через несколько уровней с нарастающим расстоянием и объёмом лотов.
Поиск по коду файла
#property show_inputs
extern bool
UseBuyStop = true,
UseSellStop = true;
extern int
Slippage = 6,
TakeProfit = 0,
StopLoss = 0;
extern int
Levels = 4,
Initial_Level_Distance = 5,
Level_Distance_Increment = 5;
extern double
Lots = 0.01,
AddLots = 0.01;
datetime TT;
int MagicNumber;
int MyDigits;
double MyPoint;
string TicketComment = "Mark Harris Script";
bool Ready_Trade; //INPUT EA NAME HERE
int init()
{
// код доступен только после оплаты
}
int deinit()
{
Comment("");
return(0);
}
int start()
{
// код доступен только после оплаты
}
int subTotalTrade()
{
int
cnt,
total = 0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber) total++;
}
return(total);
}
void PlaceBuyPendingOrders(int levels, int level_distance,int increment, int price_distance,double addlots)
{
double OP = Bid+(price_distance*MyPoint);
int LV = price_distance;
double AL = addlots;
double Lotz = Lots;
for(int cnt=1;cnt<=levels;cnt++)
{
int ticket = 0;
LV = LV+increment;
ticket = subOpenPendingOrder(OP_BUYSTOP, OP, Lotz, TakeProfit,StopLoss);
Lotz = Lotz+AL;
if(ticket<0)cnt=cnt-1;
if(ticket>0)OP = OP+(LV*MyPoint);
}
}
void PlaceSellPendingOrders(int levels, int level_distance, int increment , int price_distance,double addlots)
{
double OP = Bid-(price_distance*MyPoint);
int LV = price_distance;
double AL = addlots;
double Lotz = Lots;
for(int cnt=1;cnt<=levels;cnt++)
{
int ticket = 0;
LV = LV+increment;
ticket = subOpenPendingOrder(OP_SELLSTOP, OP, Lotz, TakeProfit , StopLoss);
Lotz = Lotz+AL;
if(ticket<0)cnt=cnt-1;
if(ticket>0)OP = OP-(LV*MyPoint);
}
}
int subOpenPendingOrder(int type, double OpenPrice,double Lots ,double takeprofit,double stoploss)
{
int
ticket = 0,
err = 0,
c = 0;
double
aStopLoss = 0,
aTakeProfit = 0,
aOpenPrice = 0,
bStopLoss = 0,
bTakeProfit = 0;
OpenPrice = NormalizeDouble(OpenPrice,Digits);
if(takeprofit!=0)
{
aTakeProfit = NormalizeDouble(OpenPrice+takeprofit*MyPoint,Digits);
bTakeProfit = NormalizeDouble(OpenPrice-takeprofit*MyPoint,Digits);
}
if(stoploss!=0)
{
aStopLoss = NormalizeDouble(OpenPrice-stoploss*MyPoint,Digits);
bStopLoss = NormalizeDouble(OpenPrice+stoploss*MyPoint,Digits);
}
if(type==OP_BUYSTOP)
{
for(c=0;c<10;c++)
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,OpenPrice,6,aStopLoss,aTakeProfit,TicketComment,MagicNumber,0,CLR_NONE);
err=GetLastError();
if(err==0)
{
if(ticket>0) break;
}
else
{
Print("ERROR "+err+": "+error(err));
if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
{
continue;
}
else //normal error
{
if(ticket>0) break;
}
}
if(err==148)return(0);
}
}
if(type==OP_SELLSTOP)
{
for(c=0;c<10;c++)
{
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,OpenPrice,6,bStopLoss,bTakeProfit,TicketComment,MagicNumber,0,CLR_NONE);
err=GetLastError();
if(err==0)
{
if(ticket>0) break;
}
else
{
Print("ERROR "+err+": "+error(err));
if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
{
continue;
}
else //normal error
{
if(ticket>0) break;
}
}
if(err==148)return(0);
}
}
if(type==OP_BUYLIMIT)
{
for(c=0;c<10;c++)
{
ticket=OrderSend(Symbol(),OP_BUYLIMIT,Lots,OpenPrice,6,aStopLoss,aTakeProfit,TicketComment,MagicNumber,0,Green);
err=GetLastError();
if(err==0)
{
if(ticket>0) break;
}
else
{
Print("ERROR "+err+": "+error(err));
if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
{
Sleep(5000);
continue;
}
else //normal error
{
if(ticket>0) break;
}
}
}
}
if(type==OP_SELLLIMIT)
{
for(c=0;c<10;c++)
{
ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lots,OpenPrice,6,bStopLoss,bTakeProfit,TicketComment,MagicNumber,0,Red);
err=GetLastError();
if(err==0)
{
if(ticket>0) break;
}
else
{
Print("ERROR "+err+": "+error(err));
if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
{
Sleep(5000);
continue;
}
else //normal error
{
if(ticket>0) break;
}
}
}
}
return(ticket);
}
string error(int ai_0)
{
switch (ai_0) {
case 0:
return ("No error returned.");
case 1:
return ("No error returned, but the result is unknown. ");
case 2:
return ("Common error. ");
case 3:
return ("Invalid trade parameters. ");
case 4:
return ("Trade server is busy. ");
case 5:
return ("Old version of the client terminal. ");
case 6:
return ("No connection with trade server. ");
case 7:
return ("Not enough rights. ");
case 8:
return ("Too frequent requests.");
case 9:
return ("Malfunctional trade operation. ");
case 64:
return ("Account disabled. ");
case 65:
return ("Invalid account. ");
Показано первые 50% кода (символов: 9661)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.