Market Long by Steve
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «$smgo_long.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Market Long by Steve — это торговый советник для MetaTrader 4, предназначенный исключительно для открытия длинных (BUY) позиций. Советник размещает рыночные ордера на покупку с возможностью автоматической установки стоп-лосса и тейк-профита как по цене, так и по пипсам.
Основная особенность — автоматический расчёт объёма лота на основе процента риска от баланса счёта и расстояния до стоп-лосса. Если параметр Lots установлен в 0, советник вычисляет размер позиции самостоятельно, учитывая минимальные и максимальные лимиты лота.
Советник поддерживает режим использования существующих стоп-лоссов и тейк-профитов первого ордера по заданному магическому номеру. После каждого ордера делается скриншот графика, при успешном исполнении воспроизводится звук, а при ошибках выводятся предупреждения.
Встроенные текстовые параметры (ins0–ins3) служат описаниями групп настроек и не влияют на торговую логику. Продукт не содержит библиотечных API-функций.
Настройки программы
| Настройка | Описание |
|---|---|
| ins0 | Текстовая метка группы настроек «Number orders to place». Служит описанием параметра количества ордеров и не влияет на торговую логику. |
| Number_of_order | Количество рыночных ордеров на покупку, которые будут размещены за один запуск советника. |
| UseExistingStops | Переключатель режима использования стоп-лосса и тейк-профита первого существующего ордера с заданным магическим номером. При значении true и наличии позиций новые ордера получают стопы первой позиции. |
| Lots | Ручной размер лота для открытия позиции. Если установлен в 0, объём рассчитывается автоматически на основе процентя риска и расстояния до стоп-лосса с учётом минимального и максимального размера лота на рынке. |
| ins1 | Текстовая метка группы настроек «Risk Percent. 0=Disabled». Служит описанием параметра процента риска и не влияет на торговую логику. |
| Risk | Процент от баланса счёта, который рискуется при расчёте размера лота. Если установлен в 0, автоматический расчёт объёма отключается. |
| ins2 | Текстовая метка группы настроек «Stop loss and take profit as price». Служит описанием параметров стоп-лосса и тейк-профита по цене и не влияет на торговую логику. |
| SlAsPrice | Стоп-лосс, заданный как абсолютное значение цены. Если ненулевое, используется как уровень стоп-лосса для ордера. |
| TpAsPrice | Тейк-профит, заданный как абсолютное значение цены. Если ненулевое, используется как уровень тейк-профита для ордера. |
| ins3 | Текстовая метка группы настроек «Stop loss and take profit as pips». Служит описанием параметров стоп-лосса и тейк-профита в пипсах и не влияет на торговую логику. |
| SlAsPips | Стоп-лосс, заданный в пипсах относительно цены Ask. Используется при ненулевом значении для расчёта уровня стоп-лосса открытого ордера. |
| TpAsPips | Тейк-профит, заданный в пипсах относительно цены Ask. Если значение ненулевое, используется как уровень тейк-профита открытого ордера. |
| Slippage | Допустимое проскальзывание цены при размещении ордера. Для 5-значных и 3-значных котировок, а также для XAUUSD значение умножается на 10. |
| MagicNumber | Магический номер, идентифицирующий ордера, размещённые данным советником. Используется для фильтрации позиций при подсчёте ордеров и привязке стоп-лоссов и тейк-профитов существующих позиций. |
| TradeComment | Текстовый комментарий, присваиваемый каждому размещённому ордеру для идентификации в истории торгов. |
Поиск по коду файла
#property show_inputs
#include <stdlib.mqh>
extern string ins0="Number orders to place";
extern int Number_of_order = 1;
extern bool UseExistingStops = true;
extern double Lots=0;
extern string ins1="Risk Percent. 0=Disabled";
extern double Risk=0.5;
extern string ins2="Stop loss and take profit as price";
extern double SlAsPrice;
extern double TpAsPrice;
extern string ins3="Stop loss and take profit as pips";
extern double SlAsPips=25;
extern double TpAsPips=50;
extern double Slippage = 1;
extern int MagicNumber=8088;
extern string TradeComment = "";
int Width = 1376;
int Height = 768;
double takeprofit,StopLoss,StopLossPips, Slip;
int Divisor=1, ticket=0, buyOrders, totalOrders;
double MinLotSize,MaxLotSize,point,AmountAtRisk,PointCostValue,LotSize;
double FirstOrderTicket,FirstOrderTakeProfit, FirstOrderStopLoss,FirstOrderOpenPrice;
string Currency="";
string SymbolExtra="";
string Lot="";
int start()
{
// код доступен только после оплаты
}
int err ;
int i = 0;
Slip = Slippage;
double FiveDigitM;
if(StringFind(Symbol(), "JPY",0) > 0)
FiveDigitM = 100 ;
else
FiveDigitM = 10000 ;
point=Point;
if(Digits == 5 || Digits == 3 || Symbol() == "XAUUSD")
{
point = Point * 10 ;
Slip = Slippage * 10;
Divisor = 10;
}
buyOrders = CountOrders(Symbol(), MagicNumber, OP_BUY);
if(TpAsPips==0 && TpAsPrice==0) takeprofit=0;
if (!TpAsPips==0) takeprofit= Ask + TpAsPips/FiveDigitM ;
if (!TpAsPrice==0) takeprofit=TpAsPrice;
if (SlAsPips==0 && SlAsPrice) StopLoss=0;
if (!SlAsPips==0) StopLoss = Ask - SlAsPips/FiveDigitM;
if (!SlAsPrice==0) StopLoss=SlAsPrice;
StopLossPips = (Ask - StopLoss) / point;
if(UseExistingStops && buyOrders>0)
{
FirstOrderTicket=GetFirstTicketBymagic(MagicNumber);
StopLossPips = (Ask - FirstOrderStopLoss) / point;
}
PointCost();
if(Lots==0) Calc();
if(!UseExistingStops || buyOrders==0)
{
ticket=0;
for(i = 0; i < Number_of_order; i++)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,TradeComment,MagicNumber,0,Green);
err = GetLastError() ;
if ( err != 0)
Alert("Failed to create Order. Error = ",ErrorDescription(err)) ;
else
{
OrderModify(ticket ,OrderOpenPrice(), StopLoss,takeprofit,0,CLR_NONE);
err = GetLastError() ;
if ( err != 0)
Alert("Failed to Modify Order. Error = ",ErrorDescription(err), " Order Id:, ", ticket, " Limit = ", takeprofit, " Stop loss = ", StopLoss ) ;
else
PlaySound("ok.wav") ;
}
WindowScreenShot("ScreenShots\\"+Symbol()+"_M"+Period()+"\\"+Symbol()+"_M"+ Period()+"_"+TimeToStr(iTime(NULL, 0, 0),TIME_DATE)+"_"+TimeHour(TimeCurrent())+"_"+TimeПоказано первые 50% кода (символов: 4449)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.